Ver Mensaje Individual
  #10 (permalink)  
Antiguo 05/07/2014, 16:52
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Registros de base de datos en table

Amigo:

Estube algo "ocupado" pero aca te dejo la solucion... todos hacemos algo parecido..... se basa en usar el operador modulo (%) de la division:

Código PHP:
Ver original
  1. <?php
  2.     // registros de consulta SQL simulada:
  3.    
  4. $datos = array (
  5.     array('id'=>2,'img'=>'xxxxxxx.jpg'),   
  6.     array('id'=>3,'img'=>'lalala.jpg'),
  7.     array('id'=>42,'img'=>'blabla.jpg'),
  8.     array('id'=>334,'img'=>'xxxxxxx.jpg'),
  9.     array('id'=>555,'img'=>'xxxxxxx.jpg'),
  10.     array('id'=>560,'img'=>'xxxxxxx.jpg'),
  11.     array('id'=>700,'img'=>'xxxxxxx.jpg'),
  12.     array('id'=>704,'img'=>'xxxxxxx.jpg'),
  13.     array('id'=>708,'img'=>'xxxxxxx.jpg'),
  14.     array('id'=>709,'img'=>'xxxxxxx.jpg'),
  15.     array('id'=>710,'img'=>'xxxxxxx.jpg'),
  16.     array('id'=>811,'img'=>'xxxxxxx.jpg'),
  17.     array('id'=>912,'img'=>'xxxxxxx.jpg'),
  18.     array('id'=>913,'img'=>'xxxxxxx.jpg'),
  19.    
  20. );

y ahora... el programa:

Código PHP:
Ver original
  1. <?php
  2.     $close=null;
  3.     $cols= 3;  // cols de la tabla
  4. ?>
  5.  
  6. <table width="90%" id="tabnovedades">  
  7. <?php foreach ((array) $datos as $i => $dato): ?>
  8. <?php if ($i%$cols==0): ?>
  9.     <tr>
  10. <?php endif; $close = $i+$cols; ?>
  11.         <td>                                       
  12.             <a href="http://xxx.com/path?id=<?= $dato['id']; ?>">
  13.                 <img src="http://xxx.com/path/<?= $dato['img']; ?>" alt=""/>
  14.             </a>       
  15.         </td>  
  16.        
  17. <?php if ($i==$close): ?>
  18.     </tr>
  19. <?php endif; ?>
  20.  
  21. <?php
  22.     endforeach;
  23.    
  24.     // cierro la ultima columna si se que no se pudo hacer en el bucle
  25.     if (count($datos)!=0 && count($datos)%$cols!=0)
  26.         echo '</tr>';
  27.  
  28. ?>
  29. </table>

He hecho esto mil veces... de distintas formas pero creo esta puede ser la mas simple...

Este mismo algoritmo sirve para con DIVs y nota que el PHP no ha interrumpido para nada el HTML... si un diseñador te entrega una plantilla en HTML deberias hacer algo asi...... ni PHP ni Javascript deben ser invasivos
__________________
Salu2!

Última edición por Italico76; 05/07/2014 a las 21:34