tutorial de php y mysql conexion
tutorial de php y mysql conexion
En esta página:
Mi primer script
Mi primer script
Una vez que ya tenemos instalados PHP y MySQL, y el servidor Apache configurado para
usarlos, podemos comenzar a escribir nuestro primer Script en PHP.
<html>
<body>
<?php
$myvar = "Hola Mundo. Este es mi primer script en PHP";
//Esto es un comentario
echo $myvar;
?>
</body>
</html>
Una vez escrito esto lo salvamos en un fichero con la extension php3, y lo colocamos en nuestro
servidor, http://mi_servidor/php/test.php3. Ahora si ponemos esta URL en nuestro
navegador veremos una linea con el texto "Hola Mundo. Este es mi primer script en PHP".
Lo primero que apreciamos en el script son sus delimitadores. En la primera línea del script
vemos <?php que nos indica que comienza un script en PHP, y en la última colocamos ?> para
indicar el final del script. Hay que destacar que todas las líneas que se encuentre entre estos
delimitadores deben acabar en punto y coma, excepto las sentencias de control (if, swich,
while, etc.).
Como en toda programación, es importante poner muchos comentarios, para lo cual si queremos
comentar una sola línea tenemos que poner al principio de la línea //, si lo que queremos es
comentar varias utilizaremos los delimitadores /* - */.
Para que el servidor envie texto utilizaremos la instrucción echo, aunque también podemos
utilizar printf de uso similar al del C oPerl.
Finalmente, vemos que la palabra myvar comienza con el signo dólar ($) . Este símbolo le indica
a PHP que es una variable. Nosotros le hemos asignado un texto a esta variable, pero también
pueden contener números o arrays. Es importante recordar que todas las variables comienza con
el signo dólar.
1
En esta página:
Antes de seguir con PHP, vamos a preparar la base de datos(BD) que vamos a utilizar como
ejemplo. Como servidor de BD, usaremos MySQL un pequeño y compacto servidor de BD, ideal
para pequeñas y medianas aplicaciones. MySQL soporta el estándar SQL (ANSI), y además
está disponible para distintas plataformas, incluido las "windows".
Una vez instalado MySQL (dejemos esta explicación para más tarde), vamos a crear nuestra BD
ejemplo. MySQL utiliza una tabla de permisos de usuarios, por defecto, en la instalación crea el
usuario root sin password. Debes crear distintos usuarios con distintos permisos. Entre ellos, el
usuario administrador de MySQL, con todos los permisos, y como recomendación de seguridad,
el usuario nobody sólo con el permiso de ver (SELECT), que es el que utilizaremos para
conectarnos al servidor de BD en nuestros script.
Para crear nuestra BD, debemos ser el administrador de MySQL o el root,para ello haremos lo
siguiente:
Ya hemos creado una BD, ahora le añadiremos una tabla y algunos registros, para lo cual copia
el siguiente texto y sálvalo en un archivo, que podríamos llamar mybd.dump.
INSERT INTO agenda VALUES (0, 'Juan Pérez', 'C/ Laguna, 15. Sevilla',
'95.455.55.55', '[email protected]' )\g
INSERT INTO agenda VALUES (1, 'Luis García', 'C/ Betis, 22. Cádiz',
'95.655.66.33', '[email protected]' )\g
INSERT INTO agenda VALUES (2, 'Carlos Rodríguez', 'C/ Sevilla, 6. Huelva',
'95.113.22.77', '[email protected]' )\g
Debemos tener en cuenta que los comandos de arriba debe escribirse cada uno en una sola
línea. Se han separado para aumentar la legibilidad del código.
Cabe destacar el campo id, que no puede estar vacio, y además es autoincrementable, lo cuál
deberemos tener en cuenta a la hora de actualizar y añadir registros. Si no hemos cometido
ningún error, ya tenemos nuestra base de datos de ejemplo en el servidor MySQL.
2
En esta página:
Un caso muy común, como en mi caso, al comenzar a utilizar MySQL, necesitaba migrar mis
bases de datos desde Access a MySQL. La solución a este problema, nos la aporta
un módulo creado por Pedro Freire de CYNERGI.
Los pasos que debemos seguir para instalar este módulo, y su posterior uso son:
La ejecución del módulo nos creará dos archivos (esql_add.txt y esql_del.txt) en el directorio
C:/temp (el que trae por defecto, pero lo podemos cambiar). A nosotros el archivo que nos
interesa es esql_add.txt, el cuál como mejor nos parezca deberemos llevarnoslo a nuestra
máquina Linux.
Ahora solo tenemos que seguir los paso que explicamos en el capítulo anterior:
En esta página:
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.
Conexión al MySQL
3
<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 "Dirección: ".mysql_result($result, 0, "direccion")."<br>";
echo "Teléfono :".mysql_result($result, 0, "telefono")."<br>";
echo "E-Mail :".mysql_result($result, 0, "email")."<br>";
?>
</body>
</html>
En la primera línea del script nos encontramos con la función mysql_connect(), que abre una
conexión con el servidor MySQL en el Host especificado (en este caso la misma máquina en la
que está alojada el servidor MySQL,localhost). También 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 conexión es
almacenado en la variable $link.
Con mysql_select_db() PHP le dice al servidor que en la conexión $link nos queremos
conectar a la base de datos mydb. Podríamos establecer distintas conexiones a la BD en
diferentes servidores, pero nos conformaremos con una.
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.
En esta página:
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");
4
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>
La función mysql_fetch_row() tiene un pequeño problema, es que el array que devuelve sólo
admite referencias numéricas 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 pequeño 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 ningún registro !";
}
?>
</body>
</html>
Esencialmente, este script hace lo mismo que el anterior. Almacenamos en $row el registro
actual con la función mysql_fetch_array() que hace exactamente lo mismo
que mysql_fetch_row(), con la exepción que podemos referenciar a los campos por su nombre
($row["email"]), en vez de por un número.
Hay que destacar la utilización del punto (.), como operador para concatenar cadenas.
5
En esta página:
Vamos a ver una aplicación, 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 página 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>
Script búsqueda
<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 {
6
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 ningún registro !";
}
?>
</body>
</html>
Lo primero que comprobamos es que el contenido de la variable $buscar que recibimos del la
página web formulario.htm no es una cadena vacia, y esto lo hacemos con la
función isset() que devuelve 'falso' si la variable que recibe está vacia. A la función le
anteponemos el signo admiración (!) que es equivalente a un NOT, para convertirlo
en 'verdadero' en caso de que la variable esté vacia, y en es caso terminamos la ejecución
del script con exit.
Lo más importante de este script, es sin duda la sentencia SQL que le enviamos al
servidor MySQL, y más concretamente la condición 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".
En esta página:
En esta lección vamos ver como podemos añadir 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
página web con un simple formulario, con los campos que deseamos.
<html>
<body>
7
<form method="post" action="add_reg.php3">
Nombre :<input type="Text" name="nombre"><br>
Dirección:<input type="Text" name="direccion"><br>
Teléfono :<input type="Text" name="telefono"><br>
E-mail :<input type="Text" name="email"><br>
<input type="Submit" name="enviar" value="Aceptar información">
</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.
añadir 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>
Para terminar esta lección, una pequeña frivolidad, vamos a combinar la página 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¡).
<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{
?>
8
Dirección:<input type="Text" name="direccion"><br>
Teléfono :<input type="Text" name="telefono"><br>
E-mail :<input type="Text" name="email"><br>
<input type="Submit" name="enviar" value="Aceptar información">
</form>
<?php
} //end if
?>
</body>
</html>
n esta página:
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 lección anterior .
<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,
<html>
<body>
9
<?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>
En esta página:
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>
En esta página:
10
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 incorporación del buscador de la lección 5.
<html>
<body>
<?php
<P>
<a href="<?php echo $PHP_SELF?>">Añadir un registro</a>
<P>
<form method="post" action="<?php echo $PHP_SELF?>">
11
<?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>";
}
?>
<?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
dirección del script en el que se ejecuta.
En esta página:
En las lecciones anteriores hemos aprendido el uso básico de las funciones de PHP para trabajar
con MySQL. En esta lección y sucesivas vamos a ver nuevas funciones que nos facilitan y
potencian nuestras páginas web.
Por lo general, todos nuestros script tienen partes de código iguales, las
funciones include( ) y require( ) nos van ahorrar muchas de estas líneas de código. 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
12
nuestro script, mientras que con require( ), que decimos que el script necesitará parte de
código que se encuentra en el fichero que llamarequire( ).
Como todo esto es un poco lioso, veamos unos ejemplos que nos lo aclara.
<?php
include ("header.inc");
echo "Hola Mundo";
include ("footer.inc");
?>
<html>
<body>
</body>
</html>
<html>
<body>
<?php
echo "Hola Mundo";
?>
</body>
</html>
<?php
require ("config.inc");
include ("header.inc");
echo $cadena;
include ("footer.inc");
?>
13