Foros del Web » Programando para Internet » PHP »

crear una tabla HTML desde MySQL con PHP

Estas en el tema de crear una tabla HTML desde MySQL con PHP en el foro de PHP en Foros del Web. Hola Estoy tratando de hacer una tabla de 2 columnas y "n" filas. Los datos salen de una consulta MySQL El asunto es que no ...
  #1 (permalink)  
Antiguo 17/07/2007, 21:17
Avatar de dplweb  
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 22 años, 10 meses
Puntos: 0
crear una tabla HTML desde MySQL con PHP

Hola
Estoy tratando de hacer una tabla de 2 columnas y "n" filas.
Los datos salen de una consulta MySQL
El asunto es que no logro entender cómo hacer que por medio de esa consulta vaya "tirando" de a 2 items por fila.

¿Estará mal la consulta MySQL?

Uso un ciclo "while". ¿Deberia usar un ciclo "for"?
El codigo dentro del "while" tenia mas cosas pero yo lo simplifique para que me entiendan con lo importante. Aqui va el codigo:

Código PHP:
$S_des "SELECT * FROM destacados WHERE activo = '1' ORDER BY id DESC";
$R_des mysql_query($S_des$conexion);

while (
$tip mysql_fetch_array($R_des)) {
  print 
"<A HREF=\"$tip[url]\">".$tip[texto]."</A>";

Aqui esta la idea grafica de lo que busco, realmente nada fuera de lo común, quizas no supe explicarme


Muchas gracias espero puedan darme luces sobre este problema.
Saludos.
__________________
...webmastereando por la vida...

Última edición por dplweb; 21/07/2007 a las 20:56
  #2 (permalink)  
Antiguo 17/07/2007, 21:58
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 18 años, 3 meses
Puntos: 22
Re: crear una tabla HTML desde MySQL con PHP

Hola ^^
No entiendo el "else" ese, está muy descolgado xD

Mira no se de que se pueda extraer de a dos filas, pero puedes hacer asi:

Código PHP:
$res="";
$i=1;
while (
$tip mysql_fetch_array($R_des)) {
  
$j=$i &#37; 2;
  
if($j==1$res.="<tr>";
  
$res.="<td><A HREF=\"".$tip["url"]."\">".$tip["texto"]."</A></td>";
  if(
$j==0$res.="</tr>";
  
$i++;
}
echo 
$res
--EDIT--
mm $j contiene $i MODULO 2 (modulo es el signo por ciento), no sé por qué me puso simbolos raros :\ a ver si ahora que puse los espacios se ve bien ^^

Aprovecho que edito para contarte que es lo que hice, que me olvidé: en lugar de esperar extraer de a dos, extraigo de a una fila y voy armando las celdas en $res. Cuando se completa la fila (en este caso de 2), la cierra con </tr> y abre una nueva en la tabla.

Espero haberte ayudado ^^
Exitos.
  #3 (permalink)  
Antiguo 17/07/2007, 23:46
Avatar de dplweb  
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: crear una tabla HTML desde MySQL con PHP

Hola perdon por el error, ya lo arreglé
Veré si lo que me indicas es lo que necesita mi proyecto
En cualqueir caso te lo agradezco muchisimo.
Saludos.
__________________
...webmastereando por la vida...
  #4 (permalink)  
Antiguo 18/07/2007, 00:32
 
Fecha de Ingreso: noviembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 249
Antigüedad: 21 años
Puntos: 2
Sonrisa Re: crear una tabla HTML desde MySQL con PHP

No se si entendi bien, pero si lo que quieres es que vayas formando una tabla de 2 columnas y de una cantidad de filas variables dependiendo de la cantidad de datos devueltos por mysql, entonces aqui te paso la idea sencilla pero funcional de como puedes ir creandote todas las filas que quieres, siempre con 2 celdas equivalentes a 2 columnas.

Código:
$S_des = "SELECT * FROM destacados WHERE activo = '1' ORDER BY id DESC";
$R_des = mysql_query($S_des, $conexion);
$strTabla=''; //Reiniciamos la variable a cadena vacia
while ($tip = mysql_fetch_array($R_des))
 {
 $strTabla.="<tr>
              <td><A HREF=\"$tip[url]\">".$tip[texto]."</A></td>
              <td>".$tip[campoamostrarenlasegundacolumna]."</td>
             </tr>";
 }
 
echo "<table>".$strTabla."</table>";
Saludos.
__________________
Crea tu Foro Gratis
Portal Tabasco
  #5 (permalink)  
Antiguo 18/07/2007, 18:24
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 18 años, 3 meses
Puntos: 22
Re: crear una tabla HTML desde MySQL con PHP

No, Programmer, es que ahi está en la imagen. Las dos celdas de cada fila tienen una fila del resultado cada una ^^
  #6 (permalink)  
Antiguo 21/07/2007, 02:56
Avatar de dplweb  
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: crear una tabla HTML desde MySQL con PHP

Si exactamente, lo que dice "geq".
Cada celda tiene los datos de un mismo registro. El punto es poder generar la primera celda (eso es facil) y luego en la segunda celda de la misma fila "saltar" al siguiente registro...
Luego en la segunda fila de la tabla poner el registro que viene y ahi sucesivamente..
No sé si queda más claro.
Aún no he podido poner en práctica las sugerencias, luego les cuento.
Muchas gracias amigos..
__________________
...webmastereando por la vida...
  #7 (permalink)  
Antiguo 21/07/2007, 03:36
Avatar de dplweb  
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: crear una tabla HTML desde MySQL con PHP

Eureka!!!
jejeje

Bueno pues gracias a las luces que me han entregado y a una noche de inspiracion PHPiana llegue a la siguiente conclusion que por cierto me funciona de maravillas.

Código PHP:
<TABLE CELLPADDING="0" CELLSPACING="4" BORDER="1" WIDTH="100%">
<?
$hoy 
date("Y-m-d");

$S_des "SELECT * FROM destacados WHERE activo = '1' AND fecha_borrar < '$hoy' ORDER BY id DESC";
$R_des mysql_query($S_des$conexion);
$columnas 2// 2 columnas
$n 1;
$str "";
while (
$tip mysql_fetch_array($R_des)) {
    if ((
$n $columnas) == 1) { // $n es impar
        
$str .= "<TR><TD>";
        
$str .= "<A HREF=\"$tip[url]\">$tip[texto]</A>";
        
$str .= "</TD>";
    }
    if ((
$n $columnas) == 0) { // $n es par
        
$str .= "<TD>";
        
$str .= "<A HREF=\"$tip[url]\">$tip[texto]</A>";
        
$str .= "</TD></TR>";
    }
    
$n++;
// fin WHILE
print $str;
?>
</TABLE>
Como verán, uso una variable contador $n y la verifico en cada iteración por si es par o impar. Si es impar (1,3,5..) empiezo una nueva fila con <TR><TD>. Si es par (2,4,6..) hago una nueva celda y cierro la fila </TD></TR>
Al final imprimo todo.
Ahora viene otro desafio, pero es lo de menos. Asignar (con CSS) un fondo alternado, por ejemplo celda 1=gris claro, celda 2 = gris oscuro, celda 3 = gris oscuro, celda 4 = gris claro.. para que quede como en la imagen.
Creo que debería usar el mismo $n para verificar eso.
A ver si me ayudan con eso también.
Bueno amigos, muchas gracias y espero que les sirva a ustedes esta solución que comparto gustosamente con ustedes.
Saludos.
__________________
...webmastereando por la vida...

Última edición por dplweb; 21/07/2007 a las 20:15
  #8 (permalink)  
Antiguo 21/07/2007, 19:49
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 18 años, 3 meses
Puntos: 22
Re: crear una tabla HTML desde MySQL con PHP

Hola ^^

De hecho es muy simple, mira:
Código PHP:
$j 1;
while (
$tip mysql_fetch_array($R_des)) {
    
$aj $j &#37; $columnas; $j++;
    
if (($n $columnas) == 1) { // $n es impar
        
$str .= "<TR><TD class=\"td$aj\">";
        
$str .= "<A HREF=\"$tip[url]\">$tip[texto]</A>";
        
$str .= "</TD>";
    }
    if ((
$n $columnas) == 0) { // $n es par
        
$str .= "<TD class=\"td$aj\">";
        
$str .= "<A HREF=\"$tip[url]\">$tip[texto]</A>";
        
$str .= "</TD></TR>";
    }
    
$n++;
// fin WHILE 
Allí tendrás las clases css .td0 y .td1 alternados como en la imagen del primer post ^^

Pero cuidado que $n % $columnas dará si es par o impar solo si $columnas es 2. Utilizar el operador módulo no te da si $n es par o impar, sino el resto de la división de ese numero por el segundo.

Exitos.
  #9 (permalink)  
Antiguo 21/07/2007, 20:55
Avatar de dplweb  
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 22 años, 10 meses
Puntos: 0
De acuerdo Re: crear una tabla HTML desde MySQL con PHP

Hola geq
Gracias por tu interés.
Lo del uso del modulo con $columnas, sí lo tengo en cuenta. Después me quebraré la cabeza para crear una función que maneje diferentes cantidades de columnas.

Lo que me indicas arriba para los CSS da como resultado la siguiente secuencia. Te la ordeno como se mostraria en la tabla

Código:
td1     td0
td1     td0
td1     td0
...
y lo que necesito es:

Código:
td1     td0
td0     td1
td1     td0
td0     td1
me comprendes?? deben ser alternados.
Quizás podria manejarse con los valores de $n, ya que:

Código:
$n=1  $aj=1           $n=2  $aj=0
$n=3  $aj=0           $n=4  $aj=1
$n=5  $aj=1           $n=6  $aj=0
$n=7  $aj=0           $n=8  $aj=1
Al parecer para eso el modulo no sirviría. Seguiré intentando. ¿Se te ocurre algo?

Saludos y muchas gracias
__________________
...webmastereando por la vida...
  #10 (permalink)  
Antiguo 21/07/2007, 21:18
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 18 años, 3 meses
Puntos: 22
Re: crear una tabla HTML desde MySQL con PHP

Si, si te entendí. Es que me equivoqué eso por escribir directamente aquí sin probar jaja

Mira, esto funciona:
Código PHP:
    if($j==1$aj=0;
    if(
$j==2$aj=1;
    if(
$j>2) {
        if((
$j &#37; 2)==0) $uno=$uno?false:true;
        
if($uno$aj=1; else $aj=0;
    }
    
$j++; 
(en lugar de la línea $aj = $j % $columnas; $j++; en mi ejemplo claro)
Y debes agregar
Código PHP:
$uno true
Al comienzo, junto con $str="" y demás.

Exitos ^^
  #11 (permalink)  
Antiguo 21/07/2007, 21:52
 
Fecha de Ingreso: julio-2007
Mensajes: 71
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: crear una tabla HTML desde MySQL con PHP

Copiandolo el código del post numero #8 (es q esa pagina no me deja postear :P debido al anti-spam, supongo), sacá el $j que esta despues de while, y pegalo dentro del " if (($n%columnas)==1) ".

Espero q se entienda...
  #12 (permalink)  
Antiguo 21/07/2007, 23:17
Avatar de dplweb  
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: crear una tabla HTML desde MySQL con PHP

Hola "santuguerra", yo al menos no entendi bien, te refieres al $j o al $j++ ??
Y eso seria con que fin?
En todo caso, esa forma no me sirve para hacer lo que necesito.
Aclaranos mejor tu punto de vista por favor.
Gracias , saludos.
__________________
...webmastereando por la vida...
  #13 (permalink)  
Antiguo 21/07/2007, 23:45
 
Fecha de Ingreso: julio-2007
Mensajes: 71
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: crear una tabla HTML desde MySQL con PHP

Perdon, es q no puedo mandarlo como quisiera (con el código) para que me lo entendieras mejor... porque hay un mensaje q me dice q por motivos de anti-spam, solo es posible incluir enlaces y bla bla bla... =(

Fijate si me entendes de ahi:
Con el código de geq, del post #8 (o sea fijate en los post mas arriba), donde aparece:

$aj = $j % $columnas; $j++;

sacá la setencia "$j++;"
poné la misma setencia (o sea la "$j++;") dentro de donde dice "if (($n % $columnas) == 1) {" quiero decir adentro de ESTE if (dentro de la llave de este if).

Si no entendiste nada, veo si te puedo mandar el código mañana por pm.

PD: Es muy tarde xDD me voy a dormir, y mañana seguimos :P

Última edición por santuguerra; 21/07/2007 a las 23:54
  #14 (permalink)  
Antiguo 22/07/2007, 00:11
Avatar de dplweb  
Fecha de Ingreso: enero-2002
Mensajes: 74
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: crear una tabla HTML desde MySQL con PHP

Geq
Sabes? casi, casi, casi...
la primera fila ok, pero la segunda es igual que la primera y a partir de la tercera recién se produce se produce la alternancia.
O sea,

Voy a resumir un poco el problema para que nos entendamos mejor vale?
(algunas cosas están diferentes pero es lo mismo al final)
La función externo() verifica si el url comienza por "http://" o no, lo que determina los atributos de la etiqueta <A>.
Además optimicé mi código a uno más breve y evito código duplicado.

Código PHP:
<TABLE CELLPADDING="0" CELLSPACING="4" BORDER="0" WIDTH="100%">
<?
$hoy 
date("Y-m-d");

$S_des "SELECT * FROM destacados WHERE activo = '1' AND fecha_borrar < '$hoy' ORDER BY id DESC";
$R_des mysql_query($S_des$conexion);

$columnas 2// 2 columnas

$n 1;
$j 1;
$str "";
$uno true;

while (
$tip mysql_fetch_array($R_des)) {

/* APORTE GEQ */

    
if ($j == 1$cl 1;
    if (
$j == 2$cl 2;
    if (
$j 2) {
        if ((
$j 2) == 0$uno $uno false true;
        if (
$uno$cl 1;
        else 
$cl 2;
    } 

/* FIN GEQ */


    
if (($n $columnas) == 1$ini true;
    if ((
$n $columnas) == 0$ini false;
    
    if (
$ini$str .= "<TR>\n";

    
$str .= "<TD CLASS=\"destacado$cl\" STYLE=\"width:50%\"><A HREF=\"";

    if (
externo($tip[url])) $str .= "$tip[url]\" TARGET=\"_BLANK\"";
    else 
$str .= "index.php?t=$tip[url]\"";

    
$str .= " CLASS=\"destacadoLink\">$tip[texto]</A></TD>\n";

    if (!
$ini$str .= "</TR>\n";

    
$n++;
    
$j++;
// fin WHILE
print $str;
?>
</TABLE>
Aqui esta el resultado segun "geq":


Aqui esta el resultado segun "santuguerra", aunque aplicado a la solucion de geq en el post #10, por que el #8 no sirve para mis propósitos.
__________________
...webmastereando por la vida...

Última edición por dplweb; 22/07/2007 a las 00:44
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 14:41.