Foros del Web » Programando para Internet » PHP »

Selects Multiples (PHP) + MYSQL

Estas en el tema de Selects Multiples (PHP) + MYSQL en el foro de PHP en Foros del Web. Saludos a todos, Les cuento: Necesito crear un filtro mediante <selects multiples> en donde estos valores seleccionados vayan a una consulta SQL y seleccione el ...
  #1 (permalink)  
Antiguo 13/08/2008, 14:30
 
Fecha de Ingreso: agosto-2008
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 0
Selects Multiples (PHP) + MYSQL

Saludos a todos,

Les cuento:

Necesito crear un filtro mediante <selects multiples> en donde estos valores seleccionados vayan a una consulta SQL y seleccione el registro del campo PHONE de acuerdo al filtro realizado. El problema es que yo sé hacer esto, pero sólo con un <select>. Mi problema se dá cuando tengo que hacerlo con más de un <select multiple> dentro del mismo filtro.

Por ejemplo:

La tabla en MYSQL se llama:

"personas" con los campos "id", "phone", "ocupacion", "nive_educional". (Por ejemplo)

http://img387.imageshack.us/img387/91/screenfiltroyz6.jpg (Ejemplo Grafico)

Imaginemos que en el <select> de ocupacion yo selecciono los paises "Educ. Basica", "Educ. Media" y "Educ. Superior".

Y en el <select> de ocupacion elijo "estudiante" y "empleado".

La gracia sería que los datos vayan al SQL donde debería decir algo asi:

SELECT phone FROM tabla WHERE pais = .... 'chile españa y argentina' (Recorriendolo)

y guardarlos en un array1, luego lo mismo para el SQL de ocupacion y guardarlo en un array2. (Recorriendolo)

La gracia es que luego pueda comparar ó nosé combinar los array1 y array2 para que no se repitan los registros del campo PHONE.

Traté de hacerlo con la sentencia UNION. Y también de recorrer los datos del $_POST media un for con el SQL dentro, pero ¿qué pasa si al for le decia que frenara hasta que sea < a que el arreglo que llevaba 3 datos seleccionados ó el que llevaba 2, por lo tanto si incluia el de 3 registros, el de 2 se replicaba la consulta.

Ojalá me hayan entendido y me puedan orientar a sacar este GRAN problemon que tengo que solucionar en el trabajo =S ...

Saludos y gracias desde ya!.
  #2 (permalink)  
Antiguo 13/08/2008, 14:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Selects Multiples (PHP) + MYSQL

Hola sdominguez,

Para eso debes de usar el operador IN () de MySQL, con el puedes seleccionar registros que sean iguales a una lista, por ejemplo:
Código:
SELECT * FROM tabla WHERE `edad`IN (15, 16, 17, 18)
Saludos.
  #3 (permalink)  
Antiguo 13/08/2008, 14:48
Avatar de TolerantX  
Fecha de Ingreso: marzo-2006
Ubicación: Guadalajara, México.
Mensajes: 408
Antigüedad: 18 años, 8 meses
Puntos: 10
Respuesta: Selects Multiples (PHP) + MYSQL

Creo que no entendí muy bien, pero por qué hacer 2 consultas, no es posible hacer una sola? usan DISTINCT para que no arroje telefonos duplicados y con un simple OR agrupando tus opciones tienes no?
__________________
TolerantX
http://tolerantx.com
Linux User #385226
  #4 (permalink)  
Antiguo 13/08/2008, 15:05
Avatar de jeanclon  
Fecha de Ingreso: mayo-2005
Mensajes: 258
Antigüedad: 19 años, 5 meses
Puntos: 2
Respuesta: Selects Multiples (PHP) + MYSQL

Mi hermano no entiendo muy bien tu duda, podrias explicarlo mejor?
Quieres seleccionar los Phone pero que no se repitan??? solo la consulta es para mostrar el campo phone??? por que si no es asi? que valor repetido vas a tomar en cuenta cuando es repetido, el del valor por el pais o el que resulta por ocupacion.

SELECT phone FROM personas WHERE pais IN ('venezuela', 'colombia')
SELECT phone FROM personas WHERE ocupacion IN ('estudiante', 'trabajador')

Pero que luego no se repitan los valores del campo phone???

Última edición por jeanclon; 13/08/2008 a las 15:06 Razón: agregar los select
  #5 (permalink)  
Antiguo 13/08/2008, 15:36
 
Fecha de Ingreso: agosto-2008
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Selects Multiples (PHP) + MYSQL

Gracias por la ayuda!

A ver me explico ahora más técnicamente. Primero olviden eso del País, me equivoque al escribir.

Bueno, como sale en el enlace http://img387.imageshack.us/img387/91/screenfiltroyz6.jpg" necesito rescatar el celular de la persona desde el campo PHONE de acuerdo a la selección multiple que realize.

Tal vez lo que me falto indicar que el resultado completo necesito luego insertarlo en una tabla en MYSQL, para luego realizar un proceso de envio de mensajes.

lo que hice en un comienzo fue

<select name="ocupacion[]">
<option value="Educ. Basica">
<option value="Educ. Media">
<option value="Educ. Superior">
<option value="Educ. Avanzada">
</select>

y lo mismo para el de nivel educacional ..

En si 2 array distintos.

Si en ocupacion selecciono solo 2 opciones luego pasaba los datos a un foreach:

foreach($_POST['ocupacion'] as $ocupacion) {
sql1 = mysql_query("SELECT phone FROM personas WHERE ocupacion = "$ocupacion");
}

y uno para lo otro

foreach($_POST['niv_educacional'] as $ocupacion) {
sql2 = mysql_query("SELECT phone FROM personas WHERE ocupacion = "$niv_educ");
}

Esa fue una de las formas de rescatar los datos segun la seleccion. Pero creo que no está bien asi :/ por que la gracia final es dejar en un solo array todos los telefonos que se seleccionaron de acuerdo en las consultas, es es el fin.

Alguna otra idea mejor?
  #6 (permalink)  
Antiguo 13/08/2008, 15:59
Avatar de TolerantX  
Fecha de Ingreso: marzo-2006
Ubicación: Guadalajara, México.
Mensajes: 408
Antigüedad: 18 años, 8 meses
Puntos: 10
Respuesta: Selects Multiples (PHP) + MYSQL

Ya te la dijeron usa IN, eso te sirve.

Código PHP:
$lista_ocupaciones implode(","$_POST['ocupaciones']); // esto arroja Educ. Basica, Educ. Avanzada ... etc

$lista_nivelEducacional implode(","$_POST['niv_educacional']);
// y haces tu query
sql1 mysql_query("SELECT DISTINCT(phone)  FROM personas WHERE ocupacion IN (".$lista_ocupaciones.") OR ocupacion IN (".$lista_nivelEducacional.")"); 
Algo así, calale
__________________
TolerantX
http://tolerantx.com
Linux User #385226
  #7 (permalink)  
Antiguo 14/08/2008, 10:35
 
Fecha de Ingreso: agosto-2008
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Selects Multiples (PHP) + MYSQL

Muchas gracias a todos y a TolerantX,

Probaré el código que posteaste, y les cuento como fue.

Saludos y gracias!
  #8 (permalink)  
Antiguo 14/08/2008, 15:02
 
Fecha de Ingreso: agosto-2008
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Selects Multiples (PHP) + MYSQL

EXCELENTE!

La solución que me entregaron dió resultado =D

Muchas gracias, me han quitado un gran peso de encima.

Saludos a todos!

Que bueno foro ;)
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 21:47.