Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Construir Select con variables selectionadas de varios desplegables por Get

Estas en el tema de Construir Select con variables selectionadas de varios desplegables por Get en el foro de Mysql en Foros del Web. Hola amigos! Tengo un problemon de los grandes. Agradeceria algo de ayuda. Estoy creando un buscador con unos 8 desplegables estaticos y 1 dinamico enviando ...
  #1 (permalink)  
Antiguo 06/03/2012, 16:44
 
Fecha de Ingreso: mayo-2010
Mensajes: 50
Antigüedad: 13 años, 11 meses
Puntos: 0
Pregunta Construir Select con variables selectionadas de varios desplegables por Get

Hola amigos!
Tengo un problemon de los grandes.
Agradeceria algo de ayuda.
Estoy creando un buscador con unos 8 desplegables estaticos y 1 dinamico enviando los valores por GET. El problema viene que para construir el Select hacia la BBDD deveria comprovar que valores han sido selecionados y construir el select con esas variables para mostrar el resultado filtrado.

Ejemplo:

Tengo 3 desplegables: nombre - musica - tipo

Al selecionar 1 de esas variables y hacer clik en buscar deveria de mostrar los resultados con el valor seleccionado de esa variable. Pero... y si selecciona el usuario 2 o 3 variables?

Muestro lo que yo tengo hecho:

1- Script para variables GET en URL:

Código:
<script>
function submit() {
 var valor = document.busq.tipo.value;
 var valor1 = document.busq.musica.value;
 location.href = "index.php?tipo=" + valor + "&musica=" + valor1;
}
</script>
2- Buscador en php:

Código:
<form name="busq" action="" method="get">
  <p>Tipo:
    <select name="tipo" class="more" id="tipo" style="width: 160px;">
      <option value="" selected="selected">Selecciona</option>
      <option value="Pub">Pub</option>
      <option value="Discoteca">Discoteca</option>
      <option value="After">After</option>
      <option value="Cocteleria">Cocteleria</option>
      <option value="Festival">Festival</option>
    </select>
| Musica:
<select name="musica" class="more" id="musica" style="width: 160px;">
	<option value="" selected>Selecciona</option>
   <option value="De todo 1 poco">De todo 1 poco
 <option value="Solo pachanga">Solo pachanga
    <option value="Alternativo">Alternativo
      <option value="Heavy">Heavy
      <option value="Rock">Rock
      <option value="Pop">Pop
      <option value="House">House
      <option value="Electronica">Electronica
      <option value="Actual">Actual
    </select>
    <input type="submit" id="submit()" value="Enviar">
 </p>
<p align="center">
 <?php require 'busqueda.php'; ?>
</p>
</form>
3- Codigo para mostrar los resultados segun valores selecionados ('busqueda.php'):

Código:
<?php
require 'config.php';
$musica = $_GET['musica'];
$tipo = $_GET['tipo'];
if (isset($tipo) && isset($musica)) {
 $sql = "SELECT * FROM loquesea WHERE tipo = '".$tipo."' AND musica = '".$musica."' ORDER BY nivel DESC";
	  $result = mysql_query($sql) or die ('Error 07: ' . mysql_error());
 while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "".$line['tipo']." con ".$line['musica']."";
}
mysql_free_result($result);
}
else 
{
 $sql = "SELECT * FROM loquesea ORDER BY nivel DESC";
 $result = mysql_query($sql) or die ('Error 07: ' . mysql_error());
 while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "".$line['tipo']." con ".$line['musica']."";
}
mysql_free_result($result);
}
?>

Parece que funciona, pero... NO! Muestra LOS RESULTADOS QUE CONTIENEN tipo = '".$tipo." Y TAMBIEN LOS RESULTADOS QUE CONTIENEN musica = '".$musica."

Yo quiero que me muestre solo los resultados que contengan TODOS los valores selecionados por el usuario... Como demonios se hace eso?

Gracias. Si alguien que lo entienda pero le parezca muy complicado de explicar le interesa una compensacion economica, podria pensarmelo. Solo si de verdad lo entiende y save como hacerlo.. Gracias de todas formas chicos/as! Salu2
  #2 (permalink)  
Antiguo 06/03/2012, 16:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Construir Select con variables selectionadas de varios desplegables por Ge

Primer, trata de acordarte de las Normas del Foro de Base de Datos: Acá no se postean ni solucionan problemas de programación, por lo que todo lo de PHP y/o HTML está fuera de lugar, sin contar conque además no aporta nada a la solución.
Segundo, sería mejor que aclararas a qué "TODO" te refieres, porque la consulta que propones:
Código MySQL:
Ver original
  1. FROM loquesea
  2. WHERE tipo = '".$tipo."' AND musica = '".$musica."'
en realidad sí trae todo, pero con la condición de que ambos valores se ingresen. Ese es el sentido del AND: O las dos cosas o ninguna (eso es lógica proposicional, si no la has estudiado, te aconsejo que veas en Wikipedia).
Ahora bien, si lo que quieres es que con sólo uno de ambos valores (Tipo y Musica), se suficiente, eso se hace con OR, no con AND (de nuevo: lógica proposicional, en el OR es suficiente que uno sólo se de para que sea TRUE).
Pero lo que quieres es que la sentencia incluya una u otra opción, o múltiples, en función de una selección múltiple, te convendrá trabajar creando dinámicamente la sentencia... Eso se debe construir de modo que la sentencia resultante quede, por ejemplo:
Código MySQL:
Ver original
  1. FROM loquesea
  2.     tipo = IN('Pub', 'Discoteca', 'After')
  3.     AND
  4.     musica = IN('Heavy', 'Rock', 'Electronica')
Este tipo de opciones múltiples requiere que los diferentes valores de cada lista se armen por programación.
Este tema lo tienes que consultar en el Foro de PHP... Es tema de programación.
En
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 06/03/2012, 17:15
 
Fecha de Ingreso: mayo-2010
Mensajes: 50
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Construir Select con variables selectionadas de varios desplegables por Ge

Ok, voy a mirarme como hacer sentencias dinamicamente. Gracias y sorry x postearlo donde no tocava. Pense que era su lugar. Salu2

Etiquetas: desplegable, variables_get, buscadores
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 07:08.