Foros del Web » Programando para Internet » PHP »

Problema al listar resultados a 2 columnas

Estas en el tema de Problema al listar resultados a 2 columnas en el foro de PHP en Foros del Web. Hola a todos, Estuve mirando por internet, sobre como recuperar noticias de mi DB en formato de 2 columnas. Vi, 2 sistemas. Y me decante ...
  #1 (permalink)  
Antiguo 07/02/2008, 06:00
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 19 años, 1 mes
Puntos: 1
Problema al listar resultados a 2 columnas

Hola a todos,

Estuve mirando por internet, sobre como recuperar noticias de mi DB en formato de 2 columnas.

Vi, 2 sistemas. Y me decante por el segundo al no entender el primero. El problema es que el segundo tampoco lo entiendo 100%. De ahí que os comente el error que me da:

Código PHP:
<center>
<table border="0" cellpadding="0" cellspacing="0">
    <tr valign="top"><td valign="top">
<?

// -------nuevo----------
$consulta = "select id, titulo, LEFT(descripcion, 880) as descripcion, destacada, fecha, file, seccion from noticias where subseccion='noticias' and destacada='si' order by id desc"; 
$limite_columna1 = sprintf("%s LIMIT %d, %d", $consulta, 0, 6); 
$resultados1 = mysql_query($limite_columna1) or die(mysql_error()); 
$columna1 = mysql_fetch_assoc($resultados1); 
$limite_columna2 = sprintf("%s LIMIT %d, %d", $consulta, 6, 6);
$resultados2 = mysql_query($limite_columna2) or die(mysql_error()); 
$columna2 = mysql_fetch_assoc($resultados2);

                        
                    
?>

<table>
<?php do { ?>        <tr>
                


<td width='300px' align='center' style='background-color:#FFF; valign='top' class='centraldestacadas'>
  <? if($columna1['file']==''){
      echo 
'';
  } else { 
?>
<a href='noticia.php?ver=<?php echo $columna1['id']; ?>'><img src='/images/noticias/<?php echo $columna1['file']; ?>' style="float:left; padding-right: 6px; border:1px solid color:#000;" width='177'/></a>
<? } ?>
<h4><?php echo $columna1['seccion']; ?> ></h4>
<h2><a href='noticia.php?ver=<?php echo $columna1['id']; ?>'><?php echo $columna1['titulo']; ?></a></h2>
<?php echo $columna1['descripcion']; ?>... 
</td>



</tr> <?php } while ($columna1 = mysql_fetch_assoc($resultados1)); ?>

</table>
</td>
<td>


<table>
    <?php do { ?>
<tr>

<td width='300px' align='center' style='background-color:#FFF; valign='top' class='centraldestacadas'>
  <? if($columna2['file']==''){
      echo 
'';
  } else { 
?>
<a href='noticia.php?ver=<?php echo $columna2['id']; ?>'><img src='/images/noticias/<?php echo $columna2['file']; ?>' style='float:left; padding-right: 6px;' width='177' border="1px"/></a>
<? } ?>
<h4><?php echo $columna2['seccion']; ?> ></h4>
<h2><a href='noticia.php?ver=<?php echo $columna2['id']; ?>'><?php echo $columna2['titulo']; ?></a></h2>
<?php echo $columna2['descripcion']; ?>... 
</td>
 
</tr><?php } while ($columna2 = mysql_fetch_assoc($resultados2)); ?>


</table>



</td></tr></table>
</center>
El tema está, que cuando meto un número impar de noticias, me sale a una columna. Si meto un número par me sale bien :S a dos columnas.

Vi otro sistema para listar en dos columnas (http://www.forosdelweb.com/f18/recup...lumnas-487724/) que hasta parece mucho más sencillo, pero ni lo entiendo ni conseguí hacerlo funcionar. Mis conocimientos sobre php son básicos y no he tocado nunca boleanos.

Alguién podría hecharme un cable?

Gracias!
  #2 (permalink)  
Antiguo 07/02/2008, 11:23
 
Fecha de Ingreso: mayo-2006
Mensajes: 178
Antigüedad: 20 años, 6 meses
Puntos: 7
Re: Problema al listar resultados a 2 columnas

¿No sería mas sencillo algo así?

Código PHP:
//-- RECORDSET NORMAL
mysql_select_db($database_cnx, $cnx);
$query_rs = "SELECT * FROM tabla";
$rs = mysql_query($query_rs, $cnx) or die(mysql_error());
$row_rs = mysql_fetch_assoc($rs);
$totalRows_rs = mysql_num_rows($rs); 
Código:
<table border="1">
		<tr>
				<?php $columnas = 1; ?>
				<?php do{ ?>
				<td>&nbsp;</td>
				<?php if($columnas == 2)
				{
					echo '</tr><tr>';
					$columnas = 1;
				}
				else
				{
					$columnas++;
				}?>
				<?php } while($row_rs = mysql_fetch_assoc($rs)); ?>
				
		</tr>
</table>
Repetis siempre las columnas, cuando tengas las 2 reinicias el contador y saltas a la fila de abajo.
  #3 (permalink)  
Antiguo 07/02/2008, 11:41
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 19 años, 1 mes
Puntos: 1
Re: Problema al listar resultados a 2 columnas

Jona,

Parece simple :D, pero ya comenté que me cuesta bastante esto. Probaré lo tuyo, pero realmente, los ejemplos que vi en internet no eran tan simples!! jeje.

Muchas gracias
  #4 (permalink)  
Antiguo 08/02/2008, 05:41
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 19 años, 1 mes
Puntos: 1
Re: Problema al listar resultados a 2 columnas

Hola a todos. Gracias Jona, ya que tu código me resultó casi a la perfección y la verdad es el más sencillo de todos.

Sin embargo ahora, estoy muy sorprendido por los diferentes resultados del select. Más abajo comento el código final que use pero el mismo se comporta muy diferente dependiendo del select:

1- select * from noticias = Visión perfecta a dos columnas
2- select id,titulo,descripcion,file,fecha,destacada,seccion ,subseccion from noticias where destacada='si' and subseccion='noticias' order by id desc limit 0,20 = Visión perfecta a dos columnas.

3- select id,titulo,LEFT(descripcion,800) as descripcion,file,fecha,destacada,seccion,subseccio n from noticias where destacada='si' and subseccion='noticias' order by id desc limit 0,20 = DESCUADRE TOTAL DE COLUMNAS.

Es increible. Quiero recuperar X campos de la descripción y me falla el encuadre a dos columnas, pero sin embargo recupero la totalidad de campos y me va genial.

Evidentemente que son noticias extensas y en la portada solo quiero recuperar pues entre unos 400 y 800 carácteres. Alguién se imagina a que puede ser debido?

Mil gracias



Código PHP:
<center>
<?
include($DOCUMENT_ROOT."/backoffice/config.php");    
$cnx=mysql_connect ("localhost", "$dblogin", "$dbpass") or die ('I cannot connect to the database because: ' . mysql_error()); mysql_select_db ("$dbname");
// -------nuevo----------
$query_rs = "select id,titulo,LEFT(descripcion,800) as descripcion,file,fecha,destacada,seccion,subseccion from noticias where destacada='si' and subseccion='noticias' order by id desc limit 0,20 "; 
$rs = mysql_query($query_rs, $cnx) or die(mysql_error()); 
$row_rs = mysql_fetch_assoc($rs); 
$totalRows_rs = mysql_num_rows($rs);  

    
                    
?>
<table>
        <tr valign="top">
            <?php $columnas = 1; ?>
                <?php do{ ?>
<td width='300px' align='center' style='background-color:#FFF; valign='top' class='centraldestacadas'>
  <? if($row_rs['file']==''){
      echo 
'';
  } else { 
?>
<a href='noticia.php?ver=<?php echo $row_rs['id']; ?>'><img src='/images/noticias/<?php echo $row_rs['file']; ?>' style="float:left; padding-right: 6px; border:1px solid color:#000;" width='177'/></a>
<? } ?>
<h4><?php echo $row_rs['seccion']; ?> ></h4>
<h2><a href='noticia.php?ver=<?php echo $row_rs['id']; ?>'><?php echo $row_rs['titulo']; ?></a></h2>
<?php echo $row_rs['descripcion']; ?>... 
</td>
<?php if($columnas == 2)
                {
                    echo 
'</tr><tr valign="top">';
                    
$columnas = 1;
                }
                else
                {
                    
$columnas++;
                }
?>
                <?php } while($row_rs = mysql_fetch_assoc($rs)); ?>
</tr>
</table>
</center>
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:36.