Foros del Web » Programando para Internet » PHP »

Buscador con paginacion

Estas en el tema de Buscador con paginacion en el foro de PHP en Foros del Web. Hola que tal un saludo!! espero esten bien y con mucho trabajo xD!! Los visito por una nueva pregunta... Describo un poco el proyecto: He ...
  #1 (permalink)  
Antiguo 26/08/2008, 16:27
Avatar de etzekiel  
Fecha de Ingreso: agosto-2008
Mensajes: 67
Antigüedad: 15 años, 8 meses
Puntos: 1
Buscador con paginacion

Hola que tal un saludo!! espero esten bien y con mucho trabajo xD!!

Los visito por una nueva pregunta...

Describo un poco el proyecto:
He creado un buscador con su paginador que haga consultas a los campos de una tabla y funciona ok pero si quiero que el campo de el form no quede en blanco empieza el problema.

Este es el form dentro del archivo buscador.php:
Código HTML:
<form action="buscador.php" method="post">
<input type="text" name="busqueda" class="descriptivo"/>
<input type="submit" name="submit" value="consulta" />
</form> 
El script dentro del archivo buscador.php donde esta el detalle :

Código PHP:
$busqueda $_POST['busqueda'];
echo
"<br><strong>ERROR!!</strong> Por favor introduzca un valor de busqueda. <br><span class=descriptivo>Please enter a value of search.</span>";
exit;

Si lo dejo asì sucede esto (caso pràctico):

Realizo una busqueda mmm... diseño!; aparecen los resultados que tengan la palabra diseño con su paginador 1 2 3 4 Siguiente>> si le doy click a 2 me aparece mi mensaje de ERROR! es decir porque reconoce a el campo de texto como vacio.

Si le quito el mensaje de ERROR! le doy click al boton buscar y me imprime toda la tabla con su paginador...

Alguna sugerencia de como resolver esto... Si no me dejo entender (raro) puedo dejarles el link real de el ejemplo.

Bueno de momento me despido esperando tengan un buen dìa gracias
  #2 (permalink)  
Antiguo 26/08/2008, 16:36
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Buscador con paginacion

Lo que pasa es que las variables provenientes de $_POST se pierden cuando vas a una 2da pagina (en el caso que la 1era sea en la cual muestras dicha variable).

Pasa las variables con GET o sino agrega el valor de $busqueda a una SESSION.
Yo te recomiendo hacerlo por GET.
  #3 (permalink)  
Antiguo 26/08/2008, 16:46
Avatar de etzekiel  
Fecha de Ingreso: agosto-2008
Mensajes: 67
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Buscador con paginacion

Gracias Ronruby ya he hecho eso que me dices de pasarlos por GET en lugar de POST y no me funciona...

Disculpa mi ignorancia como puedo agrega el valor de $busqueda a una SESSION

Muchas gracias
  #4 (permalink)  
Antiguo 26/08/2008, 16:52
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Buscador con paginacion

No seria muy recomendado hacerlo con SESSION ... pero aqui te va:
En la primera linea de codigo pones:
session_start(); //para iniciar la sesion

Luego le asignas el valor de busqueda a una variable de session:
$_SESSION['busqueda'] = $_POST['busqueda'];

Para llamar la variable en otra pagina, tienes siempre que iniciar la sesion, llamarla con $_SESSION['busqueda'] y ya esta.
Y para destruirla:
session_destroy();

Pero eso seria un problema para un sistema de busqueda.

Te recomiendo trates de hacerlo funcionar con GET.
Solo asegurate de que la variable de el GET este en todas los links de la paginacion para que no se pierda al pasar de pagina.
  #5 (permalink)  
Antiguo 26/08/2008, 17:00
Avatar de etzekiel  
Fecha de Ingreso: agosto-2008
Mensajes: 67
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Buscador con paginacion

Que rapidez!... apenas estaba leyendo eso de session para aplicarlo... juas! voy a seguir tus consejos para que "jale" en GET. gracias otra vez!
  #6 (permalink)  
Antiguo 27/08/2008, 11:15
Avatar de etzekiel  
Fecha de Ingreso: agosto-2008
Mensajes: 67
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Buscador con paginacion

Me van a patear!!! :o no he podido echar a andar este buscador... como quiero, he cambiado muchas veces el codigo y me sigue saliendo el mismo error.

De verdad que no es spam chequen: eutopika.com/paginacion.php

Aqui el script completo (tadavia algo burdo)... talvez este omitiendo algo:
Nota:todo esta en archivo llamado: paginacion.php
Código PHP:
<?php
function conectar() 

    
$base_de_datos "busqueda";
    
$db_usuario "admin"
    
$db_password "xxxxxxxxx"
   
    if (!(
$link mysql_connect("localhost"$db_usuario$db_password))) 
    { 
        echo 
"Error conectando a la base de datos."
        exit(); 
    } 
    if (!
mysql_select_db($base_de_datos$link)) 
    { 
        echo 
"Error seleccionando la base de datos."
        exit(); 
    } 
    return 
$link


$db conectar();

//numero de registros
$registros 3;

$pagina $_GET["pagina"];
if (!
$pagina) { 
    
$inicio 0
    
$pagina 1

else { 
    
$inicio = ($pagina 1) * $registros

?>
Código HTML:
<html>
<body>
<form action="paginacion.php" method="GET">
<input type="text" name="busqueda" class="descriptivo"/>
<input type="submit" name="submit" value="consulta" />
</form> 
Código PHP:
<?php
$busqueda 
$_GET['busqueda'];
if(!
$busqueda)
{
echo
"<br><strong>ERROR!!</strong> Por favor introduzca un valor de busqueda. <br><span class=descriptivo>Please enter a value of search.</span>";
exit;
}
//se realiza consulta
$resultados mysql_query("SELECT * FROM clientes WHERE nombre LIKE '%".$busqueda."%' OR descripcion LIKE '%".$busqueda."%'");
$total_registros mysql_num_rows($resultados); 
echo 
"<p>Resultados encontrados:".$total_registros."</p>";
$resultados mysql_query("SELECT * FROM clientes WHERE nombre LIKE '%".$busqueda."%' OR descripcion LIKE '%".$busqueda."%' LIMIT $inicio, $registros");        
$total_paginas ceil($total_registros $registros);                       

if(
$total_registros) {
    
while(
$clientes=mysql_fetch_array($resultados)) {
echo 
"<font color='#666666'>".$clientes["nombre"]."</font><br>";
echo 
"<font color='#666666'>".$clientes["descripcion"]."</font><br>";
echo 
"<font color='#666666'>".$clientes["direccion"]."</font><br><br>";
            }
} else {
echo 
"<font color='darkgray'>(sin resultados)</font>";
}
mysql_free_result($resultados);                
if(
$total_registros) {

//se muestran la paginacion
echo "<center>";
if((
$pagina 1) > 0) {
echo 
"<a href='paginacion.php?pagina=".($pagina-1)."'><< Anterior</a> ";
}
for (
$i=1$i<=$total_paginas$i++){ 
if (
$pagina == $i
echo 
"<b>".$pagina."</b> "
else
echo 
"<a href='paginacion.php?pagina=$i'>$i</a> "
}
if((
$pagina 1)<=$total_paginas) {
echo 
" <a href='paginacion.php?pagina=".($pagina+1)."'>Siguiente >></a>";
}
echo 
"</center>";
}
?>
</body>
</html>
Cualquier cosa que me suguieran estaria de lujo!!! gracias
  #7 (permalink)  
Antiguo 27/08/2008, 11:28
 
Fecha de Ingreso: mayo-2007
Mensajes: 49
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Buscador con paginacion

Te recomiendo que continues usando el metodo POST, una cosa mas, utiliza las sessiones eso debe de mantener viva tu variable. yo lo dejaria algo asi:

Código:
<?php
session_start();
if(!empty($_POST['busqeuda'])){
$_SESSION['busqueda'] = $_POST['busqueda'];
}
$busqueda = $_SESSION['busqueda']; 
if(empty($busqueda)) 
{ 
echo"<br><strong>ERROR!!</strong> Por favor introduzca un valor de busqueda. <br><span class=descriptivo>Please enter a value of search.</span>"; 
exit; 
}else{
.
.
.  

Tambien es te recomendaria mucho orientarlo a objetos, creando classes para cada funcion y manejo de objetos, programarlo en capas te ayudaria bastante.
  #8 (permalink)  
Antiguo 27/08/2008, 17:39
Avatar de etzekiel  
Fecha de Ingreso: agosto-2008
Mensajes: 67
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Buscador con paginacion

Muchas gracias user86 y Ronruby por su sabiduria; me quede estancado con lo de session_start(); pero ya todo resuelto... la cosa era que debia ejecutarlo antes de cualquier salida html... jajaja

Una última pregunta; anteriormente podia vincular los resultados de esta forma:
Código PHP:
echo "<a href>http://$row[]target=_self>".$clientes["nombre"]."</a>"
Por motivos de spam no pude poner la linea completa en: [ ], aquí esta el campo url de mi bd

Ahora ya no puedo vincular, me aparece este mensaje:
ALERTA la URL no es valida y no puede ser cargada

Alguna sugerencia... ? de todas formas sigo en la batalla!
  #9 (permalink)  
Antiguo 01/09/2008, 08:19
Avatar de luinux22  
Fecha de Ingreso: julio-2008
Mensajes: 28
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Buscador con paginacion

tuve el mismo problema y lo resolvi utilizando un archivo intermedio entre form_search.php y result_search.php lo llame middle_search.php (por ej.)

el primero es el q tiene el formulario con metodo POST el segundo recibe el valor y lo reenvia al tercero por GET el tercero recibe el valor lo evalua y muestra los resultados paginados por GET.-
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 23:10.