Foros del Web » Programando para Internet » PHP »

Distribuir resultado de una query en columnas (problemilla)

Estas en el tema de Distribuir resultado de una query en columnas (problemilla) en el foro de PHP en Foros del Web. Hola, recientemente he empezado con el tema del php y bueno tengo algún problema para distribuir el resultado de una query en columnas (3 o ...
  #1 (permalink)  
Antiguo 04/12/2007, 12:45
 
Fecha de Ingreso: diciembre-2007
Mensajes: 7
Antigüedad: 16 años, 11 meses
Puntos: 0
Distribuir resultado de una query en columnas (problemilla)

Hola, recientemente he empezado con el tema del php y bueno tengo algún problema para distribuir el resultado de una query en columnas (3 o 4). He visto el turorial que hay en este foro:

http://www.forosdelweb.com/f18/faqs-php-530600-post240669/#post240669

aún asi tengo problemas porque me sale en forma de escalera (sin respetar el width de la tabla).

Os dejo aquí dicha query, a ver si me podeis ayudar con el código anterior:

Cita:

<?php

$sqlsub = "SELECT * FROM SUBCATEGORIAS WHERE NOMBRE_CORTO NOT LIKE '%COLORES%' ORDER BY NOMBRE_CORTO ASC";
$ressub = mysql_query($sqlsub,$conex);

echo '<table cellSpacing="0" cellPadding="0" width="100%" border="1">';


while ($rsub = mysql_fetch_array($ressub)) {

echo '<td align="left" width="33%"><b><a href="index.php?op=2&cat='.$row[ID].'&sub='.$rsub[ID].'&entrada=C" ><font face="Verdana" size="1" color="#000000">';

if ( $wsub == $rsub[ID])
{ echo '<font face="Verdana" size="1" color="#ff6633"><b>'.$rsub[NOMBRE_CORTO].'</b></font></td></tr>';
}
else
echo $rsub[NOMBRE_CORTO];
echo '</font>';
echo '</a></b></td></tr>';
}

?>
Gracias de antemano y un saludo!!

Última edición por naymerich; 04/12/2007 a las 13:04
  #2 (permalink)  
Antiguo 04/12/2007, 13:06
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 19 años, 2 meses
Puntos: 49
Re: Distribuir resultado de una query en columnas (problemilla)

yo veo la tabla y de inmediato un td y abajo cierras un tr que no esta?
lo mismo al final un td que no habre y un tr que nunca empezo

la tabla esta mal hecha hechale una chekada a eso
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #3 (permalink)  
Antiguo 04/12/2007, 13:08
 
Fecha de Ingreso: diciembre-2007
Mensajes: 7
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Distribuir resultado de una query en columnas (problemilla)

uys!!! :p esos </tr>'s deben desaparecer pq estaba haciendo pruebas con otra cosa y se me olvido borrarlo para postearlo
  #4 (permalink)  
Antiguo 04/12/2007, 14:30
 
Fecha de Ingreso: diciembre-2007
Mensajes: 7
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Distribuir resultado de una query en columnas (problemilla)

me sigue sin funcionar :(

Algun alma caritativa? pls

Saludos
  #5 (permalink)  
Antiguo 04/12/2007, 14:48
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 22 años
Puntos: 17
Re: Distribuir resultado de una query en columnas (problemilla)

Igual sería un poco más esclarecedor echarle un vistazo al código HTML que genera una vez cargada la página, igual ahí se ve algún error más claramente.
  #6 (permalink)  
Antiguo 04/12/2007, 16:36
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 19 años, 2 meses
Puntos: 49
Re: Distribuir resultado de una query en columnas (problemilla)

si te sigue fallando sera algo y necesitamos ver codigo X)
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #7 (permalink)  
Antiguo 04/12/2007, 16:53
 
Fecha de Ingreso: diciembre-2007
Mensajes: 7
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Distribuir resultado de una query en columnas (problemilla)

El codigo me saca el resultado (como unos 120 resultados, por ahora) ahora en horizontal, y lo que necesito es que me los distribuya en 3 o 4 columnas.

He estado probando el codigo que facilita en el tutorial + este:

Código PHP:
<?php

$sqlsub 
"SELECT * FROM SUBCATEGORIAS WHERE NOMBRE_CORTO NOT LIKE '%COLORES%' ORDER BY NOMBRE_CORTO ASC";
$ressub mysql_query($sqlsub,$conex);
        
       echo 
'<table cellSpacing="0" cellPadding="0" width="100%" border="1">';
        
                                 
            while (
$rsub mysql_fetch_array($ressub)) {
    
            echo 
'<td align="left"><b><a  href="index.php?op=2&cat='.$row[ID].'&sub='.$rsub[ID].'&entrada=C" ><font face="Verdana" size="1" color="#000000">';

                                if ( 
$wsub == $rsub[ID])
                                   {  echo 
'<font face="Verdana" size="1" color="#ff6633"><b>'.$rsub[NOMBRE_CORTO].'</b></font></td>';
                                      }
                                   else 
                            echo 
$rsub[NOMBRE_CORTO];
                             echo 
'</font>';
                               echo 
'</a></b></td>';
                                }

?>
en definitiva es que todos los resultados de la query me salen en vertical y horizontal es decir cada resultado se desplaza 1; 1 (eje X e Y).

PD: solo estoy probando con estos 2 codigos

gracias y saludos
  #8 (permalink)  
Antiguo 04/12/2007, 17:20
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 22 años
Puntos: 17
Re: Distribuir resultado de una query en columnas (problemilla)

Umm, a ver si lo he entendido bien.

Quieres que el resultado de la consulta se muestre así:

resultado1 resultado2 resultado3
resultado4 resultado5 resultado6

Si es eso lo que quieres, el código está incompleto. Deberías tener una variable númerica que controle el número de elementos que tiene la fila actual.


Código PHP:

<?php 
 
$sqlsub 
"SELECT * FROM SUBCATEGORIAS WHERE NOMBRE_CORTO NOT LIKE '%COLORES%' ORDER BY NOMBRE_CORTO ASC"

$ressub mysql_query($sqlsub,$conex); 

$Num_columnas 3;
$x 0;


echo 
'<table cellSpacing="0" cellPadding="0" width="100%" border="1">'
echo 
'<tr>';

while (
$rsub mysql_fetch_array($ressub)) {

    if (
$x == "Nun_columnas) {
        echo '</tr';
        echo '<tr>';
        $x = 0;
    }

    echo '<td align="
left"><b><a  href="index.php?op=2&cat='.$row[ID].'&sub='.$rsub[ID].'&entrada=C" >'; 
 
    if ( $wsub == $rsub[ID])
        echo '<font face="
Verdana" size="1" color="#ff6633">'; 
    
else
        echo 
'<font face="Verdana" size="1" color="#ff6633">';

    echo 
$rsub[NOMBRE_CORTO]; 
    echo 
'</font>'
    echo 
'</a></b></td>'
           
$x++:
}

echo 
'</tr></table>';                       } 
 
?>
Si no es esto lo que quieres, lo he entendido mal.
  #9 (permalink)  
Antiguo 05/12/2007, 01:05
 
Fecha de Ingreso: diciembre-2007
Mensajes: 7
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Distribuir resultado de una query en columnas (problemilla)

Keysher es muy parecido:

resultado1 resultado5 resultado9
resultado2 resultado6 resultado10
resultado3 resultado7 resultado11
resultado4 resultado8 resultado12

He probao tu codigo y no me funciona :(

Un saludo y gracias
  #10 (permalink)  
Antiguo 05/12/2007, 02:14
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 22 años
Puntos: 17
Re: Distribuir resultado de una query en columnas (problemilla)

Umm, pero por qué no funciona? No lo he probado, pero la lógica debería ser parecida a esa... por lo menos como lo había planteado yo.

En tu caso, no entiendo muy bien lo que quieres. El número de columnas es fijo? o el de filas? Si es el de columnas, entiendo que el número de filas se tendría que amoldar al número de elementos que devuelva la consulta, por ejemplo en tu ejemplo de 12 resultados, está claro que tiene que haber 4 filas, pero si hubiese 24 resultados serían 8.....

Sí es eso lo que quieres ya tienes por donde empezar... siento no poder ayudarte más ahora, pero me pillas entrando a trabajar....
  #11 (permalink)  
Antiguo 05/12/2007, 02:23
 
Fecha de Ingreso: diciembre-2007
Mensajes: 7
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Distribuir resultado de una query en columnas (problemilla)

Pues el numero fijo seria el de columnas (3), y en cuanto a que no funciona no me devuelve ningun resultado :s

pero weno que el modo de distribuirlo asi:

resultado1 resultado2 resultado3
resultado4 resultado5 resultado6

tampoco me desagrada
  #12 (permalink)  
Antiguo 05/12/2007, 02:40
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 22 años
Puntos: 17
Re: Distribuir resultado de una query en columnas (problemilla)

Umm, síp, está mal

Código PHP:
    if ($x == "Nun_columnas) { 
Debería ser:

Código PHP:
    if ($x == $Num_columnas) { 
Lo demás creo que podría estar bien (no lo he probado), pero para el caso en el que el orden sea horizontal, es decir como puse en el post donde escribí el código.

En tu caso sería algo más complicado. No estoy muy seguro, pero creo que las tablas se tienen que dibujar por filas, es decir primero una fila entera (con sus columnas) y luego se pasa a la siguiente fila. Pero no estoy seguro, eso tendrás que consultarlo.

De ser como pienso yo sería algo complejo. Así lo primero que se me ocurre es guardar todos los resultados en un array, calcular el número de filas que va a haber (dividiendo el número de resultados entre el número de columnas) y luego ir mostrando la que toque.

Por ejemplo, si tienes 12 elementos repartidos en 3 columnas, serían 4 filas.

La lógica podría ser esta:

(Número de columna - 1) * Numero_Total_filas + Fila actual

(1-1) * 4 +1 = 1
(2-1) * 4 +1 = 5
(3-1) * 4 +1 = 9

Esa sería la primera fila, la segunda:


(1-1) * 4 +2 = 2
(2-1) * 4 +2 = 6
(3-1) * 4 +2 = 10

Y así sucesivamente. Habría que controlar el número total de elementos, porque llegará un punto en que en la última columna no se mostrará nada (deberás rellenarlo con un espacio en blanco, por ejemplo)

Es lo primero que se me ha ocurrido, puede que no sea lo más correcto, pero es un punto por el que empezar.
  #13 (permalink)  
Antiguo 05/12/2007, 06:15
 
Fecha de Ingreso: septiembre-2007
Mensajes: 220
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Distribuir resultado de una query en columnas (problemilla)

Sólo falla el tr. También puedes usar css flotando y cada x meter un clear.
  #14 (permalink)  
Antiguo 05/12/2007, 07:35
 
Fecha de Ingreso: diciembre-2007
Mensajes: 7
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Distribuir resultado de una query en columnas (problemilla)

Keysher he realizado los cambios que me has indicado, y sigue sin devolverme ningun resultado

:(

por cierto tb cambien esto (los "2 puntos" por punto y coma):

Código PHP:
$x++: 
por

Código PHP:
$x++; 
Un saludo
  #15 (permalink)  
Antiguo 05/12/2007, 07:46
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 22 años
Puntos: 17
Re: Distribuir resultado de una query en columnas (problemilla)

También me dejé un tag tr sin cerrar, cosas de las prisas....

De todas maneras sólo era una base para que se viese por donde iban los tiros. Aunque para tú caso en concreto no valdría.
  #16 (permalink)  
Antiguo 05/12/2007, 09:59
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 22 años
Puntos: 17
Re: Distribuir resultado de una query en columnas (problemilla)

A ver si te sirve esto:


Código PHP:

//AQUÍ TIENES QUE PASAR LOS RESULTADOS DE LA CONSULTA AL ARRAY "$array_resultados"

$Num_columnas 4//Número de Columnas

$i 0;
$Columna_actual 1;
$Fila_actual 1;
$Num_resultados count($array_resultados);
$Num_filas $Num_resultados $Num_columnas;
if (!
is_int($Num_filas))
    
$Num_filas++;
$Num_filas number_format($Num_filas0);
echo 
$Num_filas;

echo 
'<table cellSpacing="0" cellPadding="0" width="100%" border="1">';
echo 
'<tr>';

while(
$i<$Num_resultados) {

    if (
$Columna_actual $Num_columnas) {
            echo 
'</tr>';
            echo 
'<tr>';
            
$Columna_actual 1;
        
$Fila_actual++;
        }


    
$Indice_a_mostrar = (($Columna_actual 1) * $Num_filas $Fila_actual)-1;
 
    if ((
$Indice_a_mostrar 1) <= $Num_resultados) {


        echo 
'<td'>

                
// AQUÍ ACCEDERÍAS AL ARRAY, USANDO COMO INDICE $Indice_a_mostrar
 
        
echo '</td>'
        
$i++;
    }
    
$Columna_actual++;
}

echo 
'</tr></table>'

Es bastante rudimentario, pero podría llegar a funcionar.
  #17 (permalink)  
Antiguo 08/01/2008, 03:28
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años
Puntos: 1
Re: Distribuir resultado de una query en columnas (problemilla)

me equivoque de post. perdon

Última edición por estibaliz2006; 08/01/2008 a las 04:30
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 12:13.