Almacenar campos de una base de datos en una variable PHP y mostrar el resultado en una página web

En un artículo anterior ya dejé claro que soy muy fan de PHP y en este caso voy hacer un ejercicio/tutorial que he tenido que unificar mirando respuestas de varios foros y que puede ser de mucha utilidad para las personas que como yo se encontrasen en esta situación.

Si entráis en una de las webs creadas por mí, en este caso Mar del Dulce y pincháis en el enlace de “menú diario” os encontrareis con lo que va a ser el enunciado de este artículo:

La página web va a acceder a una base de datos, va a comprobar el día de la semana y después según el día mostrara en formato HTML5 con CSS3 el resultado: la imagen, el texto, la descripción y el precio.

¿Qué voy a explicar?

1.- en primer lugar hablare de la base de datos y de que tablas y campos he creado

2.- luego mostrare como me he conectado a la base de datos usando POO en PHP (método actualmente recomendado en su documentación)

3.- os mostrare como lo he preparado todo para realizar las consultas SQL

5.- por ultimo mostrare como he mostrado el resultado de la consulta SQL dentro de etiquetas HTML5 con CSS3.

antes de empezar a explicar los ficheros al final del artículo dejare un enlace para descargar los archivos ya que es posible que el código no se vea del todo bien.

Hora de empezar:

Voy a empezar por la base de datos. Dentro de mi base de datos he creado una tabla a la cual he llamado menú y que contiene los siguientes campos:

Id, día, imagen1, imagen2, imagen3, imagen4, plato1, plato2, plato3, plato4, descripción1, descripción2, descripción3, descripción4, precio1, precio2, precio3 y precio4.

Esos son todos los campos he creado en la tabla, una vez creados los campos ya he ido metiendo el contenido en la base de datos. Al final se me ha quedado una tabla con 7 entradas, una para cada día de la semana.

Por cierto, si alguien se lo pregunta en el campo de imágenes lo que he hecho es meter el directorio de la imagen, o si lo preferís la ruta donde se encuentra la imagen que es lo que se pondría dentro de la etiqueta

Ya tengo toda la información que necesito introducida en la base de datos, ahora empiezo a generar el código necesario para ello he creado 4 archivos que serán los encargados de hacer que todo esto funcione.

Si alguien se pregunta el motivo de usar varios archivos en vez de uno por experiencia (y enseguida lo veréis) es mucho mejor hacerlo así ya que a la hora de buscar un fallo, modificar algo, o añadir nuevas funciones es mucho más rápido localizar un fichero concreto y un bloque concreto que tener que leer todo un fichero entero.

Los ficheros que he creado son los siguientes: datos.php, base_datos.php, consultas.php y resultado.php

Lo que voy hacer es explicar rápidamente los ficheros generados y os mostrare el código. Pero antes de nada si no estás muy familiarizado con estas cosas o estas empezando te recomiendo mirare algunas cosas previas como por ejemplo bucles, arrays y lo más importante programación orientada a objetos en PHP. Evidentemente también necesitas saber de SQL y de HTML/CSS pero si todo lo anterior no lo entiendes es posible que muchas cosas del código no las entiendas.

Fichero datos.php

Básicamente contiene los parámetros de acceso a tu base de datos: usuario, contraseña, servidor, base de datos e idioma y esto es lo que contiene:

<!--?php define('DB_HOST','servidor'); define('DB_USER','usuario'); define('DB_PASS','clave'); define('DB_NAME','base_datos'); define('DB_CHARSET','utf-8'); ?-->

Fichero base_datos.php

Este fichero lo primero que hace es llamar al anterior fichero en este caso datos.php y únicamente se encarga de realizar la conexión a la base de datos, no hace otra cosa.

<!--?php require_once "acceso.php"; class conexion { protected $_db; public function __construct() { $this--->_db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
			if ( $this-&gt;_db-&gt;connect_errno ) {
				echo "Fallo al conectar a MySQL: ". $this-&gt;_db-&gt;connect_error;
				return;
			}
			$this-&gt;_db-&gt;set_charset(DB_CHARSET);
		}
	}
?&gt;

Fichero consultas.php

Este fichero por un lado llama al fichero anterior base_datos.php que como ya he dicho antes se conecta a la base de datos. Hay que destacar 2 cosas de este fichero:

– en primer lugar hay una clase llamada sql que hereda la clase conexion esto significa que la clase sql además de hacer lo que se suponga que haga también va a ser conectarse a la base de datos ya que hereda de conexion. Como he dicho antes esto es programación orientada a objetos si no entiendes esto lo mejor es que lo repases.

– en segundo lugar la clase sql además de conectarse a la base de datos va a ser la que se encargue de realizar las consultas SQL.

Ahora viene lo interesante ¿Cómo hacer para mostrar un menú u otro según el día de la semana?

Es muy simple: usando la función date de PHP obtengo el día de la semana y luego con bucle switch dependiendo del día de la semana realizo la misma consulta SQL cambiando la condición en el where. Y aquí os dejo el ejemplo:

<!--?php require_once "conexion.php"; class sql extends conexion { public function __construct() { parent::__construct(); } public function get_html() { $semana = date("l"); switch ($semana) { case "Monday": $resultado = $this--->_db-&gt;query('SELECT * FROM menu WHERE dia="lunes"');
					$html = $resultado-&gt;fetch_all(MYSQLI_ASSOC);
					return $html;
				break;
 
				case "Tuesday":
					$resultado = $this-&gt;_db-&gt;query('SELECT * FROM menu WHERE dia="martes"');
					$html = $resultado-&gt;fetch_all(MYSQLI_ASSOC);
					return $html;
				break;
 
				case "Wednesday":
					$resultado = $this-&gt;_db-&gt;query('SELECT * FROM menu WHERE dia="miercoles"');
					$html = $resultado-&gt;fetch_all(MYSQLI_ASSOC);
					return $html;
				break;
 
				case "Thursday":
					$resultado = $this-&gt;_db-&gt;query('SELECT * FROM menu WHERE dia="jueves"');
					$html = $resultado-&gt;fetch_all(MYSQLI_ASSOC);
					return $html;
				break;
 
				case "Friday":
					$resultado = $this-&gt;_db-&gt;query('SELECT * FROM menu WHERE dia="viernes"');
					$html = $resultado-&gt;fetch_all(MYSQLI_ASSOC);
					return $html;
				break;
 
				case "Saturday":
					$resultado = $this-&gt;_db-&gt;query('SELECT * FROM menu WHERE dia="sabado"');
					$html = $resultado-&gt;fetch_all(MYSQLI_ASSOC);
					return $html;
				break;
 
				case "Sunday":
					$resultado = $this-&gt;_db-&gt;query('SELECT * FROM menu WHERE dia="domingo"');
					$html = $resultado-&gt;fetch_all(MYSQLI_ASSOC);
					return $html;
				break;
			}
		}
	} 
?&gt;

Fichero resultado.php

Este ya es el último fichero y lo que hago es muy simple:

En primer lugar llamo al fichero anterior en este caso consultas.php, después como se suele hacer en POO creo un objeto de la clase sql y por ultimo llamo al método get de dicha clase que se encarga de realizar la consulta SQL correspondiente y de almacenar el resultado en un array.

Ahora viene el último paso: una vez obtenido el array con la información de la base de datos lo que quiero es mostrarla en el formato que me interese.

Para ello utilizo un bucle foreach donde voy recorriendo el array y dentro del HTML muestro el campo que quiero que se vea.

Yo recomiendo usar el campo de la base de datos y no el índice del array. Si utilizas el índice es posible que algún campo cambie su posición y tu programa se vaya a la mierda, si utilizas el campo de la base de datos además de ser más natural te va a dar igual la posición del array.

Nota: he tenido problemas para mostrar el codigo PHP y el HTML al mismo tiempo en este caso solo voy a poner como he creado el objeto y como he llamado al método get para extraer el contenido de la base de datos. Recomiendo ir al final de este post para descargar todos los ficheros y ver el código fuente original y sin cosas raras.

Os dejo el código para que veáis como lo he dejado

<!--?php require_once "sql.php"; $consulta_sql = new sql(); $s_sql = $consulta_sql--->get_html();
?&gt;

y ya para finalizar en la web principal, en el index.php donde va la parte del menú diario he añadido este código

<!--?php include ("includes/resultado.php"); ?-->

Y esto es todo, con esto te conectas a una base de datos, obtienes lo que necesitas y lo muestras donde y como quieras mostrarlo. Ya sabes que puedes ver el ejemplo en mi página web de Mar del Dulce.

Para descargar los ficheros con el código fuente en condiciones pincha aquí.

¡¡comparte esta entrada!!

anterior
siguiente

© Copyright – Antonio Páez- Programación Web –