Foros del Web » Programando para Internet » PHP »

siempre se me ha dado mal.. .tablas html usando PHP

Estas en el tema de siempre se me ha dado mal.. .tablas html usando PHP en el foro de PHP en Foros del Web. Hola a todos... Ya se que es una chorrada, pero siempre se me ha dado mal... Os cuento: Quiero hacer una tabla HTML usando PHP... ...
  #1 (permalink)  
Antiguo 08/08/2011, 04:13
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años, 8 meses
Puntos: 2
Exclamación siempre se me ha dado mal.. .tablas html usando PHP

Hola a todos...
Ya se que es una chorrada, pero siempre se me ha dado mal...
Os cuento:
Quiero hacer una tabla HTML usando PHP... pero... el tema es que tiene que tener 6 columnas por el numero (dinamico) de filas que correspondan al numero de registros presentes en mi tabla de la base de datos...
De forma que quede asi:
1-2-3-4-5-6
7-8-9-10-11-12
13-14-15.... etc en funcion del numero de registros "coincidentes".

No me salen bien las iteraciones, por que me lio entre unas cosas y otras...
Me podeis ayudar, por favor??

Es un for encadenado en otro.. creo, pero me lio y nunca me sale.. y me paso horas con esta tonteria, y ya estoy desesperado... nunca se me ha dado bien.. lo siento!!!

Muchas gracias.
Un saludo.
  #2 (permalink)  
Antiguo 08/08/2011, 04:41
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 9 meses
Puntos: 253
Respuesta: siempre se me ha dado mal.. .tablas html usando PHP

Es sencillo, no tienes que hacer nada extraño, es simplemente controlar el fetch de la consulta mysql.

Simplemente tienes que saber que cada vez que se hace fetch se pasa al siguiente registro del resultado, pero que también puede no devolver nada, en cuyo caso, habrá que imprimir vacío. La cosa es meter un bucle que itere sobre un fetch, pero hacer dentro otros fetch, siempre comprobando que existe registro. Algo así te servirá:
Código PHP:
Ver original
  1. $sql ="Consulta que quieras";
  2. $result = mysql_execute($sql, $connection) or die ("Error: " . mysql_error());
  3. echo '<table>';
  4. while ($data = mysql_fetch_array($result)) { // En data tienes el primer registro
  5.    echo '<tr>'
  6.    echo '<td>' . $data['campo_a_imprimir'] . '</td>'; // El primer dato siempre existe, ya que si no, no entraría en el while
  7.    for ($i = 0; $i < 5; $i++) { // El bucle se ejecuta 5 veces, más la inicial, suman 6
  8.       if ($data = mysql_fetch_array($result)) { // El if comprueba que realmente haya registros.
  9.          echo '<td>' . $data['campo_a_imprimir'] . '</td>';
  10.       } else { // Si no los hay se imprime la celda, pero vacía, para no descuadrar la tabla.
  11.          echo '<td></td>';
  12.       }
  13.    }
  14.    echo '</tr>';
  15. }
  16. echo '</table>';

Espero que con eso te aclares, un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #3 (permalink)  
Antiguo 08/08/2011, 07:18
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 5 meses
Puntos: 181
Respuesta: siempre se me ha dado mal.. .tablas html usando PHP

Hola, la respuesta que te dan parece que es buena, una manera alternativa de hacerlo y que implemente hace poco es la siguiente:

Código PHP:
$tabla='<table border="1" cellspacing="0" cellpadding="0">';
for(
$i=0;$i<=$totalRegistros;$i++){
if (
$i%6==0){
$tabla.='<tr><td><a>'.$datoaMostrar.'</a></td>';
}
else{
$tabla.='<td><a>'.$datoaMostrar.'<a></td>';
}
}
$tabla.='</tr></table>';
echo 
$tabla
Como se puede ver en el registro lo que esta haciendo es mirar si el modulo de i es igual a cero, en caso de que sea asi le esta diciendo que debe iniciar una nueva fila, en caso contrario simplemente añade un nuevo dato. Simplemente con cambiar el numero 6 por cualquier otro se puede hacer una tabla de cualquier cantidad de columnas que se quiera.

Y para mejorar la cosa yo propongo incluir una clase usando estilos css en cada registro para dejar el ancho fijo y asi dejarlo mas uniforme, si no se le aplica estilos en ocasiones las celdas quedan disparejas.

Ojala esta respuesta ayude a complementar el buen aporte que ya dieron.
  #4 (permalink)  
Antiguo 08/08/2011, 07:58
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 9 meses
Puntos: 253
Respuesta: siempre se me ha dado mal.. .tablas html usando PHP

No es mala idea la tuya, @cuasatar, pero le falta una cosa. Tal y como lo estás haciendo, si la última fila de la tabla no tiene 6 registros, te descuadra la talba, ya que no insertas los últimos <td>. O, dicho de otra forma, la tabla sólo sale bien si el número de registros a imprimir es múltiplo de 6 (en este caso).

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #5 (permalink)  
Antiguo 08/08/2011, 09:45
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 5 meses
Puntos: 181
Respuesta: siempre se me ha dado mal.. .tablas html usando PHP

Tienes toda la razón, sin embargo existe una manera muy facil de arreglarlo. Simplemente miro el modulo de el numero total de registros con el numero de columnas, si me da mayor que cero ese valor lo lleno con celdas de tabla vacio. Aquí esta la solución completa. No se si es complicarse mas o no pero me funciona muy bien. Igual yo le coloque estilos css para dejar el ancho de la celda fijo y sirve para todos los casos en general cuando no se sabe el número total de registros que van a salir (de hecho yo lo tengo diseñado asi para un paginador que no se cuantos registros tendra).

Creo que con esto ya quedo al 100%. Comentarios y dudas quedo pendiente.

Código PHP:
$tabla='<table border="1" cellspacing="0" cellpadding="0">'
$ncolumnas=6;
$residuo=($totalRegistros%$ncolumnas);
for(
$i=0;$i<=$totalRegistros;$i++){ 
    if (
$i%6==0){ 
    
$tabla.='<tr><td><a>'.$datoaMostrar.'</a></td>'
    } 
    else{ 
    
$tabla.='<td><a>'.$datoaMostrar.'<a></td>'
    } 

if (
$ncolumnas-$residuo)>0{
    for (
$j=0;$j<=$ncolumnas-$residuo;$j++){
    
$tabla.='<td>&nbsp;</td>';

    }
}
$tabla.='</tr></table>'
echo 
$tabla
  #6 (permalink)  
Antiguo 08/08/2011, 10:29
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 9 meses
Puntos: 253
Respuesta: siempre se me ha dado mal.. .tablas html usando PHP

Ahora sí, quedó perfecto. Yo sabía que se podía hacer así, pero quería que la solución se la dieras tú. Ahora ya tiene dos soluciones diferentes para lo mismo y que consiguen lo mismo. Que elija la que le guste.

Un saludo y suerte.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Etiquetas: dado, html, registro, siempre, tabla, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:23.