Crear tablas
Buenas tnego problemas a la hora de crear una tabla con php que se vaya rellenando con los datos de una tabla de la base de datos.
Mi problema es que quiero que visualice los datos en 2 columnas y ordenados. Es decir si va a mostrar un listado de empleados quiero que los muestre en dos columnas ordenados por apellidos. Primero rellena 1 columna y cuando yega a la mitad de empleados pasa a la siguiente columna y sigue rellenando. Asà si hay 10 empleados se mostraran 2 columnas d 5 empleados cada una.
Muchas gracias.
Un saludo
Mi problema es que quiero que visualice los datos en 2 columnas y ordenados. Es decir si va a mostrar un listado de empleados quiero que los muestre en dos columnas ordenados por apellidos. Primero rellena 1 columna y cuando yega a la mitad de empleados pasa a la siguiente columna y sigue rellenando. Asà si hay 10 empleados se mostraran 2 columnas d 5 empleados cada una.
Muchas gracias.
Un saludo
Buenas. No tengo una solución para lo que planteás, pero se me ocurren dos caminos hipotéticos para encarar el tema.
1) SQL
2) HTML sin tablas
Estoy seguro de que debe haber una forma de que la base te devuelva los registros ordenados como querés: Por ej. si son 10 (ordenados de la A a la Z), que te los dé en este orden:
1-6
2-7
3-8
4-9
5-10
teniéndolos ordenados asÃ, mostrarlos en una tabla html es muy fácil. El problema es que se me ocurre que para eso hay que saber bastante de SQL... (al menos, yo no tengo idea de cómo hacerlo)
2) Olvidarse de las tablas y usar DIVS + CSS. Bueno, esa es otra cosa que tendrÃa que investigar, pero si sabés usar divs+css en lugar de tablas, creo que se podrÃa hacer.
Y ahora que lo pienso, se me ocurre una tercera. Que serÃa guardar cada array/fila que devuelve la consulta en otro array que después podés recorrer como te convenga... SerÃa cuestión de probar. Interesante para investigar. Si sale algo, lo cuelgo acá.
Suerte.
1) SQL
2) HTML sin tablas
Estoy seguro de que debe haber una forma de que la base te devuelva los registros ordenados como querés: Por ej. si son 10 (ordenados de la A a la Z), que te los dé en este orden:
1-6
2-7
3-8
4-9
5-10
teniéndolos ordenados asÃ, mostrarlos en una tabla html es muy fácil. El problema es que se me ocurre que para eso hay que saber bastante de SQL... (al menos, yo no tengo idea de cómo hacerlo)
2) Olvidarse de las tablas y usar DIVS + CSS. Bueno, esa es otra cosa que tendrÃa que investigar, pero si sabés usar divs+css en lugar de tablas, creo que se podrÃa hacer.
Y ahora que lo pienso, se me ocurre una tercera. Que serÃa guardar cada array/fila que devuelve la consulta en otro array que después podés recorrer como te convenga... SerÃa cuestión de probar. Interesante para investigar. Si sale algo, lo cuelgo acá.
Suerte.
Bueno, está. Salió más fácil de lo que pensaba.
Para que funcione tendrÃas que editar sólo tres cosas:
* los datos de la conexión,
* la cantidad de registros que querés mostrar (puede ser un número par o impar, no importa), en la variable $cantReg,
* el nombre de la tabla y los campos en $consulta.
También, si querés, el html de la tabla (que es básico) para agregar estilos, border, colores, etc.
Suerte.
--------------------------
<?php
mysql_connect('localhost','usuario','password');
mysql_select_db('nombre_base');
$cantReg = 10;
if ($cantReg % 2 == 0) {
$cantFilasHTML = $cantReg/2;
} else {
$cantFilasHTML = ceil($cantReg/2);
}
$consulta = mysql_query("SELECT apellido, nombre FROM nombre_tabla ORDER BY apellido ASC LIMIT $cantReg");
if ($consulta) {
$arrEmpleados = array();
$cont = 0;
while($rs = mysql_fetch_array($consulta)){
$arrEmpleados[$cont]['apellido'] = $rs['apellido'] ;
$arrEmpleados[$cont]['nombre'] = $rs['nombre'] ;
$cont++;
}
echo "<table border=1>";
for ($i=0;$i<$cantFilasHTML;$i++) {
echo "<tr>";
echo "<td>".$arrEmpleados[$i]['apellido']."</td>";
echo "<td>".$arrEmpleados[$i]['nombre']."</td>";
echo "<td> ".$arrEmpleados[$i+$cantFilasHTML]['apellido']."</td>";
echo "<td> ".$arrEmpleados[$i+$cantFilasHTML]['nombre']."</td>";
echo "<tr>";
}
echo "</table>";
}
?>
Para que funcione tendrÃas que editar sólo tres cosas:
* los datos de la conexión,
* la cantidad de registros que querés mostrar (puede ser un número par o impar, no importa), en la variable $cantReg,
* el nombre de la tabla y los campos en $consulta.
También, si querés, el html de la tabla (que es básico) para agregar estilos, border, colores, etc.
Suerte.
--------------------------
<?php
mysql_connect('localhost','usuario','password');
mysql_select_db('nombre_base');
$cantReg = 10;
if ($cantReg % 2 == 0) {
$cantFilasHTML = $cantReg/2;
} else {
$cantFilasHTML = ceil($cantReg/2);
}
$consulta = mysql_query("SELECT apellido, nombre FROM nombre_tabla ORDER BY apellido ASC LIMIT $cantReg");
if ($consulta) {
$arrEmpleados = array();
$cont = 0;
while($rs = mysql_fetch_array($consulta)){
$arrEmpleados[$cont]['apellido'] = $rs['apellido'] ;
$arrEmpleados[$cont]['nombre'] = $rs['nombre'] ;
$cont++;
}
echo "<table border=1>";
for ($i=0;$i<$cantFilasHTML;$i++) {
echo "<tr>";
echo "<td>".$arrEmpleados[$i]['apellido']."</td>";
echo "<td>".$arrEmpleados[$i]['nombre']."</td>";
echo "<td> ".$arrEmpleados[$i+$cantFilasHTML]['apellido']."</td>";
echo "<td> ".$arrEmpleados[$i+$cantFilasHTML]['nombre']."</td>";
echo "<tr>";
}
echo "</table>";
}
?>