BandaAncha

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

Separar resultados de consulta SQL por fechas

Ketere

Tengo una tabla con 3 campos: acto, fecha, pueblo.

Hago esta consulta en PHP:

$sql = SELECT * FROM tabla ORDER BY dia, pueblo;
$conn = new mysqli($servername, $username, $password, $dbname);
$resulta = $conn->query($sql);

Me ordena los resultados por dia y pueblo. Lo voy metiendo en una tabla.

Me gustaría separar los resultados por fechas y crear una nueva tabla para cada fecha.

echo "<table border = '1'> \n";
echo "<tr><th>Acto</th><th>Dia</th><th>Pueblo</th></tr> \n";
if ($rowa = mysqli_fetch_array($resulta)) {
	//echo "<table border = '1'> \n";
	echo "<tr><td>".$rowa["acto"]."</td><td>".$rowa["dia"]."</td><td>".$rowa["pueblo"]."</td></tr> \n";
	if ($resulta->num_rows > 0) {
		// output data of each row
		while ($rowa = $resulta->fetch_assoc()) {
			echo "<tr><td>".$rowa["acto"]."</td><td>".$rowa["dia"]."</td><td>".$rowa["pueblo"]."</td></tr> \n";
		}
	} else {
		echo "0 results";
	}
	echo "</table> \n";
	} else {
	echo "No se ha encontrado ningún registro !";
}

Ahora mismo me lo ordena por dia y pueblo, pero con una única tabla y un único encabezado.

Ketere

creo que el tema está dentro del WHILE. algo asi como if rowa[dia]!=rowa[dia]-1. Aquí finalizar la tabla y crear una nueva con nuevo encabezado.

¿se puede hacer esa comparativa en una columna de tipo DATE? Si la fecha de la fila actual es distinta a la anterior… crear nueva tabla.

Amenhotep
2

Con SELECT DISTINCT fecha AS fechaunica FROM tabla

obtienes todas las posibles fechas únicas

y con SELECT * FROM tabla WHERE fecha=fechaunica

Vas seleccionando los actos fecha a fecha

No tienes por qué crear una tabla para cada fecha. Ni tampoco es aconsejable: para filtrar por cualquier campo está WHERE.

En cualquier caso la consulta SQL que tienes te ordena los actos por fecha y luego por población. Lo único que tienes que programar en php es comparar la fecha actual con la anterior del bucle y si es diferente crearle un nuevo encabezado o separación.