Foros del Web » Programando para Internet » PHP »

Mostrar resultados de una consulta en 3 columnas

Estas en el tema de Mostrar resultados de una consulta en 3 columnas en el foro de PHP en Foros del Web. Hola amigos! Como estan?, les cuento, tengo un sistema de noticias que muestra los resultados con paginator, ¿COMO, hago para que se muestren igual de ...
  #1 (permalink)  
Antiguo 29/12/2005, 15:23
 
Fecha de Ingreso: diciembre-2004
Mensajes: 103
Antigüedad: 13 años
Puntos: 0
Mostrar resultados de una consulta en 3 columnas

Hola amigos!
Como estan?, les cuento, tengo un sistema de noticias que muestra los resultados con paginator, ¿COMO, hago para que se muestren igual de paginados pero en 3 columnas en vez de una?, pongo el codigo que tengo el cual es muy sencillo.
Desde ya muchas gracias.

Código PHP:
<?php
include("config.php");
        
$result mysql_query("SELECT * FROM noticias ORDER BY noticiasid DESC",$connect);
?>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width='580' border='0' cellpadding="0" cellspacing="3">
  <tr> 
    <td><?
$sql 
"select * from noticias ORDER BY noticiasid DESC";

//cantidad de resultados por página (opcional, por defecto 20)
$cuantos 5;

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("paginator.inc.php");

while(
$myrow mysql_fetch_array($result))
             {
?><b><?
echo $myrow['titulo'];?></b></td>
  </tr>
  <tr> 
    <td><?
$imagen 
$myrow['imagen'];
if(
file_exists("imagenes/$imagen")) {
echo 
"<img src='imagenes/$imagen' border='0' align='left' hspace='7'>";
}
?> <? echo nl2br($myrow['text1']);?></td>
  </tr>
  <tr> 
    <td> 
      <hr size='1'>
      <?
}
?> <?
echo"".$navegacion."";
?></td>
  </tr>
</table>

Última edición por Cluster; 30/12/2005 a las 07:12
  #2 (permalink)  
Antiguo 29/12/2005, 16:46
 
Fecha de Ingreso: diciembre-2005
Mensajes: 165
Antigüedad: 12 años
Puntos: 4
Aqui tienes un script que tal vez te ayude:

http://www.forosdelweb.com/showthrea...669#post240669
  #3 (permalink)  
Antiguo 30/12/2005, 06:17
 
Fecha de Ingreso: diciembre-2004
Mensajes: 103
Antigüedad: 13 años
Puntos: 0
Pero como la aplico?

Estuve viendo la función, el tema es como la aplico en mi caso??, ya que tengo paginator, etc.
Alguna pista mas?.
Gracias
  #4 (permalink)  
Antiguo 30/12/2005, 06:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por eximer
Estuve viendo la función, el tema es como la aplico en mi caso??, ya que tengo paginator, etc.
Alguna pista mas?.
Gracias
Olvidate de que usas un paginador ... Ten presente que tus rutinas de paginado lo único que hacen es la gestión de los links para darte las páginas siguientes y anteriores, además de entregarte los "resultados" que vas a presentear en esa página.

Sólo tienes que usar ese código que en esa FAQ se plantea donde ahora compones tu actual tabla HTML. (de hecho usa exactamente los mismos nombres de las variables que tu usas!!!!) es cortar y pegar ...

Un saludo,
  #5 (permalink)  
Antiguo 30/12/2005, 07:08
 
Fecha de Ingreso: diciembre-2004
Mensajes: 103
Antigüedad: 13 años
Puntos: 0
El tema es ese

Gracias Cluster, como siempre orientas exactamente a lo que uno busca, el tema es que en mi caso, esto de copiar y pegar que parece tan simple me desorienta por completa en este caso (hacer que una tabla html se genere de forma dinamica con php), he cortado y probado varias opciones, pero no me resulta, se que soy yo, pero bueno, por si alguien tiene ganas aqui dejo el codigo que tengo que combinar:

Código PHP:
<?php 
echo "<table align=center>"

$columnes 4# Número de columnas (variable) 

if (($rows=mysql_num_rows($result))==0) { 
  echo 
"<tr><td colspan=$columnes>No hay resultados en la BD.</td></tr> "
} else { 
  echo 
"<tr><td colspan=$columnes>$rows Resultados </td></tr>"


for (
$i=1$row mysql_fetch_row ($result); $i++) { 
$resto = ($i $columnes); # Número de celda del <tr> en que nos encontramos 
if ($resto == 1) {echo "<tr>";} # Si es la primera celda, abrimos <tr> 
    
echo "<td>$row[1]</td>";  
if (
$resto == 0) {echo "</tr>";} # Si es la última celda, cerramos </tr> 

if (
$resto <> 0) { # Si el resultado no es múltiple de $columnes acabamos de rellenar los huecos 
$ajust $columnes $resto# Número de huecos necesarios 
for ($j 0$j $ajust$j++) {echo "<td>&nbsp;</td>";} 
echo 
"</tr>"# Cerramos la última línea </tr> 

mysql_close($connexion); 
echo 
"</table>"
?>
  #6 (permalink)  
Antiguo 30/12/2005, 07:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Usas algún Editor de código Visual para HTML (tipo Dreamweaver?) .. (te resultará más facil)

Consejo:
Quita tu while() entero y sustituyelo por ese código (con el "<table> y su </table>) incluido .. Usa en lugar de mysql_fetch_row() mysql_fetch_array() y cambia los $row[n°] por tus campos de tu tabla de tu BD .. luego sigue insertando el código PHP que necesites donde corresponda.

Un saludo,
  #7 (permalink)  
Antiguo 30/12/2005, 07:45
 
Fecha de Ingreso: diciembre-2004
Mensajes: 103
Antigüedad: 13 años
Puntos: 0
Problemas varios

Cluster, hice una prueba con dos campos y me encontre con varios problemas:
1) Al quitar el while no veo los resultados no veo los resutados paginados, que es algo que necesito.
2) Me muestra los resultados en 1 sola columna
3) El codigo original que tengo me da cierta diagramacion, que me es muy dificil darme cuenta de como generar en forma dinamica
Dejo el codigo (se que es patetico) hasta donde llegue, creo que me la estoy complicando, pero bueno no se mucho del tema.


<?php
include("config.php");
$result = mysql_query("SELECT * FROM noticias ORDER BY noticiasid DESC",$connect);
?>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<?
$sql = "select * from noticias ORDER BY noticiasid DESC";

echo "<table align=center>";

$columnes = 4; # Número de columnas (variable)

if (($rows=mysql_num_rows($result))==0) {
echo "<tr><td colspan=$columnes>No hay resultados en la BD.</td></tr> ";
} else {
echo "<tr><td colspan=$columnes>$rows Resultados </td></tr>";
}

for ($i=1; $row = mysql_fetch_array ($result); $i++) {
$resto = ($i % $columnes); # Número de celda del <tr> en que nos encontramos
if ($resto == 1) {echo "<tr>";} # Si es la primera celda, abrimos <tr>
echo "$row[titulo]</td><br>";
echo "$row[text1]</td><br>";
if ($resto == 0) {echo "</tr>";} # Si es la última celda, cerramos </tr>
}
if ($resto <> 0) { # Si el resultado no es múltiple de $columnes acabamos de rellenar los huecos
$ajust = $columnes - $resto; # Número de huecos necesarios
for ($j = 0; $j < $ajust; $j++) {echo "<td>&nbsp;</td>";}
echo "</tr>"; # Cerramos la última línea </tr>
}
echo "</table>";

?>
  #8 (permalink)  
Antiguo 30/12/2005, 08:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No tengo editor "visual" a mano en este minuto ni me llevo vien "de memoria" con los "<tr>" y "<td>" .. Pero te puedo hacer una recomendación más.

Sabes que la "FAQ" (el código des esta tal cual funciona) genera tu resultado en columnas. Usalo sólo con eso . .añade tu código de conexión a tu BD y del paginado.

Y ten presente lo que ya te he comentado antes .. mysql_fetch_row() no sirve para acceder por "nombre" de campo .. sustituyelo por mysql_fetch_array()

Un saludo,
  #9 (permalink)  
Antiguo 30/12/2005, 08:39
 
Fecha de Ingreso: diciembre-2005
Mensajes: 165
Antigüedad: 12 años
Puntos: 4
A ver
En el script de lo de las columnas veras esta linea:

echo "<td>$row[1]</td>";

Ahi es donde tienes que poner lo que quieres mostrar en cada bloque. Tienes que sustituir lo de arriba, por algo como esto: (es un ejemplo):

echo "<td>";

echo "$row[titulo]<br>";
echo "$row[text1]<br>";

echo "</td>";


ademas el while no necesitas usarlo, ya que viene en la instruccion for del script.

No se si me habre explicado bien, si tienes alguna duda, pos ya sabes ;)
  #10 (permalink)  
Antiguo 30/12/2005, 09:07
 
Fecha de Ingreso: diciembre-2004
Mensajes: 103
Antigüedad: 13 años
Puntos: 0
Va mejor

Gracias Cubatron y Cluster:
Por ahi va la cosa, me queda por resolver la paginacion y la alineacion de la imagen (segun como tenia el codigo original).
Es decir como completo los echos con los otros campos y la paginacion?
Gracias!
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 03:18.