Inicio Documentales
Trabajando con PHP y MySQL
TUTORIALES - PHP & MySQL
Martes, 25 de Agosto de 2009 14:19

 



 

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.

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

INSERT INTO agenda VALUES (0, 'Juan Pérez', 'C/ Laguna, 15. Sevilla',
'95.455.55.55', ' Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla ' )\g

INSERT INTO agenda VALUES (1, 'Luis García', 'C/ Betis, 22. Cádiz',
'95.655.66.33', ' Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla ' )\g

INSERT INTO agenda VALUES (2, 'Carlos Rodríguez', 'C/ Sevilla, 6. Huelva',
'95.113.22.77', ' Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla ' )\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.

Ahora desde la línea de comandos ejecuta:

cat mybd.dump | mysql mybd

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.

SUBIR

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.

 

Conexión 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 "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.

La siguiente función mysql_query(), es la que hace el trabajo duro, usando el identificador de la conexión ($link), envía una instrucción SQL al servidor MySQL para que éste la procese. El resultado de ésta operación 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.

SUBIR

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 más obvia es la sentencia de control while(), que tiene un funcionamiento similar al de otros lenguajes, ejecuta una cosa mientras la condición sea verdadera. En esta ocasión while() evalua la función mysql_fetch_row(), 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 consulta SQL.

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.

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 más de uno.

Hay que destacar la utilización del punto (.), como operador para concatenar cadenas.

SUBIR

Añadir registros a nuestra base de datos

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.


Formulario inicial añadir BD
<html>
<body>

<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.php, 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>

Como se puede ver, para introducir un nuevo registro, utilizamos la ya conocida función mysql_query(), la cúal también usamos para las consultas, y usaremos para las actualizaciones, es decir una señora función. ¡Aaah!, una cosa muy importante, para poder añadir o modificar registros debemos tener permiso para ello en el servidor MySQL, por eso en este caso me conecto como root, pero podría ser cualquier otro usuario.

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¡).

 

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>
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, 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 .


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>

SUBIR

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 quedaría 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>

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. 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 nuestro script, mientras que con require( ), que decimos que el script necesitará parte de código 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 sería equivalente a:

<html> 
<body>

<?php
echo "Hola Mundo";
?>

</body>
</html>

Ahora veamos el script de ejemplo para la función require( ):

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

Donde el fichero config.inc tendría algo como ésto:

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

© Copyright 2005 - 2010. All right reserved.
Managua, Nicaragua

Desarrollado por
H&S Soluciones