Extraer datos con php/mysql en dos columnas.

suaveSHOW

Buenas, estoy haciendo una página y mi intencion es que las noticias salieran en dos columnas, osea en cada fila dos noticias.

Lo que se me ha ocurrido es usar tablas de la siguiente forma.

echo '<table><tr>'
while($noticia = mysql_fetch_array($query))
  {
  echo '<td>'
  echo $noticia['titulo'];
  echo "<br>";
  echo $noticia['contenido']
  echo '</td>'
  }
echo '</tr></table>

Y lo que quiero hacer es que cada dos noticias que extraiga añada un <tr></tr> automaticamente.
No se me ocurre de ninguna forma como hacerlo :(.
¿Alguien puede darme alguna pista?

Gracias.

S

echo '<table>'
while($noticia = mysql_fetch_array($query))
{
if ($contador_noticia==0) { echo '<tr> }
echo '<td>'
echo $noticia['titulo'];
echo "";
echo $noticia['contenido']
echo '</td>'
if ($contador_noticia==2) { $contador_noticia=0;echo '</tr> }
$contador_noticia++;
}
echo '</tr></table>

No formateo el codigo como tu porque no sé como se hace xD, pero creo que asi deberia funcionar

Fr4nk0

O lo que te ha dicho #2 , o usa la función módulo.

$numero_noticias =0;
if($numero_noticias % 2 == 0){ //es un número par
echo "</tr><tr>";
}

//Aqui el codigo normal y al final
$numero_noticias++;

Con eso consigues que cada 2 noticias, cierre un tr y abra otro. Al final del bucle de noticias, cierras el ultimo </tr> y ya está.

scumah

Yo soy un inútil y a lo mejor la estoy liando, pero la solución de #2 sólo funcionaría la primera vez, ¿No? Si incrementamos el contador justo después de ponerlo a 0, siempre será 1 :P

S

no #4, cuando está a 1, lo fija a 0 y hace el echo del tr.

es decir, la primera vez que se ejecuta el bucle el contador es 0 por lo que escribe un tr al comienzo, como el contador es cero no ejecuta el /tr , y suma 1 al acabar la iteraccion del bucle.

la segunda vez que se ejecuta el bucle vale 1 por lo que no escribe el tr , al comprobar vale 1 si escribe el TR y pone el contador a 0, con lo que volvemos a empezar

EDIT: vale ya se lo que dices, he puesto el contador++ en un sitio donde no funcionaria , ya que sumamos uno despues de setear a 0 xD

EDIT2: vale con comparar que sea iwal a 2 en vez de a 1, para que lo ejecute asi... bueno la idea se entiende no?, he editado para que veas como lo haria.

scumah

#5, Claro claro, la idea se entiende perfectamente, era para dejarlo más claro, que puede ser algo lioso :P

De todas formas, si lo pones a 2 y dejas el incremento ahí se forman 3 columnas, y no 2 xD Creo que habría que ponerlo antes del if, algo así:

spoiler

Y los <tr>, si el número de noticias es impar, me parece a mí que no cierran bien... Bah, si este lo tiene ya arreglado fijo xD

suaveSHOW

Pero veamos, como se supone que defino la variable $contador_noticia ??
Tendré que hacer otra query?

scumah

No hombre, el contador empieza a 0 y se acabó. Antes del query pones $contador_noticia = 0; y tirando.

dagavi

Pues como la vas a declarar, declarándola. Es de lo más básico.

$contador = 0;
while (leer) {
    ++$contador;
}
suaveSHOW

A vale jeje, pensé que era un ejemplo y que sería con una query que contara el numero de filas en la tabla noticias.

Voy a ver que consigo, gracias.

suaveSHOW

Gracias por las respuestas, ya lo logré en 10 minutos xD.
Gracias de nuevo, y adios.

Usuarios habituales

  • suaveSHOW
  • dagavi
  • scumah
  • suBverSive
  • Fr4nk0