10.- Cómo mostrar los datos en la Web

1.- COMO CONECTAR A MYSQL DESDE PHP

Para poder conectarte a una base de datos mysql desde php hay algunas cosas que tienes que tener claras desde el principio

Dónde está tu Base de datos: Si tienes tu web alojada en un servidor remoto, tendrás que preguntarle al administrador este dato. Normalmente este tipo de cosas suelen mandártelas junto con las contraseñas y demás información al formalizar el contrato (las páginas gratuitas también lo hacen).

Si tienes el servidor instalado en tu máquina, lo normal es que sea localhost.

Tu nombre de usuario: si tienes tu web alojada en remoto tendrás que pedírselo al administrador, si lo tienes en local suele ser root.

Tu contraseña: También tendrás que pedírsela al administrador, si trabajas en local, la que utilices habitualmente.

NOTA: Si estás trabajando en tu propia máquina, y se puede acceder a ella desde Internet, es muy recomendable que te crees un usuario que no sea root. Créate un usuario específico para las bd’s que vayas a utilizar en la Web y restríngeles los privilegios

Para conectar a la Base de Datos desde php hay que utilizar la siguiente función:

mysql_connect(<dirección>, <nombre_de_usuario>, <contraseña>);

Suponiendo que nuestra bd estuviera en la misma máquina, que nuestro nombre de usuario fuera “root”, y nuestra contraseña “micalve” nos quedaría la cosa así:

mysql_connect(“localhost”, “root”,  “miclave”);

La función mysql_connect devuelve un número que servirá para identificar la conexión que hemos establecido con la base de datos. Cómo vamos a tener que manejar esta conexión para actuar con nuestra base de datos, se la asignamos a una variable para así poder utilizarla después:

$bdconex = mysql_connect(“localhost”, “root”,  “miclave”);

Cómo MySQL es un programa separado, tenemos que tener en cuenta la posibilidad de que se esté ejecutando en en ese momento o que se haya caído. Así que nos curamos en salud y prevemos esta posibilidad:

<?php
$bdconex = @mysql_connect("localhost", "root", "TUCLAVE");

if (!$bdconex) {
echo( "<h1>La base de datos no está disponible</h1> " .
"<p>Por si acaso, comprueba que tienes bien los datos de la dirección, el nombre de usuario y la contraseña.</p>" );
exit();
}else {
echo ("ole que funciona");
}

?>

Vamos a explicar este código paso a paso:

1º $bdconex = @mysql_connect(“localhost”, “root”, ” miclave “);

Establecemos la conexión y asignamos el número de conexión a la variable $bdconex. Con la @ impedimos que se muestre el mensaje de error de mysql en caso de fallar la conexión.

2º if (!$bdconex) {

Si mysql_connect falla devolverá FALSE. Al utilizar la exclamación delante de la variable, la hacemos negativa. Por lo que si la conexión falla, !$bdconex evaluará TRUE y nuestro IF se ejecutará. Así que la traducción al castellano sería: “Si la variable $bdconex es FALSE, entonces”

3º echo( “<h1>La base de datos no está disponible</h1> ” .
“<p>Por si acaso, comprueba que tienes bien los datos de la dirección, el nombre de usuario y la contraseña.</p>” );

Si la conexión hubiera fallado, mandamos a la pantalla un mensaje personalizado utilizando echo.

4º exit();
}

Paramos cualquier ejecución, y cerramos la sentencia if

2.- COMO CREAR UNA BASE DE DATOS DESDE PHP

Si estás trabajando en un servidor remoto, lo más probable es que no puedas crearte una bd, te la darán ya creada. Así que tendrás que preguntarle al administrador el nombre de tu base de datos y podrás ahorrarte este paso.

Cómo vimos, para crear una base de datos lo hacíamos:

CREATE DATABASE nombre_de_la_db;

Desde PHP se hace con la función mysql_query que vamos a utilizar cada vez que queramos decirle algo a mysql desde php.

mysql_query("CREATE DATABASE refranes ", $link);

Al igual que antes vamos a curarnos en salud, por si algo va mal, parando la ejecución del script.

if (! mysql_query("CREATE DATABASE refranes", $bdconex)){

echo "<h2 align='center'>ERROR2: Imposible crear base de datos</h2>";

exit();
} else {

echo "<h2 align='center'>La base de datos ha sido creada con éxito</h2>";
}

Recuerda que ese código suelto, no te servirá de nada, tienes que añadírselo al que hemos visto antes, de forma que primero te conectas y luego creas la base de datos.

Aquí tenemos el código completo:

<?php
$bdconex = @mysql_connect("localhost", "root", "TUCLAVE");
if (!$bdconex) {
echo( "<h1>La base de datos no está disponible</h1> " .
"<p>Por si acaso, comprueba que tienes bien los datos de la dirección, el nombre de usuario y la contraseña.</p>" );
exit();
}else {
echo ("ole que funciona");
}

if (! mysql_query("CREATE DATABASE refranes", $bdconex)){

echo "<h2 align='center'>ERROR2: Imposible crear base de datos</h2>";
exit();
} else {
echo "<h2 align='center'>La base de datos ha sido creada con éxito</h2>";
}
?>

3.- CÓMO CREAR TABLAS DESDE PHP

Cómo ya tenemos nuestra bd creada, ahora vamos a trabajar con ella, creando tablas, lo primero que tenemos que hacer es seleccionar la bd con la que vamos a trabajar, en mysql lo hacíamos con USE nombre_bd; Para hacerlo desde php, utilizamos otra función:

Mysql_select_db(“BD”, conexión);

Así que en nuestro caso sería mysql_select_db(“refranes”, $bdconex);

Cómo siempre vamos a curarnos en salud por si algo va mal, así que la cosa nos queda así:

if (! @mysql_select_db("refranes", $bdconex)){

echo "<h2 align='center'>ERROR3: Imposible localizar la base de datos en este momento</h2>";

exit();
}else {
echo "Base de datos seleccionada";
}

Y ahora que ya hemos seleccionado la base de datos con la que queremos trabajar, vamos a crear una tabla, cómo siempre curándonos en salud en caso de que algo vaya mal:

$sql ="CREATE TABLE refranero (ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, refran TEXT, fecha DATE NOT NULL)";

if(mysql_query($sql, $bdconex)){
echo ("<p> la tabla refranero se ha creado satisfactoriamente</p>");
}else{
echo ("Error al crear la tabla refranero: " . mysql_error() . "</p>");
}

Cómo veis, en esta ocasión hemos metido la query (la orden que le vamos a mandar a mysql) en una variable llamada $sql, así el código queda mucho más clarito y luego es más fácil identificar errores.

Otra novedad, es que usamos la función mysql_error(), así nos aseguramos que si algo va mal, mysql nos va a decir exactamente qué es lo que ha ido mal.

NOTA: Tanto en la función mysql_query como en la función que veíamos antes, el parámetro para identificar la conexión es opcional podríamos haber puesto mysql_query($sql) y la cosa hubiera funcionado igual de bien Smile

4.- CÓMO INSERTAR DATOS EN UNA TABLA DESDE PHP

Ahora que ya tenemos creada nuestra base de datos y nuestra tabla, vamos a insertar unos datos Smile porque las tablas sin datos, no nos valen de mucho ¿no? Si recordamos lo que hacíamos en mysql, para crear una tabla el código era:

INSERT INTO refranero  ( refran , fecha ) VALUES ( ' Más vale pájaro en mano que ciento volando, '2003-06-01');

Así que nuestra query nos quedaría así:

$sql =" INSERT INTO refranero  ( refran , fecha ) VALUES ( 'Más vale pájaro en mano que ciento volando' , '2003-06-01')";

if(mysql_query($sql, $bdconex)){
echo ("<p> Datos insertados. Eres un Hacha!</p>");
}else{
echo ("Error al insertar los datos: " . mysql_error() . "</p>");
}

5.- CÓMO MODIFICAR DATOS EN UNA TABLA DESDE PHP

Cómo soy muy despistada, al insertar algunos refranes me confundí en la fecha, así que voy a cambiar esa fecha. Vamos a cambiarle la fecha al refrán con id = 1. Lo hacemos igual que lo hacíamos en el tema anterior pero esta vez desde PHP.

$sql ="UPDATE refranero SET fecha = '2003-07-25' WHERE ID =2;";

if(mysql_query($sql, $bdconex)){
echo ("<p> Datos modificados. Eres un Hacha!</p>");
}else{
echo ("Error al insertar los datos: " . mysql_error() . "</p>");
}

6.- CÓMO MOSTRAR LOS DATOS

Hasta ahora, hemos visto que todas nuestras querys nos devolvían simplemente dos tipos de mensajes:

a) TRUE si todo ha ido bien y nuestra query ha funcionado correctemente.
b) FALSE algo ha ido mal.

Pero cuando lo que queremos es mostrar los datos, ya no nos basta con esto, sino que tenemos que recoger estos datos y procesarlos con php para poder mostrarlos en pantalla, y eso es lo que vamos a ver ahora.

Cuando pedimos a mysql que nos devuelva los datos de la base de datos (recordad, con SELECT), si nuestra query no funciona, nos sigue devolviendo false, pero si funciona nos devuelve un resultado que es una lista de las filas resultantes de nuestra query. Para poder luego jugar con ese resultado y mostrarlo, tenemos que recogerlo en una variable:

$resultado = @mysql_query("SELECT * FROM refranero");

if (!$resultado) {
echo ("<p> Me temo que te has colado en la query:" . mysql_error() . "</p>");
exit();
}

Si todo ha ido bien, tenemos los resultados de nuestra consulta bien guardaditos dentro de la variable resultado. Cómo siempre, nos hemos cuidado en salud y mysql nos avisará si hemos cometido un error parando la ejecución del script si la query está mal.

El resultado que obtengamos puede contener gran cantidad de datos, así que vamos a utilizar un bucle while para procesar toda esa información:

while ($fila = mysql_fetch_array($resultado)) {
// procesamos los datos de la fila
}

Eso de $fila = mysql_fetch_array($resultado) probablemente os suene a chino, así que vamos a intentar explicarlo lo mejor posible. Para ello vamos a estudiarla fuera del bucle separadamente nos quedaría así:

$fila = mysql_fetch_array($resultado);

La función mysql_fetch_array lo que hace es aceptar el resultado de una consulta (que nosotros habíamos guardado en la variable $resultado) y devuelve la siguiente fila del resultado cómo un array. Cuando no quedan más filas devuelve False.

Nosotros lo que hemos hecho es asignar un valor a la variable $fila. Como ya sabemos el bucle while ejecuta el código una y otra vez hasta que la condición devuelve FALSE, así el bucle se ejecutará una y otra vez mientras siga habiendo nuevas filas en nuestro resultado, la variable $fila tomará el resultado de la siguiente fila cada vez que se ejecute el bucle. Ahora lo único que nos queda por saber es cómo sacar el valor de la variable $fila cada vez que el bucle se ejecute.

Las filas de un resultado de una consulta funcionan como arrays. Cómo ya dijimos en el tema 5 un array es un tipo especial de variable que puede guardar múltiples valores en distintos “cajones”. En el caso de nuestra base de datos, estos “cajones” tienen el nombre de la columna que estamos extrayendo, así en cada fila podremos distinguir qué valor estamos extrayendo:

while ($fila = mysql_fetch_array($resultado)) {
echo ("<p><strong>ID: </STRONG>" . $fila['ID'] . "<br />");
echo ("<strong>Refrán: </STRONG>" . $fila['refran'] . "<br />");
echo ("<strong>Fecha: </STRONG>" . $fila['fecha'] . "<br /></p>");

}

El código completo del script contiene el código para conectar a la base de datos, la consulta para seleccionar los campos y después los mostrará.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html dir="LTR">
<head>
<title>Mostrando los datos</title>
</head>
<body>

<?php

// conectamos a la base de datos
$bdconex = @mysql_connect("localhost", "root", "TUCLAVE");

if (!$bdconex) {
echo( "<h1>La base de datos no está disponible</h1> " .
"<p>Por si acaso, comprueba que tienes bien los datos de la dirección, el nombre de usuario y la contraseña.</p>" );
exit();
}

// seleccionamos la base de datos
if (! @mysql_select_db("refranes", $bdconex)){

echo "<h2 align='center'>ERROR3: Imposible localizar la base de datos en este momento</h2>";

exit();
}
?>
<h1>Mi base de datos de refranes</h1>
<?php

// Seleccionamos todos los refranes de la base de datos
$resultado = @mysql_query("SELECT * FROM refranero");

if (!$resultado) {
echo ("<p> Me temo que te has colado en la query:" . mysql_error() . "</p>");
exit();
}

// mostramos todos los refranes
while ($fila = mysql_fetch_array($resultado)) {
echo ("<p><strong>ID: </STRONG>" . $fila['ID'] . "<br />");
echo ("<strong>Refrán: </STRONG>" . $fila['refran'] . "<br />");
echo ("<strong>Fecha: </STRONG>" . $fila['fecha'] . "<br /></p>");

}
?>

</body>
<html>

Hasta aquí hemos llegado por hoy, practicad con distintas querys, añadid más refranes y juguetear con ellos, porque el próximo día vamos a aprender a hacer esto mismo pero utilizando formularios.

Volver an índice

2 responses to “10.- Cómo mostrar los datos en la Web

  1. No sé por qué pero pongo el código en mi página de wordpress y no me coge el php ni el resto de las lineas, y por supuesto, pongo mis datos propios de la base de datos y los campos de mi tabla, pero nada… ¿puede ser por el tema que tengo instalado?

  2. Hola Jose, Me temo que este artículo lo escribí hace casi 10 años, desde entonces han pasado varias versiones tanto de php como de wordpress. podrás encontrar ayuda en https://codex.wordpress.org/es:Developer_Documentation

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s