Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/03/2011, 11:30
Avatar de Kamae
Kamae
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años, 6 meses
Puntos: 13
Respuesta: Ayuda paginacion php

Buenas!

Pues he probado tu código, y a parte de algunos errores en principio sin importancia, a mí sí me ha funcionado. La sentencia es correcta, LIMIT (A_PARTIR_DE_CUAL), (CUANTOS), y haciendo un echo de tu consulta, y pasándole ?pag=2 por ejemplo, me sale LIMIT 20, 20 (correcto), le pongo 3 y me sale LIMIT 40, 20 (correcto)...

Te recomiendo que efectúes algunos cambios y que verifiques unos temitas, y a ver si te puede servir de algo:

-Los nombres entre corchetes [], ponlos entre comillas simples 'texto', sino se cree que son constantes definidas y no es así
Código PHP:
$url $registro['tipo']; // Y no $url = $registro[tipo]; 

-En casi todas las SELECT haces:
Código PHP:
$verificar mysql_query("SELECT * FROM $ciudades,"); 
Hay una coma al final :S Además, siguiendo con el código, la variable $ciudades está guardando el nombre de una ciudad (sin espacios). Presupongo que tienes tantas tablas como ciudades, ya que la interpretación del código tal y como lo tienes, podría ser:
Código PHP:
SELECT FROM Barcelona,
SELECT FROM San_Sebastian
En mi caso lo cambié por mysql_query("SELECT * FROM ciudades WHERE nombre='". $ciudades ."'"). (Imagino que en tu caso no es así porque sino no dirías que siempre te salen los mismos registros, no te debería salir ninguno si atacas a una tabla que no existe.)

-La línea comentada está mal no? A no ser que tengas la variable $ciu definida más atrás, en todo caso sería $ciud:
Código PHP:
(...)
$Resultado=mysql_query("SELECT * FROM $ciudades LIMIT $RegistrosAEmpezar, $RegistrosAMostrar",$con);
//$sql_select = "SELECT * FROM ciudades WHERE nombre='". $ciu ."'";
$sql_select "SELECT * FROM ciudades WHERE nombre='"$ciud ."'"// Así sí

while($registro=mysql_fetch_array($Resultado)){
$url $registro[url];
$autor $registro[autor];
(...) 

-Inicializa variables a "" o a 0 o a NULL. Añade controles para variables vacías (isset()):
Código PHP:
$ciud="";
if(isset(
$_GET['ciudades'])){
   
$ciud=$_GET['ciudades'];
}
if(
$ciud <= " ") {
   (...) 

Finalmente te recomiendo que debajo de todas las SELECTs hagas un echo para saber qué sentencia te está ejecutando, y compruebes en la BBDD que metiéndole esa consulta te la genera bien. También incluye echos dentro de las condiciones para saber por qué condicionales pasa y por cuáles no, y en que casos.

Y para acabar te sugiero que uses htmlspecialchars() y addslashes() / stripslashes() para controlar un poco la seguridad. Busca anti-injections y protégete un poco porque si subes eso a una web te pueden petar la BBDD mediante el GET.

Espero que sea de ayuda y sorry por el tochopost!
Saludos