Foros del Web » Programando para Internet » PHP »

Consulta de Paginacion de resultados

Estas en el tema de Consulta de Paginacion de resultados en el foro de PHP en Foros del Web. Hola, Estoy utilizando este codigo de paginacion, pero no funciona porque solo la primera pagina me muestra los resultados, pero cuando le doy link en ...
  #1 (permalink)  
Antiguo 08/09/2003, 21:36
 
Fecha de Ingreso: agosto-2003
Mensajes: 33
Antigüedad: 20 años, 7 meses
Puntos: 0
Pregunta Consulta de Paginacion de resultados

Hola,

Estoy utilizando este codigo de paginacion, pero no funciona porque solo la primera pagina me muestra los resultados, pero cuando le doy link en la pagina 2 me la muestra en blanco y << 1 2 >> tampoco lo muestra para navegar por las paginas, no se si las instrucciones las he puesto mal o si tengo que agregar otras sentencias que no se.
Quisiera que por favor me revisaran el codigo y me dijeran si en realidad no funciona o me podrían recomendar un codigo que de verdad funcionará.
<?
if($buscar){
$Conn=mysql_connect("localhost","","");
mysql_select_db("trabajo",$Conn);
if($sec=="autor"){
if (!isset($pag)) $pag = 1; // Por defecto, pagina 1
$tampag = 10;
$reg1 = ($pag-1) * $tampag;
//Sentencia SQL
$sql="select * from resum where autor like '%$buscar%' ORDER BY titulo";
$result=mysql_query($sql,$Conn);
$total = mysql_num_rows($result);
if (mysql_num_rows($result)){
echo '<h4><b>RESULTADOS:</h4></b>';
echo '<table align="center" border="2">';
echo '<tr><td><b>REFERENCIA</b></td><td><b>TITULO</b></td>';
for ($i=$reg1; $i<min($reg1+$tampag, $total); $i++) {
mysql_data_seek($result, $i);
//Resultados
$row=mysql_fetch_array($result);
echo '<tr><td>'.$row["referencia"].'</td>';
echo '<td><a href="desplegar.php3?titulo='.urlencode($row["titulo"]).'">'.$row["titulo"].'</a></td>';
}
echo "</table> \n";
echo paginar($pag, $total, $tampag, "http://localhost/busca111.php3?pag=");
}
}
else
echo "¡ No se ha encontrado ningún registro !";
}
?>

<?
function paginar($actual, $total, $por_pagina, $enlace, $maxpags=0) {
$total_paginas = ceil($total/$por_pagina);
$anterior = $actual - 1;
$posterior = $actual + 1;
$minimo = $maxpags ? max(1, $actual-ceil($maxpags/2)): 1;
$maximo = $maxpags ? min($total_paginas, $actual+floor($maxpags/2)): $total_paginas;
if ($actual>1)
$texto = "<a href=\"$enlace$anterior\">&laquo;</a> ";
else
$texto = "<b>&laquo;</b> ";
if ($minimo!=1) $texto.= "... ";
for ($i=$minimo; $i<$actual; $i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
$texto .= "<b>$actual</b> ";
for ($i=$actual+1; $i<=$maximo; $i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
if ($maximo!=$total_paginas) $texto.= "... ";
if ($actual<$total_paginas)
$texto .= "<a href=\"$enlace$posterior\">&raquo;</a>";
else
$texto .= "<b>&raquo;</b>";
return $texto;
}
?>

Gracias por su ayuda
__________________
Patricia
  #2 (permalink)  
Antiguo 08/09/2003, 23:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si usas el buscador del foro por "paginacion" o "paginar" verás varías alternativas y mensajes para pagina consultas ..

En tu código sólo veo que asumes las variables (todas!!!) como globales .. he de deducir que usas register_globals a ON (en tu php.ini o phpinfo() lo puedes ver). Si está a OFF .. o mejor dicho acostumbrate a usar los arrays superglobales $_GET .. $_POST etc (en las FAQ's de este foro tienes más info. al respecto).

Tal vez no estés recogiendo las variables para hacer la propagación. Revisa ese punto editando o viendo que links genera tus nº de página y botones de navegación (links de navegacion <<>> )

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 12/09/2003, 19:18
 
Fecha de Ingreso: agosto-2003
Mensajes: 33
Antigüedad: 20 años, 7 meses
Puntos: 0
Pregunta

Hola,

Estoy utilizando la paginación de webexperto.com cambie el anterior porque hay mas información en este foro PHP del webexperto, he revisado la ayuda que le han proporcionado a otras personas y me he apoyado en ellas para ver los errores y las instrucciones, pero francamente no entiendo.
Deseo ayuda en:
1) He creado los if cuando se trabaja con varios campos, pero no funcionan (“NO realiza la búsqueda por campos”) ya que despliega todos los registros de la base de datos. Estoy utilizando un formulario que contiene un input y un select que contiene 5 campos, no se como unir estas dos para que me realice la búsqueda a través de una sentencia SQL y que me realice la paginación. No se si me he dado a entender.

2) Y en la paginación me da que en la primera pagina que es 0 me sale bien la paginación con los 4 registros, pero cuando le doy pagina 1 para que me muestre los siguientes 4 registros me da el siguiente error:
You have an error in your SQL syntax near 'like '%%' where autor like '%%' where asesor like '%%' where materia like '%%' w' at line 1
Deseo que me revisen los $HTTP_GET_VARS para pasar los datos por URL porque creo que están mal declaradas o no las tengo bien, no se como hacerlas por más que leo las instrucciones de los demás, no las entiendo sinceramente y que variables pongo en los link porque no se que variables poner.
Les pido por favor que me ayuden porque ya no se que hacer, Muchas Gracias!!!

El formulario es el siguiente:

<form name="buscador" action="busca111.php3" method="get" target="content">
<p>Escriba su expresi&oacute;n de b&uacute;squeda</p>
<p align="center">
<input type ="text" name="buscar" size="35">
<select name="sec" size="1">
<option selected value="titulo">Todas</option>
<option value="autor">Autor</option>
<option value="asesor">Asesor</option>
<option value="materia">Materia</option>
<option value="temas">Temas</option>
</select>
<br>
<input type="submit" value="Buscar">
<input type="reset" value="Borrar"></p>
</form>

Aquí les envió el código completo PHP, Gracias Nuevamente.

Código PHP:
<?
<?
$base="trabajo";
$conn=mysql_connect("localhost","","");
mysql_select_db($base,$conn);

if (!isset($pg))
$pg = 0; // $pg es la pagina actual
$cantidad=4; // cantidad de resultados por página
$inicial = $pg * $cantidad;

$criterio="";
//A $criterio le paso el valor de buscar del formulario
if (isset($HTTP_GET_VARS["buscar"])) {
$criterio=$HTTP_GET_VARS["buscar"];
}

$sec=$HTTP_GET_VARS["sec"];

$condicion="";
if ($sec==$HTTP_GET_VARS["titulo"]) {
//Aqui comparo el valor del campo titulo con $criterio
$condicion.=" where titulo like '%$criterio%'";
}

if ($sec==$HTTP_GET_VARS["autor"]) {
$condicion.=" where autor like '%$criterio%'";
}

if ($sec==$HTTP_GET_VARS["asesor"]) {
$condicion.=" where asesor like '%$criterio%'";
}

if ($sec==$HTTP_GET_VARS["materia"]) {
$condicion.=" where materia like '%$criterio%'";
}

if ($sec==$HTTP_GET_VARS["temas"]) {
$condicion.=" where temas like '%$criterio%'";
}

if (''!==$condicion){
$condicion=substr($condicion,6);
}

//Sentencia SQL
$sql="select * from resum".$condicion." order by titulo limit $inicial,$cantidad";
$cad = mysql_db_query($base,$sql) or die (mysql_error());

$contar = "select * from resum".$condicion." order by titulo";
$contarok= mysql_db_query($base,$contar);
$total_records = mysql_num_rows($contarok);
$pages = ceil($total_records / $cantidad);

echo "<h4><b><i>RESULTADOS:</h4></b></i>";
echo "<br>";
echo "<table width='700' height='40' cellpadding='1' cellspacing='1' align='center' border='2'>";
echo "<tr>";
echo "<td height='30' align='center' bgcolor='#D7F2FF'><b>REFERENCIA</b></td>";
echo "<td height='30' align='center' bgcolor='#D7F2FF'><b>TITULO</b></td>";
echo "<td height='30' align='center' bgcolor='#D7F2FF'><b>AUTOR</b></td>";
echo "<td height='30' align='center' bgcolor='#D7F2FF'><b>A&Ntilde;O</b></td>";
echo "</tr>";

//Resultados
while($row=mysql_fetch_array($cad)){
echo '<tr><td bgcolor="#F0FAFF">'.$row["referencia"].'</td>';
echo '<td bgcolor="#F0FAFF"><a href="desplegar.php3?titulo='.urlencode($row["titulo"]).'" target="ventana" onclick="javascript:abreventana(this.href,this.tar get); return false;">'.$row["titulo"].'</a></td>';
echo '<td bgcolor="#F0FAFF">'.$row["autor"].'</td>';
echo '<td bgcolor="#F0FAFF">'.$row["anno"].'</td></tr>';
}

//else
// echo "¡ No se ha encontrado ningún registro !";

// Cerramos la conexión a la base
$conn=mysql_close($conn);

// Creando los enlaces de paginación
echo "<p>";
if ($pg <> 0)
{
$url = $pg - 1;
echo "<a href='busca111.php3?pg=".$url."&criterio=".$criter io."&sec=".$ec."'>&laquo; Anterior</a>&nbsp;";
}
else {
echo " ";
}

for ($i = 0; $i<$pages; $i++) {
if ($i == $pg) {
echo "<font face=Arial size=2 color=ff0000><b>&nbsp;$i&nbsp;</b></font>";
}
else {
echo "<a href='busca111.php3?pg=".$i."&criterio=".$criterio ."&sec=".$ec."'>".$i."</a>&nbsp;";
}
}

if ($pg < $pages) {
$url = $pg + 1;
echo "<a href='busca111.php3?pg=".$url."&criterio=".$criter io."&sec=".$ec."'>Siguiente &raquo;</a>";
}
else {
echo " ";
}
echo "</p>";
?>
__________________
Patricia
  #4 (permalink)  
Antiguo 13/09/2003, 17:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
2) .. El error que obtienes es porqué no estás propagando el valor de tu variable "$sec" .. Con tanto cambio de nombre que haces .. me perdí pero, revisa el código. Fijate bien donde generas el link de paginación .. ahí no está llegando el valor que debería tomar.

No sé que versión de PHP usas .. ni como tienes configurado la directiva (de tu php.ini -> phpinfo() lo puedes ver también): register_globals .. pero si está a OFF deberías usar $_GET ... $_POST arrays superglobales. (si usas PHP 4.1.0 o superior . recomendable que uses estas en lugar de $HTTP_xxx_xxx)


por otro lado .. usas:

Código PHP:
echo "<a href='busca111.php3?pg=".$i."&criterio=".$criterio."&sec=".$ec."'>".$i."</a> "

ahi se vé $ec .. ¿no sería $sec ? (en ninguna otra parte del código veo q definas ese valor de esa variable .. ) (puse esa línea de código .. en realidad son todas las referencias a $ec .. debería ser $sec )

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 13/09/2003, 20:23
 
Fecha de Ingreso: agosto-2003
Mensajes: 33
Antigüedad: 20 años, 7 meses
Puntos: 0
Información

Hola.

La version que estoy de PHP es 4.0.5. por lo tanto no se puede utilizar los $_GET y $_POS sino que los HTTP_xxx_VARS o no se si se podria utilizar.
Siempre me dan los mismos errores. me equivoque era $sec y no $ec fue un error.
Aqui envio nuevamente el codigo ya formateado espero que lo evaluen y me ayudan a como enlazar los 5 campos que componen el select y el input para realizar la busqueda de datos en la base de datos y a realizar la paginacion.

Saludos, Nuevamente las Gracias.


Código PHP:
<?
$base
="trabajo";
$conn=mysql_connect("localhost","","");
mysql_select_db($base,$conn);

if (!isset(
$pg))
$pg 0// $pg es la pagina actual
$cantidad=4// cantidad de resultados por página
$inicial $pg $cantidad;

$criterio="";
//A $criterio le paso el valor de buscar del formulario
if (isset($HTTP_GET_VARS["buscar"])) {
$criterio=$HTTP_GET_VARS["buscar"];
}

$sec=$HTTP_GET_VARS["sec"];

$condicion="";
if (
$sec=="titulo") {
//Aqui comparo el valor del campo titulo con $criterio
$condicion.=" where titulo like '%$criterio%'";
}
if (
$sec=="autor") {
$condicion.=" where autor like '%$criterio%'";
}
if (
$sec=="asesor") {
$condicion.=" where asesor like '%$criterio%'";
}
if (
$sec=="materia") {
$condicion.=" where materia like '%$criterio%'";
}
if (
$sec=="temas") {
$condicion.=" where temas like '%$criterio%'";
}
if (
''!==$condicion){
$condicion=substr($condicion,6);
}

//Sentencia SQL
$sql="select * from resum".$condicion." order by titulo limit $inicial,$cantidad";
$cad mysql_db_query($base,$sql) or die (mysql_error());

$contar "select * from resum".$condicion." order by titulo";
$contarokmysql_db_query($base,$contar);
$total_records mysql_num_rows($contarok);
$pages ceil($total_records $cantidad);

echo 
"<h4><b><i>RESULTADOS:</h4></b></i>";
echo 
"<br>";
echo 
"<table width='700' height='40' cellpadding='1' cellspacing='1' align='center' border='2'>";
echo 
"<tr>";
echo 
"<td height='30' align='center' bgcolor='#D7F2FF'><b>REFERENCIA</b></td>";
echo 
"<td height='30' align='center' bgcolor='#D7F2FF'><b>TITULO</b></td>";
echo 
"<td height='30' align='center' bgcolor='#D7F2FF'><b>AUTOR</b></td>";
echo 
"<td height='30' align='center' bgcolor='#D7F2FF'><b>A&Ntilde;O</b></td>";
echo 
"</tr>";

//Resultados
while($row=mysql_fetch_array($cad)){
echo 
'<tr><td bgcolor="#F0FAFF">'.$row["referencia"].'</td>';
echo 
'<td bgcolor="#F0FAFF"><a href="desplegar.php3?titulo='.urlencode($row["titulo"]).'" target="ventana" onclick="javascript:abreventana(this.href,this.target); return false;">'.$row["titulo"].'</a></td>';
echo 
'<td bgcolor="#F0FAFF">'.$row["autor"].'</td>';
echo 
'<td bgcolor="#F0FAFF">'.$row["anno"].'</td></tr>';
}

//else
//  echo "¡ No se ha encontrado ningún registro !";

// Cerramos la conexión a la base
$conn=mysql_close($conn);

// Creando los enlaces de paginación
echo "<p>";
if (
$pg <> 0)
{
$url $pg 1;
echo 
"<a href='busca111.php3?pg=".$url."&criterio=".$criterio."&sec=".$sec."'>&laquo; Anterior</a>&nbsp;";
}
else {
echo 
" ";
}

for (
$i 0$i<$pages$i++) {
if (
$i == $pg) {
echo 
"<font face=Arial size=2 color=ff0000><b>&nbsp;$i&nbsp;</b></font>";
}
else {
echo 
"<a href='busca111.php3?pg=".$i."&criterio=".$criterio."&sec=".$sec."'>".$i."</a>&nbsp;";
}
}

if (
$pg $pages) {
$url $pg 1;
echo 
"<a href='busca111.php3?pg=".$url."&criterio=".$criterio."&sec=".$sec."'>Siguiente &raquo;</a>";
}
else {
echo 
" ";
}
echo 
"</p>";
?>
__________________
Patricia
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 18:17.