Foros del Web » Programando para Internet » PHP »

Problemas con el for

Estas en el tema de Problemas con el for en el foro de PHP en Foros del Web. Buenas, Estoy recogiendo la informacion de diferentes tabla de una bd. lo que me interesaria seria esa informacion ponerla en una tabla de 4 columnas ...
  #1 (permalink)  
Antiguo 08/12/2010, 16:28
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 5 meses
Puntos: 2
Problemas con el for

Buenas,

Estoy recogiendo la informacion de diferentes tabla de una bd. lo que me interesaria seria esa informacion ponerla en una tabla de 4 columnas y dos filas. pero no logro poder hacer para que pege un salto ( </tr> ) por cada fila.


Código PHP:
Ver original
  1. //esto es igual a 8
  2.  $total = mysql_num_fields($result);
  3. while($contenido = mysql_fetch_row($resultado)){
  4. echo "<tr>";
  5. for ($i=0; $i<$total; $i++){
  6.  
  7. <td>echo $contenido[$i];<td>
  8.  
  9.  
  10.    
  11.  
  12.  
  13.  
  14. }
  15. echo "</tr>";
  16. }


saludos
  #2 (permalink)  
Antiguo 08/12/2010, 16:37
 
Fecha de Ingreso: julio-2008
Mensajes: 208
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Problemas con el for

Deberias dejar una fila en blanco por cada una que pones para que te queden interlineadas.
Asi:
Código:
 $total = mysql_num_fields($result);
while($contenido = mysql_fetch_row($resultado)){
echo "<tr>";
for ($i=0; $i<$total; $i++){
 
<td>echo $contenido[$i];<td>
  
 
}
echo "</tr><tr><td>&nbsp;</td></tr>";
}
Salute!!!
__________________
Lo maravilloso de aprender algo es que nadie puede arrebatárnoslo.
  #3 (permalink)  
Antiguo 08/12/2010, 16:41
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problemas con el for

sandinosaso, el problema es que haciendo esto:

Código PHP:
Ver original
  1. for ($i=0; $i<$total; $i++){
  2.  
  3. <td>echo $contenido[$i];<td>
  4.  
  5.  
  6. }
  7. echo "</tr><tr><td>&nbsp;</td></tr>";
  8. }

me los pondra todos en las las 8 columnas seguidas. porque el for se hace hasta el total de los 8 resultados sacados de la bd. y claro a mi me interesaria que se divida en dos, 4 y 4
  #4 (permalink)  
Antiguo 09/12/2010, 02:28
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Problemas con el for

Esto es medio chapucero pero te funcionará con 8 resultados:

Código PHP:
Ver original
  1. <table>
  2. <?php
  3. $var = array('celda 1', 'celda 2', 'celda 3', 'celda 4', 'celda 5', 'celda 6', 'celda 7', 'celda 8');
  4. $n = 0;
  5. $html = null;
  6. foreach($var as $v) {
  7.     $n++;
  8.     $tr = ($n == 1 or $n == 5) ? '<tr>' . "\n" : null;
  9.     $tr2 = ($n == 4 or $n == 8) ? '</tr>' . "\n" : null;
  10.     $html .= $tr .'<td>'. $n .'</td>'. "\n" . $tr2;
  11. }
  12. echo $html;
  13. ?>
  14. </table>
Si el número es distinto se jode la tabla (por eso lo chapucero).
  #5 (permalink)  
Antiguo 09/12/2010, 02:56
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Problemas con el for

no entiendo el problema...

sería, 4 columnas, y dos filas, por lo tanto dos resultados por tabla...

Código PHP:
define('RESULTADOS_POR_TABLA',2); 
Puedes hacer:

Código PHP:

$num 
ceil(mysql_num_rows()/RESULTADOS_POR_TABLA);


for(
$i 0$i<= $num$i++) {

  echo 
'<table>';

  while(...){
    echo 
'<tr>';
    echo 
'<td>' $campo1 '</td>';
    echo 
'<td>' $campo2 '</td>';
    echo 
'<td>' $campo3 '</td>';
    echo 
'<td>' $campo4 '</td>';
    echo 
'</tr>';
  }

  echo 
'</ table>';



Última edición por miktrv; 09/12/2010 a las 03:08
  #6 (permalink)  
Antiguo 09/12/2010, 06:23
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problemas con el for

no me entienden muy bien lo q quiero hacer:D.
Miren yo tengo 28 resultados recogidos de diferntes registros de una bd. entonces mi idea es que esos resultados se repartan 4 resultados por fila que en total en la tabla tengo 7 filas, 7 x 4 = 28 . El problema esta que no se como puedo hacer de forma automatica que cada 4 resultados se baje una fila.
ejemplo

<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>

<tr>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr>
.................

mi codigo es el siguiente.

Código PHP:
Ver original
  1. //aca recoge los 28 resultados
  2.  $total = mysql_num_fields($result);
  3. //aca asigna al contenido en una array cada uno de los resultado
  4.  
  5. while($contenido = mysql_fetch_row($resultado)){
  6.  
  7. echo "<tr>";
  8.  
  9. for ($i=0; $i<$total; $i++){
  10. //el problema esta aca porque como solo hace un tr me lo pone todo en una columna con 28 filas
  11. <td>echo $contenido[$i];<td>
  12.  
  13. }
  14.  
  15. echo "</tr>";
  16.  
  17. }

espero haberme explicado mejor.
  #7 (permalink)  
Antiguo 09/12/2010, 06:45
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Problemas con el for

Cita:
Iniciado por Blashak Ver Mensaje
no me entienden muy bien lo q quiero hacer:D.
Te han respondido la pregunta durante todo el post. El problema es que no entendiste las respuestas .
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #8 (permalink)  
Antiguo 09/12/2010, 06:54
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Problemas con el for

Me parece que o no te explicas bien, o no entiendes las respuestas...

1. Que entiendes por resultados? registros o columnas?
2. Quieres dividir por cada 4 registros una tabla, o por cada cuatro columnas(1 registro) una fila?

Un saludo!
  #9 (permalink)  
Antiguo 09/12/2010, 07:02
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problemas con el for

Cita:
Iniciado por miktrv Ver Mensaje
Me parece que o no te explicas bien, o no entiendes las respuestas...

1. Que entiendes por resultados? registros o columnas?
2. Quieres dividir por cada 4 registros una tabla, o por cada cuatro columnas(1 registro) una fila?

Un saludo!
1) resultado, es el valor de cada campo de los registro.

2) quiero dividir en una tabla cada 4 campos.

ejmplo de la tabla de bd.
  #10 (permalink)  
Antiguo 09/12/2010, 07:21
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Problemas con el for

... que mal te explicas tío...

por favor, hazme un ejemplo estático de lo que quieres, hazme un ejemplo estático de "en una tabla cada 4 campos."

Y usa los términos:

registro, columna, fila, y tabla.

Un saludo!

Última edición por miktrv; 09/12/2010 a las 07:28
  #11 (permalink)  
Antiguo 09/12/2010, 07:36
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Problemas con el for

registros tipo 1:

coche - rojo - audi
moto - azul - derbi

registros tipo 2:

coche
moto
bicicleta

Que tipo de registros usarás para cada td?

Un saludo!
  #12 (permalink)  
Antiguo 09/12/2010, 08:02
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problemas con el for

Cita:
Iniciado por miktrv Ver Mensaje
... que mal te explicas tío...

por favor, hazme un ejemplo estático de lo que quieres, hazme un ejemplo estático de "en una tabla cada 4 campos."

Y usa los términos:

registro, columna, fila, y tabla.

Un saludo!
mira en la bd tengo 7 tablas con 4 columnas para cada tabla y un solo registro en cada tabla.

ejmplo

tabla (auto) = campo (precio1) campo (precio2) campo (precio3) campo (precio4)
tabla (motos) = campo (precio1) campo (precio2) campo (precio3) campo (precio4)
y mas tablas..........

lo que quiero es volcar esos 28 campos en una tabla que se genere de forma automatica y los divida cada 4 filas.

ejmplo

<tr>tabla auto
<td>resultado de (precio1)</td>
<td>resultado de (precio2)</td>
<td>resultado de (precio3)</td>
<td>resultado de (precio4)</td>
</tr>
<tr>tabla motos
<td>resultado de (precio1)</td>
<td>resultado de (precio2)</td>
<td>resultado de (precio3)</td>
<td>resultado de (precio4)</td>
</tr>
y asi las otras 5 tablas que me qdan.

yo logre sacar los resultados que son 28 con $total = mysql_num_fields($result); pero depsues con un for no se como hacerlo.
  #13 (permalink)  
Antiguo 09/12/2010, 11:49
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Problemas con el for

Puedes hacer una consulta independiente por cada tabla, de la siguiente manera:

select campos from tabla1 where condición LIMIT 1...
select campos from tabla2 where condición LIMIT 1...
select campos from tabla3 where condición LIMIT 1...
.. etc

En cada consulta recoges 1 registro de cada tabla, todo esto teniendo en cuenta que las tablas tendrán 4 campos, o al menos la consulta cargará 4 campos.

Creas un array que tendrá los registros de todas las tablas:

$megaArray = array();

le añades los resultados

array_push($megaArray, $tabla1);
etc

Después haces un for, con el número de tablas para las cuales has hecho el select:

for($i = 0; $< $num_tablas; $i ++) {

$megaArray[$i]...

}

Otra opción es hacer todo el select de todas las tablas, select campos from tabla1, tabla2, tabla3 y volcar los resultados como te indiqué, si sabes que sólo hay un registro de cada tabla, por cada vuelta haces un tr y listo.

Un saludo!
  #14 (permalink)  
Antiguo 09/12/2010, 12:37
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: Problemas con el for

Código PHP:
Ver original
  1. $contador =1;
  2. $num_col=4;
  3. echo "<tr>";
  4. while ($contenido = mysql_fetch_row($resultado)){
  5.   echo "<td>";
  6.   echo "fila";
  7.   echo "</td>";
  8.   if ($contador == $num_col){
  9.     echo "</tr><tr>";
  10.     $contador=0;
  11.   }
  12.   $contador++;
  13. }
  14. //terminar de rellenar tablacon celdas...
  15. if ($contador < $num_col){
  16.   $celdas_falt=$num_col - $contador;
  17.   while ($celdas_falt <= $num_col){
  18.     echo "<td>&nbsp;</td>";
  19.     $celdas_falt++;
  20.   }
  21.   echo "</tr>";
  22. }
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #15 (permalink)  
Antiguo 09/12/2010, 13:36
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problemas con el for

Cita:
Iniciado por malakian Ver Mensaje
Código PHP:
Ver original
  1. $contador =1;
  2. $num_col=4;
  3. echo "<tr>";
  4. while ($contenido = mysql_fetch_row($resultado)){
  5.   echo "<td>";
  6.   echo "fila";
  7.   echo "</td>";
  8.   if ($contador == $num_col){
  9.     echo "</tr><tr>";
  10.     $contador=0;
  11.   }
  12.   $contador++;
  13. }
  14. //terminar de rellenar tablacon celdas...
  15. if ($contador < $num_col){
  16.   $celdas_falt=$num_col - $contador;
  17.   while ($celdas_falt <= $num_col){
  18.     echo "<td>&nbsp;</td>";
  19.     $celdas_falt++;
  20.   }
  21.   echo "</tr>";
  22. }
perfecto la idea, aunque lo modifique un poco porque no iva.asi me quedo.

Código PHP:
Ver original
  1. $total = mysql_num_fields($result);
  2.  
  3.  
  4. echo "<table>";
  5. $contador =1;
  6. $num_col=4;
  7. echo "<tr>";
  8. //echo $contenido[$i];
  9. while($contenido = mysql_fetch_row($resultado)){
  10.  
  11. for ($i=0; $i<$total; $i++){
  12.  
  13.  
  14.  
  15.   echo "<td>";
  16.     echo $contenido[$i];
  17.       echo "</td>";
  18.      if ($contador == $num_col){
  19.              echo "</tr><tr>";    $contador=0;  
  20.              }  
  21.  $contador++;
  22. }
  23. }


muchas gracias a todos
  #16 (permalink)  
Antiguo 09/12/2010, 14:04
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: Problemas con el for

claro que tenias que modificar!! solo fue un ejemplo...

me alegra que te halla servido, suerte con eso
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #17 (permalink)  
Antiguo 09/12/2010, 17:45
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Problemas con el for

Cita:
Iniciado por Blashak
perfecto la idea, aunque lo modifique un poco porque no iva.asi me quedo.
Imposible que te funcione luego de que lo modificaras.
  #18 (permalink)  
Antiguo 09/12/2010, 17:54
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: Problemas con el for

Cita:
Iniciado por metacortex Ver Mensaje
Imposible que te funcione luego de que lo modificaras.
metacortex tiene razón, ahora leyendo el código que modificaste no entiendo algunas cosas...
mmm talvez te alla funcionado aunque lo dudo, pero para la mayoria de casos no!
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x

Etiquetas: Ninguno
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 07:01.