Foros del Web » Programando para Internet » PHP »

Filtrar busqueda en base de datos

Estas en el tema de Filtrar busqueda en base de datos en el foro de PHP en Foros del Web. Hola a [email protected]: Estoy haciendo una web con php y mysql.Resulta que quiero hacer una busqueda de publcaciones para un grupo de investigación.Tengo un formulario ...
  #1 (permalink)  
Antiguo 19/10/2004, 10:53
 
Fecha de Ingreso: octubre-2003
Mensajes: 146
Antigüedad: 14 años, 1 mes
Puntos: 1
Filtrar busqueda en base de datos

Hola a [email protected]:

Estoy haciendo una web con php y mysql.Resulta que quiero hacer una busqueda de publcaciones para un grupo de investigación.Tengo un formulario con 5 lista despegables.Cada una de la listas tendrá la opción de poder elegir cualquiera o una selección específica.Por ejemplo,la primera lista es autores que por defecto está seleccionado todos pero también podremos elegir las publicaciones de un cierto autor.Así con las otras cuatro listas restantes.Llevo varios días intentando resolver el problema que tengo pero aún no consigo dar con la tecla.Mi problema es el siguiente: supongamos por ejemplo que un visitante de mi web quiere hacer una búsqueda y selecciona en la primera lista todos los autores y en la tercera lista de cualquier fecha y las demas listas selecciona algo en concreto.Lógicamente la elección que haga el visitante servirá para filtrar la búsqueda en una tabla de la base de datos.Lo que no sé es al hacer el submit cómo controlar que ha seleccionado unas cosas u otras y hacer un select en la base de datos.He pensado guardar los valores en una array y demás pero no sé rematar la idea.Yo sé que los valores de la listas están en la etiqueta value lógicamente pero cómo puedo almacenar lo que ha seleccionado el visitante y en función de esto aplicar un select u otro a la base de datos.

¿Me habéis entendido?En resumen,es hacer una búsqueda en una tabla de la base de datos en función de una elección de listas despegables a través de un formulario pero con el problema que anteriormente he mencionado.

Espero que alguien me pueda ayudar,he visto algunas webs que tienen esta función así que espero que alguien pueda pasarme el código si lo tiene o que me oriente cómo hacerlo.Sin más me despido esperando alguna respuesta,muchas gracias anticipadas y un saludo
__________________
·۰•●Pi®®ili●•۰· Lo esencial es invisible a los ojos

Última edición por pirrilon; 19/10/2004 a las 10:54
  #2 (permalink)  
Antiguo 19/10/2004, 11:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En principio .. tus selecciones de elementos de tu formulario o resto de campos del formulario HTML los recibes en PHP ante tu "submit" del formulario como variables por el método que indiques (GET o POST en el "method") y en el script que indiques en el "action".

Esto no se trata de tomar "eventos" .. pues no es javacript .. todo lo que haces con PHP implica que "envies/llames" a cierto script PHP que será el que tome esas variables que reciba y las procese.

<select name="nose">
<option value="1">uno</option>
<option value="2">dos</option>
</select>

(de HTML)
De la selección de esa lista .. seleccionas una opción .. la cual la recibirá PHP bajo el nombre del "name" que uses:

$_POST['nose']

(suponiendo que usastes method="POST" en tu formulario) .... Con esa variable ya puedes hacer tu consulta SQL correspondiente.

$sql="SELECT * FORM tabla WHERE campo_De_tu_tabla='".$_POST['nose']."'";

SI necesitas más condiciones para tu sentencia SQL .. las añades con los operadores lógicos AND/OR según requieras.

Un saludo,
  #3 (permalink)  
Antiguo 19/10/2004, 12:12
 
Fecha de Ingreso: octubre-2003
Mensajes: 146
Antigüedad: 14 años, 1 mes
Puntos: 1
Gracias por tu respuesta Cluster.

Tu respuesta está cerca de lo que quiero pero no exactamente.

Yo sólo quiero que aparezcan como condiciones de la sentencia select aquellas condiciones de entre las 5 listas elegidas y no la seleccion de las 5 listas,es decir,si por ejemplo elijo un autor concreto(primera lista de mi formulario) y fecha anterior a este año(tercera lista de mi formulario) sólo quiero que me aparezcan como condiciones del select where autor='$_POST['autor']' AND fechaanterior=$_POST['fechaanterior'] desechando las otras 3 listas que quedan de búsquedas ya que supuestamente el visitante eligió la opción todos y se desecha a la hora de buscar.

No sé si me he explicado bien,espero que sí.

Un saludo
__________________
·۰•●Pi®®ili●•۰· Lo esencial es invisible a los ojos
  #4 (permalink)  
Antiguo 19/10/2004, 13:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. en ese caso según parece esas 3 tablas (de tu BD) cumplen cierta relación o filtras por esas condiciones.

Si es así .. tendrás que hacer un "submit" (automático vía javacript) a cada selección de tu <select> para que puedas "enviar" la petición de la consulta nueva al servidor y este la procese. Un ejemplo para que veas como más o menos funciona lo que pretendes hecho en PHP integramente sería:

http://www.forosdelweb.com/f18/faqs-php-530600-post664999/

Otras soluciones podrías ver por el lado de javacript solventando el problema con datos fijos y de ahí usar PHP para generar esos arrays de javacript o elementos que uses desde PHP.

Un saludo,
  #5 (permalink)  
Antiguo 03/12/2004, 08:48
Avatar de davidrenzzo  
Fecha de Ingreso: enero-2004
Mensajes: 59
Antigüedad: 13 años, 10 meses
Puntos: 0
hola pirrilon teng un codigo q tal vez te pueda servir, aun lo estoy probando pero me funciona al menos escribiendome el select correcto segun elija las opciones de las listas desplegabes. te dejo mi msn [email protected]. Saludos
__________________
www.gradamedia.com
  #6 (permalink)  
Antiguo 03/12/2004, 09:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
davidrenzzo

Se agradece tu oferta del código . .pero sería ideal que lo pusieras aquí en el foro si no es muy extenso. Por último que los que deseen el código de davidrenzzo se contacten en privado para coordinar.

Un saludo,
  #7 (permalink)  
Antiguo 05/12/2004, 11:28
Avatar de davidrenzzo  
Fecha de Ingreso: enero-2004
Mensajes: 59
Antigüedad: 13 años, 10 meses
Puntos: 0
//En el siguiente arreglo ($arreglo) tenemos las variables capturadas por cada lista desplegable, suponiendo en este caso se tienen 5 listas, los valores "nada" son aquellas listas desplegables de las cuales no se eligio ningun valor//

<?
echo "<br>";
$arreglo = array("a","nada","nada","d","n");
$sw = 0;
echo "SELECT * FROM (TABLA) WHERE ";
for($i=0;$i<5;$i++)
{
if ($arreglo[$i+1]!="nada")
{
if($arreglo[$i]!="nada")
{
echo $arreglo[$i];
$sw=1;
if ($arreglo[$i+1]!="")
echo " AND ";
}
elseif($sw==1 AND $arreglo[$i+1]!="")
{
echo " AND ";
$sw=0;
}
}
elseif ($arreglo[$i]!="nada")
{
echo $arreglo[$i];
$sw=1;
}
}
?>

//ESPERO LE SIRVA A ALGUIEN
__________________
www.gradamedia.com
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 15:20.