Foros del Web » Programando para Internet » PHP »

Variable no definida en una busqueda filtrada

Estas en el tema de Variable no definida en una busqueda filtrada en el foro de PHP en Foros del Web. Hola amigos/as, que tal, a ver si me pueden ayudar con esto: Tengo un codigo , osea un buscador, yo le meto una palabra en ...
  #1 (permalink)  
Antiguo 20/09/2015, 03:48
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Variable no definida en una busqueda filtrada

Hola amigos/as, que tal, a ver si me pueden ayudar con esto:

Tengo un codigo , osea un buscador, yo le meto una palabra en el input y me busca en la bbdd y con dos filtros en forma de checkbox puedo filtrar dichas busquedas.

Y lo hace bien pero ... me da un mensaje de aviso que no logro saber como quitar.
dicho de otra forma si busco un producto ejem: "coches", y sabiendo que los dos filtros que tengo son : novedad" y "oferta", pues si elijo "oferta", me muestra la lista de resultados correspondiente.

Pero me sale un mensaje como que la variable de "novedad", osea el filtro no seleccionado, esta "indefinided".

Y no se como solucionar esto:

Lo pondré con código:


Código HTML:
Ver original
  1. <form action="" method="" name="formulario_buscar" id="formulario_buscar">
  2.                        
  3.                             <input type="text" name="buscar" id="buscar" class="input_buscador"  placeholder="Buscar...">
  4.                            
  5.                             <br>
  6.                            
  7.                             <select name="el_nombre_tabla" id="nombre_tabla">  
  8.                                  
  9.                               <option value="tienda_galeria_1">tienda galería 1</option>
  10.                               <option value="tienda_galeria_2">tienda galería 2</option>
  11.                              
  12.                             </select>    
  13.                            
  14.                             <br>
  15.                            
  16.                             <input type="checkbox" name="novedad" value="novedad" id="novedad"> Novedad<br>
  17.                            
  18.                             <input type="checkbox" name="oferta" value="oferta" id="oferta"> Oferta<br>    
  19.  
  20.  
  21.                             <input type="submit" name="lupa" id="lupa" value="">
  22.                        
  23.                         </form>



Código PHP:
Ver original
  1. class ClaseDatosBusqueda
  2.        
  3.         {          
  4.             public function DatosBusqueda($nombre_tabla, $buscar, $filtro_novedad, $filtro_oferta)
  5.            
  6.                 {                                      
  7.               echo $sql = "SELECT * FROM " . $nombre_tabla . "
  8.                    
  9.                     WHERE
  10.                    
  11.                     (titulo like '%".$buscar."%' OR caracteristicas LIKE '%".$buscar."%')
  12.                    
  13.                     AND
  14.  
  15.                     estado='".$filtro_novedad."' OR
  16.                    
  17.                     estado='".$filtro_oferta."'
  18.  
  19.                     ORDER BY visitas DESC";
  20.                    
  21.                    
  22.                     //$con = $this->ConectarBbdd();
  23.                    
  24.                     $con = new Conectar();             
  25.                     $link=$con->ConectarBbdd();
  26.                    
  27.                     $res = mysqli_query($link,$sql) or die ('Lo siento pero no selecciona los datos' . mysqli_error($link));
  28.                     return $res;   
  29.                 }
  30.         }
  31.                                
  32.  
  33.     $llamada_ClaseDatosBusqueda = new ClaseDatosBusqueda();
  34.  
  35.  
  36.  
  37.  
  38.  
  39.     $buscar = strtolower($_POST['buscar']);
  40.    
  41.     $nombre_tabla = strtolower($_POST['nombre_tabla']);
  42.  
  43.  
  44.  
  45. if (isset($filtro_novedad)) {
  46.     $filtro_novedad = strtolower($_POST['novedad']);
  47. } else {
  48.     $filtro_oferta = strtolower($_POST['oferta']);
  49. }


Y el mensaje que me da es:
Notice Undefined variable filtro_novedad in C:\xampp\htdocs\buscador.php on line 122
SELECT * FROM tienda_galeria_1 WHERE (titulo like '%coche%' OR caracteristicas LIKE '%blablabla%') AND estado='' OR estado='oferta' ORDER BY visitas DESC
  #2 (permalink)  
Antiguo 20/09/2015, 05:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Variable no definida en una busqueda filtrada

¿EN qué parte del código es que invocas al método DatosBusqueda() eh?

Porque ahí es donde cometes el error, pues tu código espera que todos los argumentos estén presentes.

Pero no es así, en tu lógica descartas una variable u otra: eso es parte del error, ¿o porque indicaste que todos los argumentos sean obligatorios si no es así?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 21/09/2015, 02:04
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: Variable no definida en una busqueda filtrada

Es evidente, que en mi codigo espere que todos los argumentos esten presentes u obligatorios.

Lo veo hasta yo que soy el que lo programó.

El problema es: que no se como hacer que si un argumento no es requerido, osea no es seleccionado con el checkbox, pues que no sea añadida a la consulta sql.

Eso es en lo que necesito ayuda.

Por que la busqueda me la hace bien, pero me da este mensaje de variable indefinida en la que no ha sido seleccionada. y claro no esta del todo bien.

POr cierto se me olvido poner esta linea que evidentemente existe por que sino no funcionaria:

Código PHP:
Ver original
  1. $res = $llamada_ClaseDatosBusqueda->DatosBusqueda($nombre_tabla, $buscar, $filtro_novedad, $filtro_oferta);

Última edición por mensajeescrito; 21/09/2015 a las 02:52

Etiquetas: busqueda, formulario, mysql, select, sql, tabla, variable
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 00:14.