Foros del Web » Programando para Internet » PHP »

Tablas con OrderBy

Estas en el tema de Tablas con OrderBy en el foro de PHP en Foros del Web. Hola buenaas estoy una vez mas aqui para consultar una duda.. Tengo una bd con imagenes que tiene cada una un id .. y tengo ...
  #1 (permalink)  
Antiguo 07/10/2011, 07:36
 
Fecha de Ingreso: noviembre-2010
Mensajes: 18
Antigüedad: 13 años, 5 meses
Puntos: 0
Exclamación Tablas con OrderBy

Hola buenaas estoy una vez mas aqui para consultar una duda..
Tengo una bd con imagenes que tiene cada una un id .. y tengo una tabla donde muestro "las ultimas imagenes" ordenadas de acuerdo al id en OrderBy id DESC

El problema es que mediante este code:

Código PHP:
  <?php

$result 
mysql_query("SELECT * FROM fvideos ORDER BY hits DESC LIMIT 3");

echo 
'<table border=0 align="center"><tr>';

while (
$y=mysql_fetch_array($result))
{
    
$nombre=$y['nombre'];
    
    
$hits=$y['hits'];
    
$video=$y['video'];
    
$imagen=$y['imagen'];
    
$id=$y['id'];
    
    
echo 
'<td><img src="'.$imagen.'"/></td>';

}
echo 
"</tr></table>";
?>
Solo consigo que todas las imagenes en esten en una misma fila, si pongo el <TR> dentro del * echo '<td><img src="'.$imagen.'"/></td>'; *, me hara varias filas pero de una sola imagen.. Alguna idea?

Como tener varias filas y determinar por el LIMIT del query cuantas columnas..

Os adjunto una imagen para losque no tienen claro, ahi explico lo que necesito..


  #2 (permalink)  
Antiguo 07/10/2011, 08:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Tablas con OrderBy

Lee lo siguiente:

http://www.forosdelweb.com/f18/aport...tablas-618528/

Saludos.
  #3 (permalink)  
Antiguo 07/10/2011, 08:36
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Tablas con OrderBy

y pones lo <tr> dentro del while!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  #4 (permalink)  
Antiguo 07/10/2011, 08:42
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Tablas con OrderBy

aqui tienes un codigo para hacerlo


Código PHP:
Ver original
  1. $numcolumnas = 2;  
  2.     //$consulta  
  3.     $sql111='SELECT * FROM familia WHERE id_subcat ='.$idcat.' order by nombre';
  4.    
  5.     $stmt111=$bd->ejecutar($sql111);
  6.    
  7.     $row_subcat1111=$bd->obtener_fila($stmt111,0);
  8.    
  9.    
  10.    
  11.      
  12.     $total_resultados = mysql_num_rows($stmt111);
  13.    
  14.    
  15.             echo "<br><br><table width=\"75%\" border =\"0\"cellspacing=\"10\" cellpadding=\"10\" >";  
  16.        
  17.        
  18.         if ($total_resultados>0) {  
  19.             //echo "<tr><td colspan=\"$numcolumnas\">Hay $total_resultados elementos</td></tr>";  
  20.     $sql='';
  21.    
  22.     $stmt=$bd->ejecutar($sql);
  23.        
  24.         $i = 1;  
  25.        
  26.         //se procesan los datos de la consulta con un mysql_fetch_array
  27.         while($row_subcat=$bd->obtener_fila($stmt,0)){
  28.            
  29.             $foto_tumb = "imagenes/logos/".$row_subcat['foto'];
  30.            
  31.          
  32.         $resto = ($i % $numcolumnas);  
  33.        
  34.             if($resto == 1){ /*si es el primer elemento creamos una nueva fila*/  
  35.                 echo "<tr>";  
  36.             }  
  37.         echo "<td width=\"50%\"><table width=\"100%\"><span class=\"Estilo2\"><tr><div align=\"center\"><a href=\"</div></tr><br><tr><div align=\"center\">".$row_subcat['nombre']."</div></tr></span></table></td>";
  38.             /*mostramos el valor del campo especificado*/  
  39.             //echo "<td>".$x['id_cat']."</td><br>";/*mostramos el valor del campo especificado*/
  40.                
  41.                 if($resto == 0){/*cerramos la fila*/  
  42.                 echo "</tr>";  
  43.                 }  
  44.         $i++;  
  45. }  
  46.             if($resto != 0){/*Si en la última fila sobran columnas, creamos celdas vacías*/  
  47.                 for ($j = 0; $j < ($numcolumnas - $resto); $j++){  
  48.                     echo "<td></td>";  
  49.             }  
  50.             echo "</tr>";  
  51.         }  
  52.  
  53.         }
  54.         else
  55.         {  
  56.  
  57.             echo "<tr><td>No hay productos en esta categoria.</td></tr>";  
  58. }  
  59. echo "</table>";
  60. ?>

Un saludo
  #5 (permalink)  
Antiguo 07/10/2011, 08:54
 
Fecha de Ingreso: noviembre-2010
Mensajes: 18
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Tablas con OrderBy

Cita:
Iniciado por Patriarka Ver Mensaje
y pones lo <tr> dentro del while!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
en mi descripcion pone claramente que cuando pongo el tr dentro del eco qe muestra los 3 datos, si creo un tr de apertura y cierre dentro, se crean varias filas si pero con una columna cada una ...

Jaronu voi a probar el code
  #6 (permalink)  
Antiguo 07/10/2011, 09:04
 
Fecha de Ingreso: noviembre-2010
Mensajes: 18
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Tablas con OrderBy

Jaronu no he conseguido hacer nada con el code que me pasaste en cuanto quiero editarlo me tira errores ademas usas variables que no estan declaradas en ese fichero..

Alguien me podria ayudar a crear el code partiendo del que ya he posteado, es decir con los parametros y cojer datos igual como lo que habia hecho antes..

solo que en el code que he hecho me permite solo una fila :/
  #7 (permalink)  
Antiguo 07/10/2011, 09:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Tablas con OrderBy

Si lo intentas hacer tú, veras que es sencillo, con el aporte que te indique puedes aprender a hacerlo.

Saludos.
  #8 (permalink)  
Antiguo 07/10/2011, 09:48
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Tablas con OrderBy

Cita:
Iniciado por jazhiel Ver Mensaje
Jaronu no he conseguido hacer nada con el code que me pasaste en cuanto quiero editarlo me tira errores ademas usas variables que no estan declaradas en ese fichero..

Alguien me podria ayudar a crear el code partiendo del que ya he posteado, es decir con los parametros y cojer datos igual como lo que habia hecho antes..

solo que en el code que he hecho me permite solo una fila :/
Creo que lo que necesitas hacer es esto:

Código PHP:
Ver original
  1. <?php
  2. mysql_select_db($database_Bdatos, $Bdatos);
  3. $queryprod = "SELECT * FROM productos ORDER BY RAND() DESC LIMIT 0,9";
  4. $productos = mysql_query($queryprod, $Bdatos) or die(mysql_error());
  5. $productosrow = mysql_fetch_assoc($productos);
  6. $productostotal = mysql_num_rows($productos);
  7. ?>
  8.  
  9. <table width="100%" border="0" cellspacing="0" cellpadding="0">
  10.   <tr>
  11.     <td class="TitArt">Nuestros Productos: </td>
  12.   </tr>
  13. </table>
  14.  
  15.                     <!--Productos Destacados-->
  16. <table border="0" align="center" cellspacing="5">
  17.     <?php
  18.     $endRow = 0;
  19.     $columns = 3; // Numero de Columnas
  20.     $hloopRow1 = 0; // Flag
  21.     do
  22.         {
  23.             if($endRow == 0  && $hloopRow1++ != 0)
  24.             echo "<tr>";
  25.             echo "<td>";
  26.             ?>
  27.             <!--Lo que va a aqui es lo que se va a repetir por cada Resultado-->
  28.             <table width="100%" border="0" cellspacing="0" cellpadding="0">
  29.                 <tbody>
  30.                     <tr>
  31.                         <td colspan="4" width="204" height="36"><img src="imagenes/Arriba.png"/></td>
  32.                     </tr>
  33.                     <tr>
  34.                         <td width="37" height="118"><img src="imagenes/Izquierda.png"/></td>
  35.                         <td width="130" height="118" bgcolor="#FFFFFF" align="center">
  36.                         <?php
  37.                         $imgs= $productosrow['img'];
  38.                         $urlbase="C:/AppServ/www/1/imagenes/productos/";
  39.                         $ruta="$imgs.jpg";
  40.                         $imagen=$urlbase;
  41.                         $imagen.=$ruta;                    
  42.                         $datos=getimagesize ($imagen);
  43.                         $anchodes=122;
  44.                         $altodes=110;
  45.                         $ancho_orig=$datos[0];
  46.                         $alto_orig=$datos[1];
  47.                        
  48.                         # Se calculan las nuevas dimensiones de la imagen
  49.                         if ($ancho_orig>$alto_orig)
  50.                             {
  51.                             $ancho_dest=$anchodes;
  52.                             $alto_dest=($ancho_dest/$ancho_orig)*$alto_orig;
  53.                             }
  54.                         else
  55.                             {
  56.                             $alto_dest=$altodes;
  57.                             $ancho_dest=($alto_dest/$alto_orig)*$ancho_orig;
  58.                             }
  59.                         ?>
  60.                         <img src="/1/imagenes/productos/<?php echo $imgs; ?>.jpg" width="<?php echo $ancho_dest; ?>" height="<?php echo $alto_dest; ?>">
  61.                         </td>
  62.                         <td width="37" height="118"><img src="imagenes/Derecha.png"/></td>
  63.                         <td>&nbsp;</td>
  64.                     </tr>
  65.                     <tr>
  66.                         <td colspan="4" width="204" height="36"><img src="imagenes/Abajo.png"/></td>
  67.                     </tr>
  68.                 </tbody>
  69.             </table>
  70.             <table width="100%" border="0" cellspacing="0" cellpadding="0">
  71.                 <tbody>
  72.                     <tr>
  73.                         <td width="11" height="11"><img src="imagenes/ListEsq1.png"></td>
  74.                         <td height="11" background="imagenes/ListBg1.png"></td>
  75.                         <td height="11" width="50" background="imagenes/ListBg1.png"></td>
  76.                         <td width="28" height="11"><img src="imagenes/ListEsq2.png"></td>
  77.                     </tr>
  78.                     <tr>
  79.                         <td width="11" background="imagenes/ListBg2.png"></td>
  80.                         <td colspan="2" bgcolor="#C7C4C4">
  81.                         <table width="180" height="30" border="0" cellspacing="0" cellpadding="0">
  82.                         <!--Esta Tabla tiene los Preliminares del Producto-->
  83.                             <tr>
  84.                                 <td class="TitArt" valign="top"><?php echo $productosrow['producto']; ?></td>
  85.                             </tr>
  86.                            
  87.                         </table>
  88.                         </td>
  89.                         <td width="28" background="imagenes/ListBg4.png"></td>
  90.                     </tr>
  91.                     <tr>
  92.                         <td width="11" height="58"><img src="imagenes/ListEsq3.png"></td>
  93.                         <td height="58" width="130" background="imagenes/ListBg3.png">
  94.                            
  95.                         </td>
  96.                         <?php
  97.                         $producto=$productosrow['ID'];
  98.                         $producto=base64_encode($producto);
  99.                         $url="?page=DetallesProductos&productoid=$producto";
  100.                         ?>
  101.                         <td colspan="2" width="78" height="58">
  102.                         <a id="Detalles" href="<?php echo $url; ?>" title="Detalles"><span>Detalles</span></a>                     
  103.                         </td>
  104.                     </tr>
  105.                 </tbody>
  106.             </table>
  107.  
  108.             <?php
  109.             echo "</td>";
  110.             $endRow++;
  111.             if($endRow >= $columns)
  112.                 {
  113.                     echo "</tr>";
  114.                     $endRow = 0;
  115.                 }
  116.         }
  117.         while ($productosrow = mysql_fetch_assoc($productos));
  118.         ?>
  119. </table>
  120. <?php
  121. mysql_free_result($productos);
  122. ?>

muestro una cantidad de imagenes (segun el limit) en una tabla y muestro 3 por fila... Edita el codigo para que trabaje con lo que buscas...

Es un proyecto que hice hace unos meses y meti tabla sobre tabla pero creo que hace lo que quieres..

Avisame si te sirvio
  #9 (permalink)  
Antiguo 07/10/2011, 10:53
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Tablas con OrderBy

Pues a mi me va perfecto

el code que te pase es solo para que lo adaptes al tus variables

Código PHP:
Ver original
  1. $numcolumnas = 2;   //aqui pon el numero de columnas que quieras que aparezcan
  2.     //$consulta  
  3.  
  4.           echo "<br><br><table width=\"75%\" border =\"0\"cellspacing=\"10\" cellpadding=\"10\" >";  
  5.        
  6.        $i = 1;  
  7.        
  8.         //se procesan los datos de la consulta con un mysql_fetch_array
  9.      
  10.         $resto = ($i % $numcolumnas);  
  11.        
  12.             if($resto == 1){ /*si es el primer elemento creamos una nueva fila*/  
  13.                 echo "<tr>";  
  14.             }  
  15.         echo "<td width=\"50%\">&nbsp</td><br>";/*mostramos el valor del campo especificado*/
  16.                
  17.                 if($resto == 0){/*cerramos la fila*/  
  18.                 echo "</tr>";  
  19.                 }  
  20.         $i++;  
  21. }  
  22.             if($resto != 0){/*Si en la última fila sobran columnas, creamos celdas vacías*/  
  23.                 for ($j = 0; $j < ($numcolumnas - $resto); $j++){  
  24.                     echo "<td></td>";  
  25.             }  
  26.             echo "</tr>";  
  27.         }  
  28.  
  29.         }
  30.         else
  31.         {  
  32.  
  33.            
  34. }  
  35. echo "</table>";
  36. ?>
  #10 (permalink)  
Antiguo 07/10/2011, 14:20
 
Fecha de Ingreso: noviembre-2010
Mensajes: 18
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Tablas con OrderBy

JUJO GUAY tu codigo me ayudo un poco pero lo que hace es repetir el query en varias filas
x ejemplo , si le pongo el limit 3 me mostrara 3 columnas, y el code hace esto

6 5 4
6 5 4
6 5 4

Cuando lo que yo quiero que haga es:

6 5 4
3 2 1

no sé si me explico pero llevo toda la tarde con este tema, no puedo creer que se me haga tan complicado.. y para GatorV , intente con las ayudas que me pones pero es complicado hacerlo desde el code de otra persona si me hecharas una mano con los datos que proporcioné seria genial muchas gracias...
  #11 (permalink)  
Antiguo 07/10/2011, 14:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Tablas con OrderBy

No es que lo hagas desde el code de otra persona, tienes que entender el concepto y entonces adaptaro a tu código, es algo muy simple y trivial:

- Inicias tu Tabla
- Inicias un row
- Inicias un contador
- Mientras haya mas datos
-- Imprimes una celda con datos (o imagenes)
-- Si el contador es igual al número de celdas a imprimir, cierras y abres el row
-- Incrementas el contador
-- Continuas con el proceso
-- Cierras la ultima fila
-- Cierras la tabla

Si entiendes ese código sencillo lo puedes traducir, te dejo un ejemplo (ojo es un ejemplo):
Código PHP:
Ver original
  1. <?php
  2. echo '<table>';
  3. echo '<tr>';
  4.  
  5. $contador = 0;
  6. $numCeldas = 3;
  7. while ($row = mysql_fetch_array($result)) {
  8.     $contador++;
  9.     echo '<td>';
  10.     echo $row['algo'];
  11.     echo '</td>';
  12.    
  13.     if (($contador % $numCeldas) == 0)
  14.         echo '</tr><tr>';
  15. }
  16.  
  17. echo '</tr>';
  18. echo '</table>';
  #12 (permalink)  
Antiguo 07/10/2011, 14:30
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Tablas con OrderBy

mas simplificado no lo tengo:

Código PHP:
<table >
                                                    <tr>
                                                        <?php
                                                        $galeria_endRow 
0;
                                                        
$galeria_columns 3// number of columns
                                                        
$galeria_hloopRow1 0// first row flag
                                                        
do {
                                                        if(
$galeria_endRow == 0  && $galeria_hloopRow1++ != 0) echo "<tr>";
                                                        
?>
                                                            <td>
                                                                <table width="155" border="0" cellspacing="0" cellpadding="5">
                                                                    <tr>
                                                                        <td><a href="portal/galeria.php"><img src="http://www.lagunillas-zulia.gob.ve/images/<?php echo $row_galeria['gal_url']; ?>" alt="<?php echo $row_galeria['gal_descript']; ?>" width="150" height="113" border="0" align="left" /></a></td>
                                                                    </tr>
                                                                </table>
                                                            </td>
                                                        <?php  $galeria_endRow++;
                                                        if(
$galeria_endRow >= $galeria_columns) {
                                                        
?>
                                                    </tr>
                                                    <?php
                                                    $galeria_endRow 
0;
                                                    }
                                                    } while (
$row_galeria mysql_fetch_assoc($galeria));
                                                    if(
$galeria_endRow != 0) {
                                                    while (
$galeria_endRow $galeria_columns) {
                                                    echo(
"<td>&nbsp;</td>");
                                                    
$galeria_endRow++;
                                                    }
                                                    echo(
"</tr>");
                                                    }
?>
                                                </table>
revisa bien tu codigo porque fuciona es con una consulta selecciona las imagenes de la BD y con el LIMIT especificas cuantas imagenes en TOTAL quieres mostrar... yo puse para mi ejemplo 9, osea yo queria que me mostrara 9 imagenes y que la fuera mostrando de 3 en 3... revisa la variable del DO y bien si no me pasas el code para probar porque en algo te estas equivocando el code que te pase arriba es el original... claro toma en cuenta que para hacer eso debes de hacer una consulta a la bd de las imagenes...
  #13 (permalink)  
Antiguo 07/10/2011, 14:34
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Tablas con OrderBy

Cita:
Iniciado por GatorV Ver Mensaje
No es que lo hagas desde el code de otra persona, tienes que entender el concepto y entonces adaptaro a tu código, es algo muy simple y trivial:

- Inicias tu Tabla
- Inicias un row
- Inicias un contador
- Mientras haya mas datos
-- Imprimes una celda con datos (o imagenes)
-- Si el contador es igual al número de celdas a imprimir, cierras y abres el row
-- Incrementas el contador
-- Continuas con el proceso
-- Cierras la ultima fila
-- Cierras la tabla

Si entiendes ese código sencillo lo puedes traducir, te dejo un ejemplo (ojo es un ejemplo):
Código PHP:
Ver original
  1. <?php
  2. echo '<table>';
  3. echo '<tr>';
  4.  
  5. $contador = 0;
  6. $numCeldas = 3;
  7. while ($row = mysql_fetch_array($result)) {
  8.     $contador++;
  9.     echo '<td>';
  10.     echo $row['algo'];
  11.     echo '</td>';
  12.    
  13.     if (($contador % $numCeldas) == 0)
  14.         echo '</tr><tr>';
  15. }
  16.  
  17. echo '</tr>';
  18. echo '</table>';
Bueno si basicamente es asi como funciona tu ejemplo mas sencillo no pudo haber sido... ahora yo tengo ya unos dias buscando como hacer este mismo concepto con capas, el problema es que no soy muy habil...

Bueno esperemos que el amigo pueda adaptar eso a su problema...
  #14 (permalink)  
Antiguo 07/10/2011, 14:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Tablas con OrderBy

¿A que te refieres con capas? Si es con DIVs puedes ver este tema: http://www.forosdelweb.com/f53/colum...-mysql-949054/

Saludos.
  #15 (permalink)  
Antiguo 07/10/2011, 15:14
 
Fecha de Ingreso: noviembre-2010
Mensajes: 18
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Tablas con OrderBy

GRACIAS GATOR V POR FIN POR FIN! HE ESTADO TODA LA TARDE CON ESTO.

Ves que facil es ayudar?muchas gracias.. :D
perdon si incomode con mi falta de conocimiento en ciertos aspectos..
  #16 (permalink)  
Antiguo 07/10/2011, 16:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Tablas con OrderBy

Te había dado toda la ayuda que necesitabas desde un inicio, si esperabas que llegara alguién a hacerte tu trabajo, pues eso es diferente...

Etiquetas: tablas, whiles, order-by
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 16:46.