Foros del Web » Programando para Internet » PHP »

consulta de busqueda

Estas en el tema de consulta de busqueda en el foro de PHP en Foros del Web. Hola a todos. Tenia un formulario con varias casillas de opcion en las que seleccionaba una de las multiples opciones para luego realizar un consulta ...
  #1 (permalink)  
Antiguo 24/11/2005, 14:47
 
Fecha de Ingreso: febrero-2004
Ubicación: Asturias
Mensajes: 171
Antigüedad: 20 años, 9 meses
Puntos: 0
consulta de busqueda

Hola a todos. Tenia un formulario con varias casillas de opcion en las que seleccionaba una de las multiples opciones para luego realizar un consulta en la base de datos:

Código PHP:
$_pagi_sql "SELECT * FROM astur WHERE ".$_GET["select"]." LIKE '%".$_GET["palabra"]."' ORDER BY ".$_GET["ord"]." ASC" 
donde se buscaba la palabra
Código PHP:
$_GET["palabra"
en un campo de la base de datos indicado por
Código PHP:
".$_GET["select"]." 
.

Ahora he decidido cambiar las casillas de opcion por casillas de verificacion, checkbox, con la posibilidad de que se puede buscar en varios campos, por lo que deberia modificar la consulta de arriba ya que
Código PHP:
".$_GET["select"]." 
puede tener ahora varios valores a la vez.
El problema es que no se cómo incluir esta posibilidad. Espero que me echeis una mano.
Saludos
  #2 (permalink)  
Antiguo 24/11/2005, 15:15
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 21 años, 4 meses
Puntos: 0
Entonces para cada checkbox marcado deberías añadir este fragmento a la consulta:

".$_GET["select"]." LIKE '%".$_GET["palabra"]."'

De manera que si tienes dos checkboxes la cosa quedará:

".$_GET["select"]." LIKE '%".$_GET["palabra"]."' or
".$_GET["select"]." LIKE '%".$_GET["palabra"]."'

Y si marcaron 3:

".$_GET["select"]." LIKE '%".$_GET["palabra"]."' or
".$_GET["select"]." LIKE '%".$_GET["palabra"]."' or
".$_GET["select"]." LIKE '%".$_GET["palabra"]."'

Entonces puedes hacer un bucle que recorra los checkboxes y para cada checkbox añades a la consulta un

".$_GET["select"]." LIKE '%".$_GET["palabra"]."' or

Ojo, si solo hay un chekbox no debes añadir el or

Ojo, en el caso de que hubiera varios checkboxes el último tampoco llevaría el or:

Código PHP:
$_pagi_sql="SELECT * FROM astur WHERE ";

for (
$i=0;$i<count($_GET['select'])-1;$i++){
      
$_pagi_sql.=$_GET["select[$i]"]." LIKE '%".$_GET["palabra"]."' or
}
$_pagi_sql.="
.$_GET["select[$i]"]." LIKE '%".$_GET["palabra"]."' ' ORDER BY ".$_GET["ord"]." ASC";

echo 
$_pagi_sql
Ojo, $_GET["select"] es un array que contiene los checkboxes seleccionados.

Así cuando construyas tus checkboxes en el nombre ponle a todos el mismo:

<input type="checkbox" name="select[]" value="campo1"></input>
<input type="checkbox" name="select[]" value="campo2"></input>


Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #3 (permalink)  
Antiguo 24/11/2005, 16:29
 
Fecha de Ingreso: febrero-2004
Ubicación: Asturias
Mensajes: 171
Antigüedad: 20 años, 9 meses
Puntos: 0
muchas gracias por tu respuesta, pero me estoy volviendo loco con alguna comilla que está mal puesta o sobra ya que no se cierra la llave del for correctamente.

Código PHP:
 for ($i=0;$i<count($_GET['select'])-1;$i++){
                          
$_pagi_sql.=$_GET["select[$i]"]." LIKE '%".$_GET["palabra"]."' or
                      }
                          $_pagi_sql.="
.$_GET["select[$i]"]." LIKE '%".$_GET["palabra"]."%' ' ORDER BY ".$_GET["ord"]." ASC"
  #4 (permalink)  
Antiguo 25/11/2005, 05:05
 
Fecha de Ingreso: febrero-2004
Ubicación: Asturias
Mensajes: 171
Antigüedad: 20 años, 9 meses
Puntos: 0
con esto:
Código PHP:
          if ($_GET["campo"]=="contiene") {
                
$_pagi_sql="SELECT * FROM astur WHERE ";
                for (
$i=0;$i<count($_GET['select'])-1;$i++){
                    
$_pagi_sql.="".$_GET["select[$i]"]." LIKE '%".$_GET["palabra"]."' or"
                  }
                  
$_pagi_sql.="".$_GET["select[$i]"]." LIKE '%".$_GET["palabra"]."'' ORDER BY ".$_GET["ord"]." ASC";
echo 
$_pagi_sql;
               
      } 
me sale el siguiente mensaje de error:
Notice: Undefined index: select[0] in C:\sokkit\site\asturnatura\Consultas\rbuscador.php on line 137

Notice: Undefined index: select[1] in C:\sokkit\site\asturnatura\Consultas\rbuscador.php on line 139
SELECT * FROM astur WHERE LIKE '%dori' or LIKE '%dori'' ORDER BY Especie ASCYou have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIKE '%dori' or LIKE '%dori'' ORDER BY Especie ASC' at line 1

sabe alguien a que se debe?
  #5 (permalink)  
Antiguo 26/11/2005, 03:54
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 21 años, 4 meses
Puntos: 0
Para acceder al array prueba así:

$_GET['select'][$i]

y no $_GET["select[$i]"]

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
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 13:02.