Foros del Web » Programando para Internet » PHP »

Problemas paginacion PHP

Estas en el tema de Problemas paginacion PHP en el foro de PHP en Foros del Web. Hola Estoy intentando hacer una paginacion para mis consultas en Mysql y estoy un tanto aburrido de probar y probar pero no resolver nada. Tengo ...
  #1 (permalink)  
Antiguo 23/06/2003, 10:22
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 14 años, 6 meses
Puntos: 1
Problemas paginacion PHP

Hola

Estoy intentando hacer una paginacion para mis consultas en Mysql y estoy un tanto aburrido de probar y probar pero no resolver nada.

Tengo el siguiente codigo:


/*************** Consulta SQL reconstruida ***********************/
if ($_POST['opcionbusca'] == 'vias'){
$ssql = "SELECT * FROM Todas WHERE Nombre LIKE '%{$_POST['buscar']}%' ORDER BY Escuela, Sector, Nombre LIMIT". $inicio . "," . $TAMAÑO_PAGINA;}
else {$ssql= "SELECT * FROM Todas WHERE Grado LIKE '%{$_POST['buscar']}' ORDER BY Escuela, Sector, Nombre LIMIT". $inicio . "," . $TAMAÑO_PAGINA;}


/***********Mostramos los resultados por pantalla *************************/

$cconsulta = mysql_query($ssql);


/*****************Comprobamos las filas afectadas por la consulta *****************/

$ffilas = mysql_num_rows($cconsulta);






Y me sale el siguiente error:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/www/htdocs/envertical/buscador.php on line 281

La linea 281 es $ffilas = mysql_num_rows($cconsulta);

Y no se por que me da ese error.

A ver si podeis ayudarme... Un saludo
  #2 (permalink)  
Antiguo 23/06/2003, 10:30
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Sustituye:

$cconsulta = mysql_query($ssql);

Por:

$cconsulta = mysql_query($ssql) or die($ssql."<br>ERROR:<br><b>".mysql_error()."</b>");
__________________
M a l d i t o F r i k i
  #3 (permalink)  
Antiguo 23/06/2003, 10:34
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 14 años, 6 meses
Puntos: 1
Hola de nuevo:

Ya sustitui el fracmento de codigo que se me ha indicado, y ahora me dice que

ERROR:
Query was empty

Que quiere decir que la consulta esta completa??
  #4 (permalink)  
Antiguo 23/06/2003, 10:38
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 14 años, 6 meses
Puntos: 1
Esta sentencia SQL esta bien??

$sql = "SELECT * FROM Todas WHERE Nombre LIKE '%{$_POST['buscar']}%' ORDER BY Escuela, Sector, Nombre LIMIT" . $inicio . "," . $TAMAÑO_PAGINA;}


si $inicio es :

$pagina = $_POST["pagina"];
if (!$pagina) {
$inicio = 0;
$pagina=1;
}
else {
$inicio = ($pagina - 1) * $TAMANO_PAGINA;
}


Y $TAMAÑO_PAGINA= 20;
  #5 (permalink)  
Antiguo 23/06/2003, 10:43
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Si te dice "QUERy was empty" significa que no le pasas ninguna consulta. Parece que el puntero de PHP no accede al if, supongo que porque no se cumple "($_POST['opcionbusca'] == 'vias')".
__________________
M a l d i t o F r i k i
  #6 (permalink)  
Antiguo 23/06/2003, 10:48
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 14 años, 6 meses
Puntos: 1
Ahora me dice que tengo un error en la sintaxis de SQL

SELECT * FROM Todas WHERE Nombre LIKE '%tre%' ORDER BY Escuela, Sector, Nombre LIMIT0,
ERROR:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT0,' at line 1

La sintaxis es esta:

if ($_POST['opcionbusca'] == 'vias'){
$sql = "SELECT * FROM Todas WHERE Nombre LIKE '%{$_POST['buscar']}%' ORDER BY Escuela, Sector, Nombre LIMIT" . $inicio . "," . $TAMAÑO_PAGINA;}
else {$sql= "SELECT * FROM Todas WHERE Grado LIKE '%{$_POST['buscar']}%' ORDER BY Escuela, Sector, Nombre LIMIT" . $inicio . "," . $TAMAÑO_PAGINA;}


Un saludo
  #7 (permalink)  
Antiguo 23/06/2003, 11:07
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
LIMIT0 debería ser LIMIT 0

Cambia:
Cita:
LIMIT" . $inicio . "
Por:
Cita:
LIMIT " . $inicio . "
__________________
M a l d i t o F r i k i
  #8 (permalink)  
Antiguo 23/06/2003, 11:45
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 14 años, 6 meses
Puntos: 1
OK...

Ya no tengo erres en la consulta, pero ahora, al mostrar los resultados por pantalla, resulta que me muestra los 20 primeros (que es la cantidad que yo he elegido para la paginacion) y el enlace a las restantes paginas de resultados, pero al clickar, la direccion asignada a la pagina 3 p.e.

http://www.dominio.com/buscador.php?...=3&criterio=¿?

Me sale que debo insertar alguna cadena para su busqueda, como si la variable $_POST['buscar'] del formulario estuviese vacia..

Por que pasa esto??

Puedes echarme una mano???

Última edición por Operadormail; 13/02/2008 a las 13:01
  #9 (permalink)  
Antiguo 23/06/2003, 11:53
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
Weno yo te dejo aki un sistema de paginacion que uso yo por si te kieres basar en ello:

Código PHP:
<?PHP
include("configuracion.php");
$connection mysql_connect($host$usuario$password) or die ("No se puede conectar con la base de datos"); 

$db mysql_select_db($base_de_datos$connection) or die ("No se puede seleccionar la base de datos"); 
$limit 25;  //aki el limite que tu kieres

$sqlcount"Select * From noticias ORDER BY date DESC";  //la consult apon la que tu kieras 

$sql_countresult mysql_query($sqlcount$connection) or die ("No se puede ejecutar la consulta"); 
$totalrows mysql_num_rows($sql_countresult); 

if(empty(
$page))

    
$page 1


$limitvalue1 $page*$limit-($limit); 
$sql         "Select * From noticias ORDER BY date DESC LIMIT $limitvalue1, $limit"
$sql_result  mysql_query($sql$connection) or die ("No se puede ejecutar la consulta"); 

while (
$row mysql_fetch_array($sql_result))


}

if(
$page != 1)

    
$pageprev$page 1

else


echo 
"<hr size=1 color=09215F width=95%>";
echo 
"<table border=0 cellpadding=0 cellspacing=0 width=99%><tr><td>";
echo 
"<font size=1 face=verdana color=FF9D02><b>P&aacute;gina :</b></font>";
$numofpages $totalrows/$limit

for(
$i1$i <= $numofpages$i++)

    echo 
"<font size=1 face=verdana><A HREF=\"noticias.php?page=$i\" class=NOTICIAS> $i </font></A>";  


if(
$totalrows%$limit != 0)

    echo 
"<font size=1 face=verdana><A HREF=\"noticias.php?page=$i\"> $i </font></A>"

echo 
"</td></tr></table>";

if((
$totalrows-($limit*$page)) > 0)

    
$pagenext $page 1


mysql_free_result($sql_result); 
mysql_close($connection); 
?>
Ya ves que es muy sencillo espero que te sirva de ayuda.
__________________
Usuario registrado de Linux #288725
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 09:24.