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: 16 años, 7 meses
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"$consulta06); 
$resultados1 mysql_query($limite_columna1) or die(mysql_error()); 
$columna1 mysql_fetch_assoc($resultados1); 
$limite_columna2 sprintf("%s LIMIT %d, %d"$consulta66);
$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: 17 años, 11 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: 16 años, 7 meses
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: 16 años, 7 meses
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 10:43.