Bucle de paginacion.

GATE_Anthrax

Bueno, el titulo del post no es muy acertado, el script de la paginacion lo tengo, y va bien, el problema es el siguiente:

Tengo una base de datos de un restaurante con "X" platos dedicados a clientes famosos que frecuentan, y los quiero listar en varias paginas. La forma en la que los quiero poner es, en filas de 3 y unos 15 platos por pagina, es decir unas 5 filas de 3 platos cada una.

La cosa es que tengo el script que hace que me salgan 3 en una pagina pero no ideo la forma de hacer que me salgan mas por pagina y decirlo que a "X" registros me cambie. Aver si me echais una mano que me tiene amargado ya xD.

Ahi va el codigo:

// ------------------ Paginado --------------------------------- \

function conectar() {


if (!($link = mysql_connect("localhost", MYSQLUSER, MYSQLPASS))) 
{ 
	echo "Error conectando a la base de datos."; 
	exit(); 
} 
if (!mysql_select_db(MYSQLDB, $link)) 
{ 
	echo "Error seleccionando la base de datos."; 
	exit();
} 
return $link; 

}

$db = conectar();

$registros = 3;
$pagina = $HTTP_GET_VARS["pagina"];

if (!$pagina) { 
	$inicio = 0; 
	$pagina = 1; 
} 
else { 
	$inicio = ($pagina - 1) * $registros; 
} 


$resultados = mysql_query("SELECT id FROM platos WHERE visible = 1");
$total_registros = mysql_num_rows($resultados); 
$resultados = mysql_query("SELECT * FROM platos WHERE visible = 1 ORDER BY id DESC LIMIT $inicio, $registros");	
$total_paginas = ceil($total_registros / $registros); 		  			

if($total_registros) {

	$contador = 1;
	$featured = 3;
	for ($featured=3 ; $contador <= 3 ; $contador++) {
	$plato=mysql_fetch_array($resultados);

		if (!$plato){
		break;
		}

			echo "<div id='featured0".$contador."'><a href='platos.html'>[i]</a>"; 
			echo "<div class='featured'>Plato: <strong>".$plato["Plato"]."</strong><br>";
			echo "Ingredientes: ".$plato["Ingredientes"]."</div></div>"; 
		
	}
	
} else {
	echo "(No hay platos en nuestra base de datos.)";
}

mysql_free_result($resultados);				

if($total_registros) {
	
	echo "</div><div id='featured2'><table align=right><tr><td>";
	
	if(($pagina - 1) > 0) {
		echo "<a href='platos.php?pagina=".($pagina-1)."'><font size='+1'>«</font></a> ";
	}
	
	for ($i=1; $i<=$total_paginas; $i++){ 
		if ($pagina == $i) 
			echo "[b][u]".$pagina."[/u][/b] "; 
		else
			echo "<a href='platos.php?pagina=$i'>[b]$i[/b]</a> "; 
	}
  
	if(($pagina + 1)<=$total_paginas) {
		echo " <a href='platos.php?pagina=".($pagina+1)."'><font size='+1'>»</font></a>";
	}
	
	echo "</td></tr></table></div></div>";
	
}

 mysql_close($db);

?>

PS: Gracias si alguien lo consigue. :/

-nazgul-

$registros=15 y al mostrarlos metes un <tr> cada 3 platos...

A lo mejor es que no entiendo la pregunta pero me parece muy sencillo.

l31m

efectivamente como dice #2
en el bucle donde muestras los registros te creas una variable $i=0. Cada vez ke muestras un registro haces la comprobacion:

printf("<tr><td>"); //primer TR
$i=0;
for (bucle de registros){
if ($i%3==0){ //eso kiere decir ke ya has puesto 3 platos
printf("</td></tr><tr><td>"); //cierras el TR y creas el siguiente
}else{
printf("imprimes un registro");
}

}

espero ke te sirva.

GATE_Anthrax

Uno de los problemas es que no voy con tablas sino que lo hago con CSS y <div> y si lo iciera con < br> me haria un < br> a cada plato que muestro, y lo que me interesa es que lo haga cada 3.

l31m

#4 sinceramente para tu caso no usaria <div> aparte ke odio los <div> xDD

aun asi en el trozo de codigo ke yo te puse puedes adaptarlo para colocar los <div> y los <br> en los sitios adecuados. Ten en cuenta ke el tema es en detectar ke ya han sido puestos 3 registros, lo ke pongas despues, <tr> o <br> es lo de menos.

GATE_Anthrax

Bueno, si no te molesta, lo probaré mañana xq estoy de ese trozo, hasta los mismisimos y toy to quemao xD

Mañana sin falta lo pruebo y te digo el que, muchas gracias. te devo 1.

-nazgul-

Incrementas un contador, cuando llegue a 3 metes el "< br >" y lo reinicias...

Usuarios habituales

  • -nazgul-
  • GATE_Anthrax
  • l31m