You are on page 1of 7

TUTORIALES - PHP & MySQL

       
Mi primer escript Comenzando con mysql Conectar a mysql desde php Mostrar los datos de una consulta Añadir registro a nuestra base de datos Modificar registro de nuestra base de datos Borrar registro de nuestra base de datos Como ahorramos lineas de codigo

Mi primer script Una vez que ya tenemos instalados PHP y MySQL, y el servidor Apache configurado para usarlos, podemos comenzar a escribir nuestro primerScript en PHP.

Ejemplo script 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 php, y lo colocamos en nuestro servidor,http://mi_servidor/miprimerescript.php. 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. SUBIR Comenzando con MySQL 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, 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:

mysqladmin create mybd
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.

Crear tabla mybd
CREATE TABLE agenda (id INT NOT NULL AUTO_INCREMENT, nombre CHAR(50), direccion CHAR(50), telefono CHAR(15), email CHAR(30), KEY (id) )\g

mysql_result($result.113.com ' )\g Debemos tener en cuenta que los comandos de arriba debe escribirse cada uno en una sola línea. '95. y si fuera necesario un password para el usuario indicado (mysql_connect("localhost". SUBIR Mostrar los datos de una consulta Ahora que ya sabemos conectar con el servidor de BD. 'C/ Sevilla.33'. 0. ' carlos@agenda. Con mysql_select_db() PHP le dice al servidor que en la conexión $link nos queremos conectar a la base de datos mydb. pero nos conformaremos con una. Cádiz'. $link). echo "Dirección: ". Finalmente. Sevilla'. El resultado de ésta operación es almacenado en la variable $result. 22.INSERT INTO agenda VALUES (0.77'. así que con el siguiente script nos conectaremos a la BD del servidor MySQL para obtener los datos de un registro. 'C/ Laguna. 6. "nobody").455. 'Luis García'. ?> </body> </html> En la primera línea del script nos encontramos con la función mysql_connect(). ' luis@agenda. echo "E-Mail :".mysql_result($result.com ' )\g INSERT INTO agenda VALUES (2.66. echo "Teléfono :". Consulta de la BD . envía una instrucción SQL al servidor MySQL para que éste la procese.55'. y mostramos el valor de los campos especificados. lo cuál deberemos tener en cuenta a la hora de actualizar y añadir registros."<br>".com ' )\g INSERT INTO agenda VALUES (1. También debemos especificar un usuario (nobody. ). 'C/ Betis. "nombre"). que abre una conexión con el servidor MySQL en el Hostespecificado (en este caso la misma máquina en la que está alojada el servidor MySQL. y además es autoincrementable. ya tenemos nuestra base de datos de ejemplo en el servidor MySQL. 'Juan Pérez'. "telefono").22. "clave_del_root")). es la que hace el trabajo duro. SUBIR Conectar a MySQL desde PHP Ya tenemos datos en nuestra BD. ' juan@agenda. "email"). 15. 0. Si no hemos cometido ningún error. 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. 0. "root". Huelva'. $result = mysql_query("SELECT * FROM agenda".dump | mysql mybd Cabe destacar el campo id. "direccion"). '95.655. Se han separado para aumentar la legibilidad del código. $link)."<br>". Conexión al MySQL <html> <body> <?php $link = mysql_connect("localhost". echo "Nombre: ". mysql_select_db("mydb". 'Carlos Rodríguez'. que es el primer registro.mysql_result($result. veremos como mostrar los datos por pantalla.localhost).55. que no puede estar vacio. Podríamos establecer distintas conexiones a la BD en diferentes servidores.mysql_result($result. root. '95. Ahora desde la línea de comandos ejecuta: cat mybd."<br>". El resultado de la conexión es almacenado en la variable $link. 0."<br>". usando el identificador de la conexión ($link). etc. La siguiente función mysql_query().

ejecuta una cosa mientras la condición sea verdadera. "nobody"). y en caso de no haber ninguno (else) mostramos un mensaje ("No se ha encontrado. nos aseguramos que se nos muestren todos los registros devueltos por la consulta en caso de haber más de uno. Almacenamos en $row el registro actual con la función mysql_fetch_array() que hace exactamente lo mismo que mysql_fetch_row(). mysql_select_db("mydb". email FROM agenda". $link). } while ($row = mysql_fetch_array($result)). este script hace lo mismo que el anterior.$row["email"]. mysql_select_db("mydb". email FROM agenda". El primer campo referenciado es el 0. $result = mysql_query("SELECT nombre. do { echo "<tr><td>". el segundo el 1 y así sucesivamente. echo "<tr><td>Nombre</td><td>E-Mail</td></tr> \n". ?> </body> </html> En este script hemos introducido dos novedades."</td></tr> \n".. con la exepción que podemos referenciar a los campos por su nombre ($row["email"]). } echo "</table> \n". echo "</table> \n". la más obvia es la sentencia de control while(). que tiene un funcionamiento similar al de otros lenguajes. } ?> </body> </html> Esencialmente. . es que el array que devuelve sólo admite referencias numéricas a los campos obtenidos de la consulta. en vez de por un número. En esta ocasión while() evalua la función mysql_fetch_row(). En el siguiente script solucionaremos este pequeño inconveniente. $result = mysql_query("SELECT nombre. que devuelve un array con el contenido del registro actual (que se almacena en $row) y avanza una posición en la lista de registros devueltos en la consultaSQL.<html> <body> <?php $link = mysql_connect("localhost". } else { echo "¡ No se ha encontrado ningún registro !"."). if ($row = mysql_fetch_array($result)){ echo "<table border = '1'> \n".$row["nombre"]. Mientras que con la sentencia do/while. while ($row = mysql_fetch_row($result)){ echo ""<tr><td>$row[0]</td><td>$row[1]</td></tr> \n". La función mysql_fetch_row() tiene un pequeño problema. $link).. $link)."</td><td>". Consulta modificada de BD <html> <body> <?php $link = mysql_connect("localhost". echo "<tr><td>Nombre</td><td>E-Mail</td></tr> \n". asignamos a $row el primer registro de la consulta. echo "<table border = '1'> \n". $link). "nobody"). Con la sentencia if/else.

. telefono. "root"). email) ". En primer lugar vamos a crear una página web con un simple formulario. direccion.php. La recogida de datos la vamos a hacer a traves de un interfaz de web. una cosa muy importante. </body> </html> Como se puede ver. '$email')". con los campos que deseamos. es decir una señora función. y una vez introducidos ejecutamos un script llamado add_reg. '$telefono'. pero podría ser cualquier otro usuario. para poder añadir o modificar registros debemos tener permiso para ello en el servidor MySQL. Combinacion de formulario y script <html> <body> <?php if ($enviar) { // process form $link = mysql_connect("localhost". direccion. Añadir registros <html> <body> <?php // process form $link = mysql_connect("localhost". mysql_select_db("mydb". vamos a combinar la página web de formulario y el fichero de script php3. mysql_select_db("mydb". email) ".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. utilizamos la ya conocida función mysql_query(). y usaremos para las actualizaciones. telefono.php3 (este script no lo comentaré. "root"). Formulario inicial añadir BD <html> <body> <form method="post" action="add_reg. una pequeña frivolidad. "VALUES ('$nombre'. $sql = "INSERT INTO agenda (nombre. en un solo fichero que llamaremos add_reg. $result = mysql_query($sql).$db). !algo tendran que hacer ustedes¡). pues veamos como es este script. por eso en este caso me conecto como root. SUBIR Añadir registros a nuestra base de datos En esta lección vamos ver como podemos añadir nuevos registros a nuesta BD. '$direccion'.). $sql = "INSERT INTO agenda (nombre. ¡Aaah!. como operador para concatenar cadenas. Para terminar esta lección.Hay que destacar la utilización del punto (. para introducir un nuevo registro.\n".$db). la cúal también usamos para las consultas. echo "¡Gracias! Hemos recibido sus datos.

$result = mysql_query($sql). y luego. "telefono='$telefono'. } </body> </html> O bien.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> <?php } //end if ?> </body> </html> SUBIR Modificar registros de nuestra base de datos Lo primero. Modificar registros opcion A <html> <body> <?php if (isset($id)){ // process form $link = mysql_connect("localhost". "root"). email='$email'". '$email')". Suponemos que las modificaciones las recogemos de un formulario como el de la lección anterior . echo "¡Gracias! Hemos recibido sus datos. '$telefono'. Primero seleccionamos el registro que deseamos modificar. }else{ ?> <form method="post" action="add_reg."VALUES ('$nombre'. para modificar hay que tener permiso para ello en el servidor de BD. "root"). direccion='$direccion'. $result = mysql_query($sql).$db). $sql = "SELECT * FROM agenda WHERE id = $id" $result = mysql_query($sql). es lo primero. el resto nos viene de corrido. $sql = "UPDATE agenda SET nombre='$nombre'. .\n". }else{ echo "Debe especificar un 'id'.\n".". o ambas cosas a la vez. Modificar registros opcion B <html> <body> <?php if (isset($id)){ // process form $link = mysql_connect("localhost". mandamos una consulta con la modificaciones. mysql_select_db("mydb". '$direccion'.

que decimos que el script necesitará parte de código que se encuentra en el fichero que llama require( ). con include( con require( ). }else{ echo "Debe especificar un 'id'. $result = mysql_query($sql). Ambas funciones hacen una llamada a un determinado fichero pero de dos maneras diferentes. Por tanto elscript quedaría como sigue. En esta lección y sucesivas vamos a ver nuevas funciones que nos facilitan y potencian nuestras páginas web. <?php include ("header. ?> Si tenemos en cuenta que el fichero header. Como todo esto es un poco lioso. "telefono='$telefono'.". mientras que ). insertamos lo que contenga el fichero que llamemos de manera literal en nuestro script. $sql = "DELETE agenda WHERE id=$id") $result = mysql_query($sql). Borrado registros de BD <html> <body> <?php if (isset($id)){ // process form $link = mysql_connect("localhost". direccion='$direccion'.inc contiene: </body> </html> Nuestro script sería equivalente a: <html> . include ("footer. } </body> </html> SUBIR Borrar registros de nuestra base de datos El proceso de borrar un registro es identico al de modificar. mysql_select_db("mydb". } </body> </html> SUBIR Como ahorramos líneas de código En las lecciones anteriores hemos aprendido el uso básico de las funciones de PHP para trabajar con MySQL.inc contiene: <html> <body> y el fichero footer.\n". solo que en vez de utilizar UPDATE utilizamos DELETE en la sentenica SQL. todos nuestros script tienen partes de código iguales.mysql_select_db("mydb". veamos unos ejemplos que nos lo aclara.\n".inc").$db).inc"). echo "Hola Mundo". "root"). Por lo general. }else{ echo "Debe especificar un 'id'. email='$email' WHERE id=$id". las funciones include( ) y require( ) nos van ahorrar muchas de estas líneas de código.$db). $sql = "UPDATE agenda SET nombre='$nombre'.

include ("footer. include ("header.inc"). ?> </body> </html> Ahora veamos el script de ejemplo para la función require( ): <?php require ("config.inc tendría algo como ésto: <?php $cadena = "Hola Mundo".inc"). ?> .<body> <?php echo "Hola Mundo". ?> Donde el fichero config. echo $cadena.inc").