Foros del Web » Programando para Internet » PHP »

problema con este buscador

Estas en el tema de problema con este buscador en el foro de PHP en Foros del Web. Hola que tal, yo de nuevo, lo que pasa es ke he venido armando un buscador con paginacion de diferentes codigos, y algo de logica ...
  #1 (permalink)  
Antiguo 17/02/2007, 07:44
 
Fecha de Ingreso: abril-2005
Mensajes: 253
Antigüedad: 19 años, 7 meses
Puntos: 0
problema con este buscador

Hola que tal, yo de nuevo, lo que pasa es ke he venido armando un buscador con paginacion de diferentes codigos, y algo de logica aplicada por mi mismo..
Solamente ke me hace falta corregir un error.
Y pues el error esta que al hacer una consulta limitada a 5 resultados por pagina, la primer pagina si me la muestra bien, pero al momento de seguir a la siguiente pagina ya no me muestra los datos del resultado de consulta. Sino que me muestra todos los datos de la base de datos en forma limitada a 5 resultados.
Y otro problema es ke si me muestra solo un resultado, me sigue mostrando la lista de paginacion para pasar a los siguientes resultados, cuando no deberia de haber mas enlaces porque solo es un resultado.
Este es el codigo:
Código PHP:
<?

//conecto con la base de datos
$conn mysql_connect("localhost","root",""); 
//seleccionamos la base de datos
mysql_select_db("xrjs",$conn);

 

$id=$_GET['id'];// Si existe la variable "id" en la barra url...
if (!isset($_GET['id'])) {
$pag 1// Por defecto, pagina 1
} else {
$pag $_GET['id']; // Página actual
}

// Obtiene todos los registros de la tabla
$resultid mysql_query("SELECT COUNT(*) FROM catalogo",$conn);
list(
$total) = mysql_fetch_row($resultid);
// Número de registros por página
$tampag 5;
// Calcula el rango de los registros
$reg1 = ($pag-1) * $tampag;
// Obtiene los registros en el rango correspondiente
$resultid mysql_query("SELECT id,producto,numero_producto,foto,contado FROM catalogo WHERE producto LIKE '%$palabra%' OR detalles LIKE '%palabra%' ORDER BY id desc"$conn);

// Imprime todos los registros de la página
$lista_colores=array('GreenYellow','Gainsboro','GreenYellow','Cornsilk','Gainsboro','GreenYellow','Gold');
$num_colores=7;
$indice=1
if (
mysql_num_rows($resultid)){
while (
$row = @mysql_fetch_array($resultid)) {
    
$color=$lista_colores[$indice $num_colores]; 
//Tablas de resultados
echo "<p align=center>";
echo 
"<table style='WIDTH: 720px; HEIGHT: 97px' border='0' bgColor='$color' .centrado[class]>";
echo 
"<TBODY>";
echo 
"<TR>";
echo 
"<TD>";
echo 
"<P align='center'><img src='fotos/".$row["foto"]."' width='90px' height='90px' align='left''>";
echo 
"<p align><P align=center><STRONG><FONT face=Arial Black >".$row['producto']."</STRONG></p>";
echo 
"<P align='left'>".$row["numero_producto"]."</a></p>";
echo 
"<P align='left'>".$row["numero_articulo"]."</a></p>";
echo 
"<P align='center'><FORM name=form1 action='detalles?id=".$row["id"]."' method=post><INPUT type=submit value='Ver detalles' name=detalles></p></form></td></tr>";
$indice++; 
}
echo 
"</table>";
}
else echo 
"¡No se encontró ningún registro!";

/* Función para paginación
* $actual - página actual
* $total - total de registros
* $reg_pagina - registros por página
* $link - enlace para la siguiente página
* Devuelve la cadena HTML de paginación
*/

function paginar($actual$total$reg_pagina$link) {
$total_paginas ceil($total/$reg_pagina);
$anterior $actual 1;
$posterior $actual 1;
if (
$actual>1)
$texto "<a href='$link$anterior'>Anterior</a> ";
else
$texto "<b>Ver pagina:</b> ";
for (
$i=1$i<$actual$i++)
$texto .= "<a href='$link$i'>$i</a> ";
$texto .= "<b>$actual</b> ";
for (
$i=$actual+1$i<=$total_paginas$i++)
$texto .= "<a href='$link$i'>$i</a> ";
if (
$actual<$total_paginas)
$texto .= "<a href='$link$posterior'>Siguiente</a>";
else
$texto .= "<b>»</b>";
return 
$texto;
}
// Pinta la cadena HTML de paginación
echo paginar($pag$total$tampag"muestracatalogo.php?id=");
?>

<?php

mysql_free_result
($resultid);

?>
__________________
:cool: aprendiz :cool:

Última edición por towi62; 17/02/2007 a las 16:25
  #2 (permalink)  
Antiguo 17/02/2007, 10:43
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 10 meses
Puntos: 9
Re: problema con este buscador

pero en q momento le indicas a la consulta que tiene que limitarse a 5 resultados?
  #3 (permalink)  
Antiguo 17/02/2007, 14:51
 
Fecha de Ingreso: abril-2005
Mensajes: 253
Antigüedad: 19 años, 7 meses
Puntos: 0
Re: problema con este buscador

pos eso ya lo hize pero como vi ke era inecesario por eso obte por no ponerle la funcion LIMIT a la sentencia sql:
Y se lo ponia asi:
Código PHP:
$resultid mysql_query("SELECT id,producto,numero_producto,foto,contado FROM catalogo WHERE producto LIKE '%$palabra%' OR detalles LIKE '%palabra%' ORDER BY id desc LIMIT $reg1, $tampag"$conn); 
Pero como vi que no funciono entonces declare una variable que me ayudara a limitar el resultado:
Código PHP:
$limite1;
$resultid mysql_query("SELECT id,producto,numero_producto,foto,contado FROM catalogo WHERE producto LIKE '%$palabra%' OR detalles LIKE '%palabra%' ORDER BY id desc LIMIT $limite"$conn); 
Pero ninguno de los dos funciono.
__________________
:cool: aprendiz :cool:

Última edición por towi62; 17/02/2007 a las 14:58
  #4 (permalink)  
Antiguo 17/02/2007, 16:42
 
Fecha de Ingreso: abril-2005
Mensajes: 253
Antigüedad: 19 años, 7 meses
Puntos: 0
Re: problema con este buscador

A mi parecer creo ke debo de ponerle una funcion que le diga a la paginacion que si no encontro mas resultados, que ya no muestre mas paginacion.
Pero eso no se como se hace. jejeje, alguien ke tenga alguna opinion.
Saludos
__________________
:cool: aprendiz :cool:
  #5 (permalink)  
Antiguo 18/02/2007, 18:06
 
Fecha de Ingreso: abril-2005
Mensajes: 253
Antigüedad: 19 años, 7 meses
Puntos: 0
Re: problema con este buscador

Ya solucione el problema muchas grasias de todas maneras
__________________
:cool: aprendiz :cool:
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 21:49.