Foros del Web » Programando para Internet » PHP »

Echo en tablas html =\

Estas en el tema de Echo en tablas html =\ en el foro de PHP en Foros del Web. hola amigos, llevo varios anios beneficiandome de este excelente foro, pero hace poco me registre para aclarar una pequena duda. normalmente cuando consulto una busqueda ...
  #1 (permalink)  
Antiguo 08/04/2009, 08:33
 
Fecha de Ingreso: abril-2009
Mensajes: 24
Antigüedad: 15 años
Puntos: 1
Echo en tablas html =\

hola amigos, llevo varios anios beneficiandome de este excelente foro, pero hace poco me registre para aclarar una pequena duda.

normalmente cuando consulto una busqueda en mysql los arrojo de la siguiente manera

Código PHP:
if (mysql_num_rows($result)){ 
 echo 
"<table>";
   while (
$row mysql_fetch_array($result)) { 
    echo    
"<tr>".
                
"<td>".
                
"<b>titulo: </b>".$row["titulo"]. "<br>".
                
"</td>".
             
"</tr>"
  }
  
  echo   
"</table>"
Basicamente lo que hace es generarme los resultados en una celda "hacia abajo", por ejemplo si hay 3 resultados, las celdas crecen hacia abajo 3 veces.

La pregunta:
Como hago para que mis resultados crescan hacia la derecha? se que hay una manera de decirle a codigo que cada 3 resultados hacia la derecha haga un enter, de manera que no crezca infinito hacia la derecha. algo asi como

[ resultado 1 ] [ resultado 2 ] [ resultado 3 ]
[ resultado 4 ] [ resultado 5 ] [ resultado 6 ] ... etc

espero ser bien explicito amigos, help!
  #2 (permalink)  
Antiguo 08/04/2009, 08:50
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 5 meses
Puntos: 48
Respuesta: Echo en tablas html =\

Quien provoca el salto de fila en una tabla html es la etiqueta <tr>, si analizas tu código verás que dentro del while tienes dicha etiqueta, así que traduciendo el código lo que estás haciendo es...


Código PHP:
Abre tabla

Mientras existan registros 
(while)

pintame un celda por fila.

fin while

Cierra tabla 
Intenta averiguar como sería el código que necesitas, será mas satisfactorio y divertido a que te lo den hecho.

Saludos!

Última edición por Synkronice; 08/04/2009 a las 08:52 Razón: Formatear texto
  #3 (permalink)  
Antiguo 08/04/2009, 09:15
 
Fecha de Ingreso: abril-2009
Mensajes: 24
Antigüedad: 15 años
Puntos: 1
Respuesta: Echo en tablas html =\

gracias amigo Synkronice, esto es bien entretenido de hecho, mas sin embargo esto es lo que tengo como inico

Código PHP:
if (mysql_num_rows($result)){ 
 echo 
"<table>";
   while (
$row mysql_fetch_array($result)) { 
    echo    
"<tr>".
                
"<td>".
                
"<b>titulo: </b>".$row["titulo"]. "<br>".
                
"</td>".
                
"<td>".
                
"<b>titulo: </b>".$row["titulo"]. "<br>".
                
"</td>".
                
"<td>".
                
"<b>titulo: </b>".$row["titulo"]. "<br>".
                
"</td>".
              
"</tr>"
  }
  
  echo   
"</table>";  


traducido seria

[ resultado 1 ] [ resultado 2 ] [ resultado 3 ]
[ resultado 4 ] [ resultado 5 ] [ resultado 6 ] etc..

super! pero que pasa si solo hay 2 resultados? va a quedar la tercera celda vacia, mi cerebro cree que debe haber un if en el resultado de la busqueda. La verdad no busco el codigo completo, solo una pequena pista para comprender como funciona
  #4 (permalink)  
Antiguo 08/04/2009, 09:25
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 5 meses
Puntos: 48
Información Respuesta: Echo en tablas html =\

No existe una formula secreta para hacer codigo, el código hará lo que tu desees que haga. Primero ponen en orden tus ideas, olvidate de lo superfluo y centrate en el problema.

Que necesitas?

Que secuencia debe seguir? (pseudocodigo, diagramas de flujo, etc..)

Código PHP:
limite_celdas_por_fila 3
celda_actual 
0;

PINTA inicio tabla

MIENTRAS haya registros 
(while)

Si celda_actual 2
    PINTA fin fila
    RESETEA celda_actual a 0
FIN SI

SI celda_actual 
== 0
    PINTA inicio fila
FIN Si

PINTA registro actual en una celda

INCREMENTA celda_actual

FIN 
WHILE

PINTA cierre tabla 
Saludos!

Última edición por Synkronice; 08/04/2009 a las 09:29 Razón: Corregido bug pseudocodigo
  #5 (permalink)  
Antiguo 08/04/2009, 10:24
 
Fecha de Ingreso: abril-2009
Mensajes: 24
Antigüedad: 15 años
Puntos: 1
Respuesta: Echo en tablas html =\

funcionooooooo!!!! =D

muchisimas gracias amigo Synkronice, la verdad que tu consejo me va ayudar mucho en el futuro. La clave es "que necesito y que secuencia debo seguir" tal cual como lo comentaste

asi quedo mi codigo

Código PHP:
if (mysql_num_rows($result)){ 
    
$limite_celda 3;
    
$celda_actual 0;
    echo 
"<table width='190px'  border = '0' cellpadding=\"0\" cellspacing=\"0\"> \n";
          
  while (
$row mysql_fetch_array($result)) { 
  if (
$celda_actual== 0){
      echo 
"<tr>";
  }    
    echo 
"<td bgcolor=\"#F2F2F2\" class=\"verd\">".
         
"<img src=\"imgccvanimales.php?id=".$row["id"]." \" />".
         
"<br>".
         
"<b>titulo: </b>".$row["titulo"]. "<br>".
         
"<b>descripcion: </b>".$row["descripcion"]."<br>".
         
"<b>venta id: </b>".$row["id"]."<br>".
         
"<b>fecha: </b>".$row["fecha"]."<br>";      
         
$celda_actual ++; echo " celda numero ".$celda_actual;
         
"</td>";
         
     if (
$celda_actual == ) {
         echo 
"</tr>".
         
$celda_actual 0;
        }
         
  }
  
  echo   
"</table> \n"
 
 } 
no hizo falta la condicion $limite_celda = 3; pero lo deje para recordar como funciona.
tambien deje el [ if $celda_actual==3 ] que me funciona igual al [ if $celda_actual > 2; ]
=)
  #6 (permalink)  
Antiguo 08/04/2009, 10:26
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 5 meses
Puntos: 48
Respuesta: Echo en tablas html =\

Me alegro que lo hayas conseguido tu solo!!!

No hay nada mejor que sentirse realizado con uno mismo ;)

Saludos y hasta la próxima!
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 15:05.