Está en la página 1de 16

Conectarse a MySQL desde PHP

Si tienen instalado MySQL en su maquina y desean aprender lo bsico de MySQL, deberian


primero dirigirse a la seccion de MySQL del sitio. Alli estn explicados los comandos basicos de
MySQL desde la linea de comando. Como crear bases de datos, tablas, agregar, modificar y
borrar datos, crear usuarios con diferentes permisos, y mas comandos que deberamos saber
antes de mezclar el PHP con MySQL.
Si desean continuar con MySQL y PHP... sigamos adelante.
Para conectarnos desde PHP a una base de datos en MySQL y mostrar datos contenidos en
ella, debemos hacer tres pasos escenciales.
Conectarse con el servidor de datos MySQL
Conectarse con la base de datos deseada
Hacer la consulta SQL a una tabla especfica
Veamos entonces los 3 pasos por separado.

1) Conectarnos con la Base de Datos MySQL:


Para conectarnos a MySQL tenemos que tener saber host, un nombre de usuario y su
contrasea...
La linea de debe ser de este estilo:
<? mysql_connection("host","usuario","contrasea"); ?>
<?php
$myconn = @mysql_connection("localhost","juan","diablo");
?>
Notar que agregue un caracter '@' antes de la linea de conexion. Esto es para que PHP ejecute
la linea en forma silenciosa (si hay errores, no los mostrar). Pero si existirn claro. A
continuacion evaluaremos si la conexion recien hecha, fue correcta. De modo contrario
mostraremos un mensaje personalizado informando del error...
Vemos como hacemos esto:
<?php
//Si $myconn tira un error, lo detectamos asi.
//Mostramos un mensaje, y detenemos la carga de la pgina con exit()
if (! $myconn){
echo "Error al intentar conectarse con el servidor MySQL";
exit();
} ?>
En el caso de que $myconn haya fallado, no devuelve nada.
Bsicamente lo que se hizo fue preguntar si $myconn no devolvio nada. En caso de que se
cumpla, mostramos el mensaje personalizado, y detemos la carga de la pgina PHP.
Hasta aqui lo que hicimos es conectar con el servidor MySQL y chequear que esa conexion sea
exitosa.
El paso numero 1 est completo. Veamos de que se trata el paso numero 2 y como se deberia
escribir.

2) Conectarnos a la base de datos deseada:


A continuacin, como dijimos al comienzo, haremos la conexion con una base de datos
especfica. Para que esto pueda salir exitoso, tiene que estar la primera parte terminada.

La linea de seleccion de la base de datos es de este estilo:


<? mysql_select_db("base_de_datos",$variable_de_conexion); ?>

<?php
if (! @mysql_select_db("base1",$myconn)){
echo "No se pudo conectar correctamente con la Base de datos";
exit();
}
?>
Lo que hicimos fue escribir la linea de conexion a la base de datos (tambien con '@') ya dentro
del IF que nos chequea si fue correcto o incorrecto el intento.
Como se puede entender, estamos intentando una Base que se llama 'base1', y usamos la
variable de conexion anterior para indicar con que conexion debe ejecutarse.
Esta ltimo argumente es opcional. PHP tomar por defecto la ltima conexion realizada a
MySQL.
Al igual que antes decimos... si todo hasta aca va bien, podremos para al paso 3, donde
haremos nuestra consulta SQL y mostraremos los datos obtenidos.

3) Pedir datos a una tabla especfica, y mostrarlos:


Les mostrar el cdigo donde se crea la consulta y se ejecuta. Ms abajo veremos como
mostrar esos datos que han juntado... <?php
$sql = "SELECT nombre,apellido FROM usuarios";
$result = mysql_query($sql)
?>
Qu hicimos aqui? Bueno, primero simplemente guardamos la sentencia SQL en la variable
$sql, en la cual le pedimos la tabla usuarios las columnas de nombre y apellido.
En la segunda linea del cdigo, ejecutamos la consulta sql, guardando todos sus resultados en
la variable $result
Podemos volver a chequear que esa consulta est bien realizada con el mismo truco que
antes. <?php
if (! $result){
echo "La consulta SQL contiene errores.";
exit();
}
?>
Importante: Si la consulta es vlida, ese IF no se cumplira, aunque no devuelva resultados. O
sea que solo se est chequeando que la sentencia se vlida o no.
Ahora si finalmente mostraremos los datos pedidos, terminando con esta larga explicacin.
Recordemos que todos los datos los tenemos almacenados en la variable $result.
Haremos un bucle WHILE con el cual mostraremos automticamente todos los datos pedidos.
<?php
//Bucle WHILE para mostrar los resultados...
while ($row = mysql_flech_array($result)){
echo "<P>",$row["nombre"]," - ",$row["apellido"],"</P>";
}
?>

Por ltimo queda explicar este bucle que parece algo ms complicado y de echo lo es.
A la funcin mysql_flech_array le pasamos como argumento la variable $result que contiene
la informacion a mostrar. La funcin la extrae en forma de array la informacion que tiene la
variable $result. Como se ve, se va pasando esa informacion a la variable $row (que tambin
est en forma de array).
Dentro del WHILE usamos echo para mostrar la info contenida en $row. Como est en forma
de array, asi la mostramos. Como $row["campo"].
Espero despues de est detallada explicacin, puedan conectarse con su MySQL y mostrar
toda la informacion que deseen...
A continuacin tienen el cdigo detallado, todo unido...
<?php
$myconn = @mysql_connection("localhost","juan","diablo");
if (! $myconn){
echo "Error al intentar conectarse con el servidor MySQL";
exit();
}
if (! @mysql_select_db("base1",$myconn)){
echo "No se pudo conectar correctamente con la Base de datos";
exit();
}
$sql = "SELECT nombre,apellido FROM usuarios";
$result = mysql_query($sql)
if (! $result){
echo "La consulta SQL contiene errores.";
exit();
}
while ($row = mysql_flech_array($result)){
echo "<P>",$row["nombre"]," - ",$row["apellido"],"</P>";
}
?>
Esta es la manera mas correcta que conosco. Obvio que se pueden eliminar esos chequeos y
hacer el cdigo ms corto, pero menos correcto. :) Suerte.

Conectar PHP y MySQL


Mysql_connect()
Esta funcin es la que nos servir para conectar PHP con una base de datos MySQL.
La sintaxis es la siguiente:
mysql_connect(direccin, nombre_de_usuario, contrasea) ;
En direccion: indicamos la direccin IP o el dominio en la que esta alojada la base de datos MySQL.
En caso de que tengamos la base de datos en nuestro ordenador, o bien que tengamos contratado un

servidor hosting que tenga PHP y MySQL en la misma maquina, pondremos localhost, si el servidor
MySQL es contratado y est en un servidor distinto que el de PHP, normalmente, nuestra compaa
de hosting nos dar los datos que tengamos que poner.
Nombre de usuario: su lo tenemos instalado en nuestro ordenador, el nombre de usuario lo
habremos definido durante la instalacin. Si esta contratado y no hemos definido nosotros el
nombre, sern ellos quienes nos han de felicitar el nombre
Contrasea: lo mismo que el caso del nombre de usuario.
Tambin podemos usar la funcin:
mysql_pconnect(direccin, nombre_de_usuario, contrasea);
La diferencia es que mysql_pconnect() crea una conexin persistente, mientras que
mysql_connect() se cierra cuando el script finaliza su ejecucin o utilizamos la funcin
mysql_close()
Veamos un ejemplo:

$bd=@mysql_connect(localhost, Jaime, NoTeLaDigo);


If ($bd) {
Echo (Error, no se a podido conectar con la base de datos );
Exit();
}
Ya que puede haber gente que se haga un lo al ver esto ya que hemos incluido cosas nuevas, vamos
a explicarlo un poco
En la 1 lnea no hay mas que una variable en la que declaramos la conexin a la bd, pero podemos
ver que hemos incluido una @, lo hemos puesto por que sin el, si la conexin mysql falla, nos dara
un error estndar en ingles, que puede llegar a ser confuso, y con la @ delante de mysql_connect,
nos evita ese error y nos deja poner a continuacin un mensaje personalizado.
Otro carcter que puede ser nuevo para nosotros es !, que significa lo contrario por ejemplo
If (!x)=2{
Echo (x no es igual a 2);
}
En este ejemplo estamos diciendo que si x no es igual a 2, debe aparecer en la pantalla x no es
igual a 2
Por eso tenemos en nuestro script if(!$bd), ya que estaremos diciendo que en caso de que no
funcione la conexin, escriba el mensaje
Finalmente, terminamos el script con exit()

Instrucciones para conectar con una Base de Datos MySQL en PHP


Primero es recomendable separar los datos de conexin con las funciones
de conexin en s, de modo que si estos cambian sea ms fcil y rpido
cambiarlos en todos los scripts en los que haga falta.
As es recomendable:
1 Definir un archivo con tan solo los datos de conexin, por
ejemplo conexin.inc.php

Ejemplo de conexin.inc.php
<? // Fichero con los datos de conexion a la BBDD
function Conectarse()
{
$db_host="localhost"; // Host al que conectar, habitualmente es el
localhost
$db_nombre="bbdd"; // Nombre de la Base de Datos que se desea utilizar
$db_user="user"; // Nombre del usuario con permisos para acceder
$db_pass="password"; // Contrasea de dicho usuario
// Ahora estamos realizando una conexin y la llamamos $link
$link=mysql_connect($db_host, $db_user, $db_pass) or die ("Error
conectando a la base de datos.");
// Seleccionamos la base de datos que nos interesa
mysql_select_d b($db_nombre ,$link) or die("Error seleccionando la base
de datos.");
// Devolvemos $link porque nos har falta ms adelante, cuando
queramos hacer consultas.
return $link;
}
?>
2 Incluir este archivo en cada script que necesite datos de la base
de datos.
Aadir la siguiente lnea en cada archivo que lo requiera:
include('conexion.inc.p hp'); // Suponemos que el archivo con los datos es
conexin.inc.php

3 Realizar las consultas de un modo claro:


Para recuperar los datos de una sencilla consulta de ejemplo:
SELECT nombre, apellido, telefono FROM amigos
<?
include('conexion.inc.p hp'); // Suponemos que el archivo con los datos es
conexin.inc.php
// As llamaremos a la funcin que tena los datos para conectarse
$link = Conectarse();
// En una variable tipo STRING escribimos la consulta.
$sql = " SELECT nombre, apellido, phone FROM friends ";
// Con la funcin mysql_query() realizamos la consulta que
queramos en la base de datos
// seleccionada previamente. Es decir le entramos la consulta que habamos llamado $sql
$result = mysql_query($sql) or die(La siguiente consulta contiene
algn error:
nSQL: $sql);
// Ahora tenemos en $result todos los registros de la consulta,
ahora debemos mostrarlos uno a uno
while ($row = mysql_fetch_ar ray($result))
{ // El while ya deberamos saber que hace, mysql_fetch_array()
avanza uno a uno los registros
// Como hemos metido un registro en $row, tendremos que mostrar lo que
nos interese en pantalla.
echo El Nombre es: .$row[nombre].
n; // Para mostrar el campo nombre

echo El Apellido es: .$row[apellido].


n; // Para mostrar el campo apellido
echo El Telf. es: .$row[telefono].
n; // Para mostrar el campo telefono
}
?>
El resultado a la ejecucin del script sera algo como:
El Nombre es: Scott
El Apellido es: Doanes
El Telf. es: 933334455
El Nombre es: Basilio
El Apellido es: Vera
El Telf. es: 933335566
El Nombre es: Vicente
El Apellido es: Carrasco
El Telf. es: 934447788
(Etc...)
Siempre suponiendo que estos sean los registros que hay en la base de
datos.
Con la instruccin or die() se mostrar en pantalla el mensaje
entrecomillado solo en el caso de que fallara la primera sentencia de la lnea.
NOTAS:
Tambin podramos haber usado la lnea:
echo El Nombre es: {$row[nombre]}

n;
En lugar de:
echo El Nombre es: .$row[nombre].
n;
El resultado habra sido el mismo.
Incluso podramos haber utilizado otras funciones para acceder fila a fila,
por ejemplo:
mysql_fetch_ob ject();
Pero entonces tendramos que haber escrito algo como lo siguiente, para
cada lnea:
echo El Nombre es: .$row->nombre.
n;
Al usar esta funcin, en lugar de poner el nombre del campo as
$nombre_variable[nombre_del_campo]
se pone
$nombre_variable->nombre_del_cam po.
Si queremos mostrar los resultados en forma de tabla, habra que
intercalar el cdigo HTML referente a tablas entre el cdigo que muestra
las variables, por ejemplo algo como:
echo <table>n; // Comenzamos la tabla antes del while
echo
<tr><th>Nombre</th><th>Apellido</th><th>Telfono</th></tr>
; // As escribimos la cabecera de la tabla
while ($row = mysql_fetch_ar ray($result))
{
echo <tr><td>{$row[nombre]}</td>n; // Comenzamos
una fila (<tr>)

echo <td>{$row[apellido]}</td>n;
echo <td>{$row[telefono]}</td></tr>n; // Acabamos una
fila (</tr>)
}
echo </table>; // Fin de la tabla.

Conectar a MySQL desde PHP


Ya tenemos datos en nuestra BD, as que con el siguiente script nos conectaremos a la BD del servidor
MySQL para obtener los datos de un registro.
Conexin al MySQL
<html>
<body>
<?php
$link = mysql_connect("localhost", "nobody");
mysql_select_db("mydb", $link);
$result = mysql_query("SELECT * FROM agenda", $link);
echo "Nombre: ".mysql_result($result, 0, "nombre")."<br>";
echo "Direccin: ".mysql_result($result, 0, "direccion")."<br>";
echo "Telfono :".mysql_result($result, 0, "telefono")."<br>";
echo "E-Mail :".mysql_result($result, 0, "email")."<br>";
?>
</body>
</html>

En la primera lnea del script nos encontramos con la funcin mysql_connect(), que abre una conexin
con el servidor MySQL en el Host especificado (en este caso la misma mquina en la que est alojada el
servidor MySQL,localhost). Tambin debemos especificar un usuario (nobody, root, etc. ), y si fuera
necesario un password para el usuario indicado (mysql_connect("localhost", "root",
"clave_del_root")). El resultado de la conexin es almacenado en la variable $link.
Con mysql_select_db() PHP le dice al servidor que en la conexin $link nos queremos conectar a la
base de datos mydb. Podramos establecer distintas conexiones a la BD en diferentes servidores, pero
nos conformaremos con una.
La siguiente funcin mysql_query(), es la que hace el trabajo duro, usando el identificador de la
conexin ($link), enva una instruccin SQL al servidor MySQL para que ste la procese. El resultado
de sta operacin es almacenado en la variable $result.
Finalmente, mysql_result() es usado para mostrar los valores de los campos devueltos por la consulta
($result). En este ejemplo mostramos los valores del registro 0, que es el primer registro, y mostramos
el valor de los campos especificados.

Mostrar los datos de una consulta

Ahora que ya sabemos conectar con el servidor de BD, veremos como mostrar los datos por pantalla.
Consulta de la BD
<html>
<body>
<?php
$link = mysql_connect("localhost", "nobody");
mysql_select_db("mydb", $link);
$result = mysql_query("SELECT nombre, email FROM agenda", $link);
echo "<table border = '1'> \n";
echo "<tr><td>Nombre</td><td>E-Mail</td></tr> \n";
while ($row = mysql_fetch_row($result)){
echo ""<tr><td>$row[0]</td><td>$row[1]</td></tr> \n";
}
echo "</table> \n";
?>
</body>
</html>

En este script hemos introducido dos novedades, la ms obvia es la sentencia de control while(), que
tiene un funcionamiento similar al de otros lenguajes, ejecuta una cosa mientras la condicin sea
verdadera. En esta ocasin while() evalua la funcin mysql_fetch_row(), que devuelve un array con
el contenido del registro actual (que se almacena en $row) y avanza una posicin en la lista de registros
devueltos en la consulta SQL.
La funcin mysql_fetch_row() tiene un pequeo problema, es que el array que devuelve slo admite
referencias numricas a los campos obtenidos de la consulta. El primer campo referenciado es el 0, el
segundo el 1 y as sucesivamente. En el siguiente script solucionaremos este pequeo inconveniente.
Consulta modificada de BD
<html>
<body>
<?php
$link = mysql_connect("localhost", "nobody");
mysql_select_db("mydb", $link);
$result = mysql_query("SELECT nombre, email FROM agenda", $link);
if ($row = mysql_fetch_array($result)){
echo "<table border = '1'> \n";
echo "<tr><td>Nombre</td><td>E-Mail</td></tr> \n";
do {
echo "<tr><td>".$row["nombre"]."</td><td>".$row["email"]."</td></tr> \n";
} while ($row = mysql_fetch_array($result));
echo "</table> \n";
} else {
echo " No se ha encontrado ningn registro !";
}
?>
</body>
</html>

Esencialmente, este script hace lo mismo que el anterior. Almacenamos en $row el registro actual con la
funcin mysql_fetch_array() que hace exactamente lo mismo que mysql_fetch_row(), con la
exepcin que podemos referenciar a los campos por su nombre ($row["email"]), en vez de por un
nmero.
Con la sentencia if/else, asignamos a $row el primer registro de la consulta, y en caso de no haber
ninguno (else) mostramos un mensaje ("No se ha encontrado..."). Mientras que con la sentencia
do/while, nos aseguramos que se nos muestren todos los registros devueltos por la consulta en caso de
haber ms de uno.
Hay que destacar la utilizacin del punto (.), como operador para concatenar cadenas.

Un buscador para nuestra base de datos


Vamos a ver una aplicacin, un ejemplo, de todo lo visto hasta ahora. Escribiremos un script que sirva
para buscar una determinada cadena (que recibiremos de un formulario, y la almacenamos en la variable
$buscar), dentro de nuestra base de datos, concretamente dentro del campo "nombre".
En primer lugar escribiremos el texto HTML de la pgina web que nos servir como formulario de entrada,
la llamaremos formulario.htm.
Formulario entrada
<html>
<body>
<form method="POST" action="http://mysevidor/php/buscador.php3">
<strong>Palabra clave:</strong> <input type="text" name="T1" size="20"><br><br>
<input type="submit" value="Buscar" name="buscar">
</form>
</body>
</html>

El siguiente script de busqueda lo llamaremos buscador.php3, y ser el encargado de hacer la


bsqueda en la BD, y devolver por pantalla los registros encontrados.
Script bsqueda
<html>
<body>
<?php
if (!isset($buscar)){
echo "Debe especificar una cadena a bucar";
echo "</html></body> \n";
exit;
}
$link = mysql_connect("localhost", "nobody");
mysql_select_db("mydb", $link);
$result = mysql_query("SELECT * FROM agenda WHERE nombre LIKE '%$buscar%' ORDER BY
nombre", $link);
if ($row = mysql_fetch_array($result)){
echo "<table border = '1'> \n";
//Mostramos los nombres de las tablas
echo "<tr> \n";
while ($field = mysql_fetch_field($result)){
echo "<td>$field->name</td> \n";
}
echo "</tr> \n";
do {
echo "<tr> \n";
echo "<td>".$row["id"]."</td> \n";
echo "<td>".$row["nombre"]."</td> \n";
echo "<td>".$row["direccion"]."</td> \n";
echo "<td>".$row["telefono"]."</td> \n";
echo "<td><a href='mailto:".$row["email"]."'>".$row["email"]."</a></td>
\n";
echo "</tr> \n";
} while ($row = mysql_fetch_array($result));
echo "</table> \n";
} else {
echo " No se ha encontrado ningn registro !";
}
?>
</body>
</html>

Lo primero que comprobamos es que el contenido de la variable $buscar que recibimos del la pgina
web formulario.htm no es una cadena vacia, y esto lo hacemos con la funcin isset() que devuelve
'falso' si la variable que recibe est vacia. A la funcin le anteponemos el signo admiracin (!) que es

equivalente a un NOT, para convertirlo en 'verdadero' en caso de que la variable est vacia, y en es caso
terminamos la ejecucin del script con exit.
Lo ms importante de este script, es sin duda la sentencia SQL que le enviamos al servidor MySQL, y
ms concretamente la condicin que le imponemos, WHERE nombre LIKE '%$buscar%'. Con la
sentencia LIKE buscamos cualquier ocurrencia de la cadena contenida en $buscar, mientras que con los
signos de porcentaje (%) indicamos el lugar de la coincidencia, por ejemplo, si hubiesemos puesto nombre
LIKE '%$buscar', buscariamos cualquier ocurrencia al final del campo"nombre", mientras que si
hubiesemos puesto nombre LIKE '$buscar%', buscariamos cualquier ocurrencia al principio del campo
"nombre".
La ltima novedad que hemos incorporado, es la funcin mysql_fetch_field, con el que obtenemos
informacin acerca de las caracterticas de cada campo, como su nombre,tipo,longitud,nombre de la tabla
que los contiene,etc.

Aadir registros a nuestra base de datos


En esta leccin vamos ver como podemos aadir nuevos registros a nuesta BD. La recogida de datos la
vamos a hacer a traves de un interfaz de web. En primer lugar vamos a crear una pgina web con un
simple formulario, con los campos que deseamos.
Formulario inicial aadir BD
<html>
<body>
<form method="post" action="add_reg.php3">
Nombre
:<input type="Text" name="nombre"><br>
Direccin:<input type="Text" name="direccion"><br>
Telfono :<input type="Text" name="telefono"><br>
E-mail
:<input type="Text" name="email"><br>
<input type="Submit" name="enviar" value="Aceptar informacin">
</form>
</body>
</html>

Hemos creado un formulario donde recoger los datos, y una vez introducidos ejecutamos un script
llamado add_reg.php3, pues veamos como es este script.
aadir registros
<html>
<body>
<?php
// process form
$link = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$sql = "INSERT INTO agenda (nombre, direccion, telefono, email) ".
"VALUES ('$nombre', '$direccion', '$telefono', '$email')";
$result = mysql_query($sql);
echo "Gracias! Hemos recibido sus datos.\n";
</body>
</html>

Como se puede ver, para introducir un nuevo registro, utilizamos la ya conocida funcin mysql_query(),
la cal tambin usamos para las consultas, y usaremos para las actualizaciones, es decir una seora
funcin. Aaah!, una cosa muy importante, para poder aadir o modificar registros debemos tener
permiso para ello en el servidor MySQL, por eso en este caso me conecto como root, pero podra ser
cualquier otro usuario.

Para terminar esta leccin, una pequea frivolidad, vamos a combinar la pgina web de formulario y el
fichero de script php3, en un solo fichero que llamaremos add_reg.php3 (este script no lo comentar, !
algo tendran que hacer ustedes).
Combinacion de formulario y script
<html>
<body>
<?php
if ($enviar) {
// process form
$link = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$sql = "INSERT INTO agenda (nombre, direccion, telefono, email) ".
"VALUES ('$nombre', '$direccion', '$telefono', '$email')";
$result = mysql_query($sql);
echo "Gracias! Hemos recibido sus datos.\n";
}else{
?>
<form method="post" action="add_reg.php3">
Nombre
:<input type="Text" name="nombre"><br>
Direccin:<input type="Text" name="direccion"><br>
Telfono :<input type="Text" name="telefono"><br>
E-mail
:<input type="Text" name="email"><br>
<input type="Submit" name="enviar" value="Aceptar informacin">
</form>
<?php
} //end if
?>
</body>
</html>

Modificar registros de nuestra base de datos


Lo primero, es lo primero, para modificar hay que tener permiso para ello en el servidor de BD, el resto
nos viene de corrido. Primero seleccionamos el registro que deseamos modificar, y luego, mandamos una
consulta con la modificaciones, o ambas cosas a la vez. Suponemos que las modificaciones las
recogemos de un formulario como el de la leccin anterior .
Modificar registros opcion A
<html>
<body>
<?php
if (isset($id)){
// process form
$link = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$sql = "SELECT * FROM agenda WHERE id = $id"
$result = mysql_query($sql);
$sql = "UPDATE agenda SET nombre='$nombre', direccion='$direccion',".
"telefono='$telefono', email='$email'";
$result = mysql_query($sql);
}else{
echo "Debe especificar un 'id'.\n";
}
</body>
</html>

O bien,
Modificar registros opcion B
<html>
<body>
<?php
if (isset($id)){
// process form
$link = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$sql = "UPDATE agenda SET nombre='$nombre', direccion='$direccion',".
"telefono='$telefono', email='$email' WHERE id=$id";
$result = mysql_query($sql);
}else{
echo "Debe especificar un 'id'.\n";
}
</body>
</html>

Borrar registros de nuestra base de datos


El proceso de borrar un registro es identico al de modificar, solo que en vez de utilizar UPDATE utilizamos
DELETE en la sentenica SQL. Por tanto el script quedara como sigue.
Borrado registros de BD
<html>
<body>
<?php
if (isset($id)){
// process form
$link = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$sql = "DELETE agenda WHERE id=$id")
$result = mysql_query($sql);
}else{
echo "Debe especificar un 'id'.\n";
}
</body>
</html>

Resumen de todo lo visto


Como resumen de todo lo visto hasta ahora, vamos a hacer un script donde se mezcla todo, y algo
nuevo. Como ejercicio, os dejo la incorporacin del buscador de la leccin 5.

<html>
<body>
<?php
$link = mysql_connect("localhost", "root");
mysql_select_db("mydb",$link);
//Comprobamos si hemos recibido datos del formulario (enviar)
if ($enviar) {
// Si recibimos un id, modificamos, sino aadimos un registro
if ($id) {
$sql = "UPDATE agenda SET nombre='$nombre', direccion='$direccion',".

telefono='$telefono', email='$email' WHERE id=$id";


echo "Registro Actualizado<p>";
} else {
$sql = "INSERT INTO agenda (nombre, direccion, telefono, email) VALUES ".
"('$nombre', '$direccion', '$telefono', '$email')";
echo "Registro Aadido<p>";
}
// Enviamos la sentencia SQL al servidor DB
$result = mysql_query($sql);
} elseif ($delete) {
// Borramos un registro
$sql = "DELETE FROM agenda WHERE id=$id";
$result = mysql_query($sql);
echo "Registro Borrado<p>";
} else {
// Esta parte se ejecuta si no hemos presionado el boton enviar,
// es decir no venimos de un formulario
if (!$id) {
// Mostramos todos los registros de nuestra BD
$result = mysql_query("SELECT * FROM agenda",$link);
while ($myrow = mysql_fetch_array($result)) {
echo $myrow["nombre"]." - ".$myrow["direccion"]." - ".
$myrow["Telefono"]." - ".$myrow["email"];
echo "<a href=\$PHP_SELF?id=".$myrow["id"]."&delete=yes">
Borrar </a>";
echo "<a href=\$PHP_SELF?id=".$myrow["id"]."> Modificar </a><br>";
}
}
}
?>
<P>
<a href="<?php echo $PHP_SELF?>">Aadir un registro</a>
<P>
<form method="post" action="<?php echo $PHP_SELF?>">
<?php
if ($id) {
// editamos el registro seleccionado
$sql = "SELECT * FROM agenda WHERE id=$id";
$result = mysql_query($sql);
$myrow = mysql_fetch_array($result);
$id = $myrow["id"];
$nombre = $myrow["nombre"];
$direccion = $myrow["direccion"];
$telefono = $myrow["telefono"];
$email = $myrow["email"];
// enviamos el id para poder editar el registro
echo "<input type=hidden name="id" value=$id>";
}
?>
Nombre:<input type="Text" name="nombre" value="<?php echo $nombre ?>"><br>
Direccin:<input type="Text" name="direccion" value="<?php echo $direccion ?>"><br>
Telefono:<input type="Text" name="telefono" value="<?php echo $telefono ?>"><br>
Email:<input type="Text" name="email" value="<?php echo $email ?>"><br>
<input type="Submit" name="enivar" value="Enviar Informacin">
</form>
<?php
} // End If if ($enviar)
?>
</body>
</html>

Cabe destacar el uso de $PHP_SELF, esta es una funcion interna de PHP que nos devuelve la direccin
del script en el que se ejecuta.

Como ahorramos lneas de cdigo


En las lecciones anteriores hemos aprendido el uso bsico de las funciones de PHP para trabajar con
MySQL. En esta leccin y sucesivas vamos a ver nuevas funciones que nos facilitan y potencian nuestras
pginas web.
Por lo general, todos nuestros script tienen partes de cdigo iguales, las funciones include( ) y
require( ) nos van ahorrar muchas de estas lneas de cdigo. Ambas funciones hacen una llamada a
un determinado fichero pero de dos maneras diferentes, con include( ), insertamos lo que contenga el
fichero que llamemos de manera literal en nuestro script, mientras que con require( ), que decimos
que el script necesitar parte de cdigo que se encuentra en el fichero que llama require( ).
Como todo esto es un poco lioso, veamos unos ejemplos que nos lo aclara.
<?php
include ("header.inc");
echo "Hola Mundo";
include ("footer.inc");
?>

Si tenemos en cuenta que el fichero header.inc contiene:


<html>
<body>

y el fichero footer.inc contiene:


</body>
</html>

Nuestro script sera equivalente a:


<html>
<body>
<?php
echo "Hola Mundo";
?>
</body>
</html>

Ahora veamos el script de ejemplo para la funcin require( ):


<?php
require ("config.inc");
include ("header.inc");
echo $cadena;
include ("footer.inc");
?>

Donde el fichero config.inc tendra algo como sto:


<?php $cadena = "Hola Mundo";
?>

Intereses relacionados