Foros del Web » Programando para Internet » PHP »

buscador

Estas en el tema de buscador en el foro de PHP en Foros del Web. hola a todos, estoy en los finales del pryecto que tengo que desarrollar, me encuentro en la situacion que tengo que hacer un buscador y ...
  #1 (permalink)  
Antiguo 07/08/2014, 22:39
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
buscador

hola a todos, estoy en los finales del pryecto que tengo que desarrollar, me encuentro en la situacion que tengo que hacer un buscador y un filtro con un combobox..Utilizo pdo para el sistema, hasta el momento obtengo sin problemas el total de los avisos, pero me falla el buscador, tengo el codigo asi:

pagina que tiene el listado completo, y donde implementare la busqueda y el combobox:
Código PHP:
$aviso= new Avisos();


//Muestro todos los Datos en la pagina


if(isset($_POST['buscar'])){
    
//Invoco a la funcion buscar
    
$totalavisos=  count($avisos);
    
$aviso->buscarAviso();
    if(
$totalavisos == 0){
        echo 
"no hay resultadps";
    }else{
        
//aca no me cuadra que iria
    
}
    
}else{
    
//cargo por defecto los avisos
    
$avisos=$aviso->listadoAvisos();
    
$totalavisos=  count($avisos);

y en un archivo php tengo las funciones (insert, update,etc) y esta funcion para buscar:
Código PHP:
function buscarAviso(){
            
            
//variables para utilizar en la busqueda
            
            
$clave=$_POST['buscar'];
            
            
//Query para buscar por cod_aviso,correo_electronico,titulo_aviso,etc 
            //$query="SELECT * FROM avisos where cod_aviso LIKE '%$clave%' OR correo_electronico LIKE '%$clave%'";
            
            
$query="SELECT * FROM avisos WHERE cod_aviso LIKE '%$clave%' OR correo_electronico LIKE '%$clave%' OR titulo_aviso LIKE '%$clave%' OR comuna LIKE '%$clave%'";
           
            
//Preparar la consulta
            
$stmt=$this->con->prepare($query);
            
            
$stmt->bindParam(1,$clave,PDO::PARAM_STR);
            
            
//Ejecutar la Consulta
            
$stmt->execute();
            
            
//Obtengo el total de filas afectadas por la accion que se realiza
           
$res=$stmt->fetch();
            
            
/*while ($row=$stmt->fetch()){
               $this->datos[]=$row; 
            }
            //Retornamos los Valores
            return $this->datos;*/
            
            
            
        
}//funcion Buscar Aviso 
en el if creo que tengo el problema, la logica es que si presiono el boton buscar, me muestre si hay coincidencias, si no busco nada, que me carge todo por defecto, pero no me esta funcionando...lo mismo tengo que hacer con el combobox

Saludos y gracias a todos
  #2 (permalink)  
Antiguo 08/08/2014, 14:17
Avatar de Alexis88
Objetivista
 
Fecha de Ingreso: noviembre-2011
Ubicación: Lima, Perú
Mensajes: 5.433
Antigüedad: 8 años, 1 mes
Puntos: 933
Respuesta: buscador

Prueba pasándole al método buscarAviso el dato de $_POST['buscar'].

Código PHP:
Ver original
  1. $aviso->buscarAviso($_POST['buscar']);

Y en el método:

Código PHP:
Ver original
  1. function buscarAviso($clave){
  2.     $query = "SELECT * FROM avisos WHERE cod_aviso LIKE '%{$clave}%' OR correo_electronico LIKE '%{$clave}%' OR titulo_aviso LIKE '%{$clave}%' OR comuna LIKE '%{$clave}%'";
  3.     //El resto del código
  4. }

Saludos
__________________
«Laissez faire et laissez passer, le monde va de lui même»
  #3 (permalink)  
Antiguo 08/08/2014, 17:59
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: buscador

muchas gracias @Alexis88 por tu tiempo y por tu respuesta, modifique el codigo, me di cuenta que tenia un else de mas, hice los cambios que me recomendaste y al hacer la busqueda, no me da error pero tampoco me muestra ningun resultado ejeje, con modificaciones quedo asi:

Código PHP:
Ver original
  1. function buscarAviso($clave){
  2.            
  3.             //variables para utilizar en la busqueda
  4.            
  5.             $clave=$_POST['buscar'];
  6.            
  7.             //Query para buscar por cod_aviso,correo_electronico,titulo_aviso,etc
  8.             //$query="SELECT * FROM avisos where cod_aviso LIKE '%$clave%' OR correo_electronico LIKE '%$clave%'";
  9.            
  10.             $query="SELECT * FROM avisos WHERE cod_aviso LIKE '%{$clave}%' OR correo_electronico LIKE '%{$clave}%' OR titulo_aviso LIKE '%{$clave}%' OR comuna LIKE '%{$clave}%'";
  11.            
  12.             //Preparar la consulta
  13.             $stmt=$this->con->prepare($query);
  14.            
  15.             $stmt->bindParam(1,$clave,PDO::PARAM_STR);
  16.                        
  17.             //Ejecutar la Consulta
  18.             $stmt->execute();
  19.            
  20.             //Obtengo el total de filas afectadas por la accion que se realiza
  21.            $res=$stmt->fetch();
  22.            
  23.             while ($row=$stmt->fetch()){
  24.                $this->datos[]=$row;
  25.             }
  26.             //Retornamos los Valores
  27.             return $this->datos;
  28.            
  29.            
  30.            
  31.         }//funcion Buscar Aviso

y en la pagina donde esta el form de busqueda:
Código PHP:
Ver original
  1. $aviso= new Avisos();
  2.  
  3.  
  4. //Muestro todos los Datos en la pagina
  5.  
  6.  
  7. if(isset($_POST['buscar'])){
  8.     //Invoco a la funcion buscar
  9.    
  10.     $avisos=$aviso->buscarAviso($_POST['buscar']);
  11.    
  12. }else{
  13.          //cargo por defecto los avisos
  14.     $avisos=$aviso->listadoAvisos();
  15.     $totalavisos=count($avisos);
  16.     }
  17.  
  18. ?>
  19.  
  20. <!DOCTYPE html>
  21. <!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
  22. <!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
  23. <!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
  24. <!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
  25. <head>
  26.     <meta charset="utf-8">
  27.     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  28.     <title>Plataforma de Avisos Gratuitos.- ChiloeAvisos</title>
  29.     <!--<meta name="viewport" content="width=device-width, initial-scale=1">-->
  30.         <link rel="stylesheet" href="css/normalize.min.css">
  31.         <link rel="stylesheet" href="css/bootstrap.css">
  32.         <link rel="stylesheet" href="css/main.css">
  33.         <script src="js/vendor/modernizr-2.6.2.min.js"></script>
  34. </head>
  35.  
  36. <body>
  37. <!--Contenedor Principal-->
  38. <div class="container">
  39.  
  40.     <div class="row">
  41.         <h3 class="text-center">Avisos Publicados</h3>
  42.         <p class="text-right alert-info">Tenemos <strong><?php echo $totalavisos; ?> </strong> avisos publicados
  43.          en nuestra Base de Datos</p>
  44.     </div>
  45.    
  46.     <!--Busqueda y Filtros-->
  47.     <div class="row">
  48.         <section class="col-lg-4 buscadorAvisos">
  49.             <form method="POST" id="search" class="form-inline" action="">
  50.                 <label for="buscador">Titulo del Aviso:</label>
  51.                 <input type="text" name="buscador" class="form-control"/>
  52.                 <input type="submit" class="btn btn-default" name="buscar" value="Buscar"/>
  53.             </form>
  54.         </section>
  55.        
  56.         <section class="col-lg-8">
  57.         Filtros de Busqueda
  58.         </section>
  59.        
  60.     </div><!--Fin Busqueda y Filtros-->
  61.    
  62.     <!--Presentación de Avisos-->
  63.     <div class="row">
  64.        
  65.         <!--Avisos-->
  66.         <?php foreach($avisos as $row)
  67.             {
  68.                 echo "<article class='col-lg-12 listadoAvisos'>";
  69.        
  70.         echo "<div class='col-lg-5 imagenListaAviso'>";
  71.                     if($row['img1']==NULL){
  72.             echo "<img src='img/noimage.jpg'  class='img-rounded' />";
  73.             }else{
  74.                                 echo "<img src=".$row['img1']." height='200px' width='350px' />";}
  75.         echo "</div>";
  76.        
  77.                 //contenido
  78.             echo "<div class='col-lg-6 text-left contenidoListaAviso'>";
  79.                
  80.         //Titulo del Aviso
  81.         echo "<h3 class='text-center'>".$row['titulo_aviso']."</h3>";
  82.         //Parrafo parte Aviso
  83.         echo "<p class='text-justify'>".$row['aviso_completo']."</p>";
  84.         //Fecha de Publicación
  85.         echo "<p class='text-justify'>".$row['fecha_publicacion']."</p>";
  86.         //Categoria
  87.         echo "<p class='text-justify'>".$row['categoria_aviso']."</p>";
  88.         //Boton Leer Aviso Completo
  89.         echo "<a class='text-center btn btn-info' href='detalleaviso.php?cod_aviso=".$row['cod_aviso']."'>Ver Aviso</a>";
  90.                
  91.                 echo "</div>";
  92.                                                  
  93.                 echo "</article>";
  94.        
  95.                 }?>
  96.        
  97.                 </div>

saludos y gracias por la ayuda
  #4 (permalink)  
Antiguo 08/08/2014, 21:59
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: buscador

hice un nuevo cambio:
Código PHP:
Ver original
  1. function buscarAviso(){
  2.            
  3.             //variables para utilizar en la busqueda
  4.            
  5.             $clave=$_POST['buscar'];
  6.            
  7.             //Query para buscar por cod_aviso,correo_electronico,titulo_aviso,etc
  8.             //$query="SELECT * FROM avisos where cod_aviso LIKE '%$clave%' OR correo_electronico LIKE '%$clave%'";
  9.            
  10.             $query="SELECT * FROM avisos WHERE cod_aviso LIKE '%$clave%' OR correo_electronico LIKE '%$clave%' OR titulo_aviso LIKE '%$clave%' OR comuna LIKE '%$clave%'";
  11.            
  12.             //Preparar la consulta
  13.             $stmt=$this->con->prepare($query);
  14.            
  15.             $stmt->bindParam(1,$clave);
  16.                        
  17.             //Ejecutar la Consulta
  18.             $stmt->execute();
  19.             if (!$stmt->rowCount() == 0) {
  20.                
  21.             while ($row=$stmt->fetch()){
  22.                $this->datos[]=$row;
  23.             }
  24.             //Retornamos los Valores
  25.             return $this->datos;
  26.             }
  27.                
  28.        else {
  29.             echo 'Nothing found';
  30.         }

el tema es que de la forma que busque me dice que no hay resultados ejeje
  #5 (permalink)  
Antiguo 09/08/2014, 01:31
Avatar de Alexis88
Objetivista
 
Fecha de Ingreso: noviembre-2011
Ubicación: Lima, Perú
Mensajes: 5.433
Antigüedad: 8 años, 1 mes
Puntos: 933
Respuesta: buscador

Imprime el valor de $query y ejecútalo en tu gestor de bases de datos, que probablemente sea el phpMyadmin. Si algo falla, lo sabrás en el mensaje de error que probablemente se produzca al ejecutar la sentencia.

Saludos
__________________
«Laissez faire et laissez passer, le monde va de lui même»
  #6 (permalink)  
Antiguo 09/08/2014, 14:01
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: buscador

hola nuevamente, mira imprimo el valor de query y me saleasi:

SELECT * FROM avisos WHERE cod_aviso LIKE '%Buscar%' OR correo_electronico LIKE '%Buscar%' OR titulo_aviso LIKE '%Buscar%' OR comuna LIKE '%Buscar%'Nothing found

ahora, silo pego en phpmyadmin me aparece:
Código PHP:
Ver original
  1. MySQL ha devuelto un conjunto de valores vacío (es decir: cero columnas). (La consulta tardó 0.0000 seg)
  2. SELECT * FROM avisos WHERE cod_aviso LIKE '%Buscar%' OR correo_electronico LIKE '%Buscar%' OR titulo_aviso LIKE '%Buscar%' OR comuna LIKE '%Buscar%'

o sea que no da error, pero la busqueda no arroja resultados, en todo me tira not found...y l ootro que noto es que esta tomando como paramtero de busca '%buscar%' cuando deveria ser $clave logicamente cierto?

Etiquetas: Ninguno
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 20:28.