Foros del Web » Programando para Internet » PHP »

Buscador php con varios criterios no funciona

Estas en el tema de Buscador php con varios criterios no funciona en el foro de PHP en Foros del Web. Buenas noches compañeros!! Espero que esteis bien! Bueno.... Tengo un problema (aparte de mi jaja). He creado un formulario de búsqueda con 2 input de ...
  #1 (permalink)  
Antiguo 09/08/2011, 17:39
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Buscador php con varios criterios no funciona

Buenas noches compañeros!! Espero que esteis bien!

Bueno.... Tengo un problema (aparte de mi jaja). He creado un formulario de búsqueda con 2 input de texto y 2 select que están anidados.

El código es el siguiente:

Código HTML:
<form id="busqueda_avanzada" class="appnitro"  method="get" action="php/resultados/resultados.php">

<label class="description" for="element_1">Búsqueda por palabra </label>
<input name="frase"  type="text" maxlength="255" value="<?php echo $_GET['frase']; ?>"/>

<label >Provincia </label>
<select  name="provincia"  disabled="disabled">
<option value="0">--Elige una provincia--</option>
</select>

<label>Población </label>
<select  name="poblacion"  disabled="disabled">
<option value="0">--Elige una población--</option>
</select>

<label>Buscar por Código postal </label>
<input  name="cp"  type="text" maxlength="255" value=""/>

<input  type="submit" name="buscar" value="Buscar"  />
</form> 

y la página resultados.php
Código PHP:
<?php
// verificamos que el formulario halla sido enviado
if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar'){
    
$frase addslashes($_GET['frase']);
    
    
// hacemos la consulta de busqueda
    
$sqlBuscar mysql_query("SELECT * FROM profesionales, provincia, poblacion WHERE profesionales.provprof = provincia.idprovincia AND profesionales.pobprof = poblacion.idpoblacion  AND MATCH (nombreempresa, descripciongym) AGAINST ('$frase' IN BOOLEAN MODE) ORDER BY fechaingreso DESC"$conexion)
            
                              or die(
mysql_error());                              
    
$totalRows mysql_num_rows($sqlBuscar);
    
// Enviamos un mensaje
    // indicando la cantidad de resultados ($totalRows)
    // para la frase buscada ($frase)
    
if(!empty($totalRows)){
        echo 
stripslashes("<p>Se encontraron <strong>$totalRows</strong> resultado/s</p>");        
        
// mostramos los resultados
        
while($row mysql_fetch_array($sqlBuscar)){ 

       
//--------y aquí no lo muestro pero está toda la tabla para los registros a mostrar.-------

}
        
?>
Debido a mi inexperiencia.... no se como recoger la opción seleccionada en provincia y población y enviar la consulta....

Si alguien pudiese aclararme este aspecto...

Un gran saludo.

Y muchas gracias de antemano
  #2 (permalink)  
Antiguo 09/08/2011, 17:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Buscador php con varios criterios no funciona

Lee lo siguiente: http://www.php.net/variables.external, tienes que usar $_POST.

Saludos.
  #3 (permalink)  
Antiguo 10/08/2011, 09:15
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Buscador php con varios criterios no funciona

Hola "GatorV"! Gracias por tu respuesta!

Pues... he entrado al link que me dejaste... he hecho mil pruebas... pero no consigo nada... me da la sensación que ando muy muy perdido y que voy a palos de ciego...

El código que he puesto al principio, este:
Código PHP:
if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar'){ 
    
$frase addslashes($_GET['frase']); 
     
    
// hacemos la consulta de busqueda 
    
$sqlBuscar mysql_query("SELECT * FROM profesionales, provincia, poblacion WHERE profesionales.provprof = provincia.idprovincia AND profesionales.pobprof = poblacion.idpoblacion  AND MATCH (nombreempresa, descripciongym) AGAINST ('$frase' IN BOOLEAN MODE) ORDER BY fechaingreso DESC"$conexion
Resulta que este código lo copié y lo acoplé a mi código... me funciona perfectamente... pero no se como continuar para que me recoja la provincia y la población seleccionada y la busque entre mis registros de mi BD.

En el manual de PHP del link que me diste (Por cierto, muy útil) ya he consultado "intval" o "isset" cuales son sus funciones y aunque me queden claras... no se aplicarlos...

Siento mi ignorancia... lo hago lo mejor que sé.

Un saludo muy grande
  #4 (permalink)  
Antiguo 10/08/2011, 10:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Buscador php con varios criterios no funciona

Pues ya te dije como rescatar los valores, es cuestión de que los hagas, por ejemplo si tienes un select:
Código HTML:
Ver original
  1. <select name="provincia">
  2.        <option></option>

En PHP lo puedes leer:
Código PHP:
Ver original
  1. $provincia = $_GET['provincia']; // mismo nombre del select
  2. $query = "... AND provincia='$provincia'"; // etc.

Saludos.
  #5 (permalink)  
Antiguo 10/08/2011, 17:02
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Buscador php con varios criterios no funciona

Hola "GatorV", gracias nuevamente por tu respuesta.

Esta vez al indicarmelo más gráficamente me ha quedado muchos más claro y me ha servido para construir un nuevo código sabiendo que lo que hacia lo estaba haciendo correctamente (Si salie error sabía que no se trataba de esa parte del código).

No se si es un código como para tomar ejemplo, pero lo expongo por si a alguien le hace papel:

Código PHP:
//Hago la consulta a la BD e indico la relación entre campos
$sqlBuscar "SELECT * FROM profesionales, provincia, poblacion WHERE profesionales.provprof = provincia.idprovincia AND profesionales.pobprof = poblacion.idpoblacion AND profesionales.cp = poblacion.postal";
// verifico que el formulario halla sido enviado
if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar')
// #IF 1 (abro)
    
if (intval($_GET['provincia']) > 0
    { 
// #IF 2 (abro)
        
$sqlBuscar .= " AND profesionales.provprof= '" intval($_GET['provincia']) . "'";
    } 
// #IF 2 (Cierro)
    
if (intval($_GET['poblaciones']) > 0
    { 
// #IF 3 (abro)
        
$sqlBuscar .= " AND profesionales.pobprof='"intval($_GET['poblaciones'])."'";
    } 
// #IF 3 (Cierro)
    
if (isset($_GET['frase'])) 
    {  
// #IF 4 (abro)
        
$sqlBuscar .= " AND profesionales.nombreempresa LIKE '%" $_GET['frase'] . "%' "
    }  
// #IF 4 (Cierro)
    
if (isset($_GET['cp'])) 
    { 
// #IF 5 (abro)
        
$sqlBuscar .= " AND profesionales.cp LIKE '%" $_GET['cp'] . "%' "
    } 
// #IF 5 (Cierro)
    //Desde aquí empieza el código para mostrar un mensaje cuando no hayan registros en la consulta.
    
$resultado=mysql_query($sqlBuscar) or die (mysql_error()); 
    if (
mysql_num_rows($resultado)== 0
    { 
// #IF 6 (abro)
        
echo "No disponemos de registros con esos criterios de búsqueda."
    }
// #IF 6 (Cierro)
    //aquí finaliza el script de no hay registros.
}// #IF 1 (Cierro)
$sqlBuscar .= " ORDER BY profesionales.fechaingreso  ASC "// Indico el orden a seguir por el listado
$tabla mysql_query($sqlBuscar);
        while(
$row mysql_fetch_array($tabla))
        { 
// Empieza la repetición 
Este código busca por 4 criterios: Palabra o Frase, provincia, población y código postal. Se puede buscar por separado, es decir que ningún criterio es dependiente de otro, es decir si solo pongo una palabra en el input "frase", mostrará todos los registros que contengan esa palabra independientemente si son de Alicante o Valencia....

Por último volver a agradecer tu ayuda " GatorV".

Un saludo.

Etiquetas: buscador-php, combobox, mysql
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 23:31.