PHP - Filtrar registros mismo campo diferente criterio

 
Vista:
sin imagen de perfil

Filtrar registros mismo campo diferente criterio

Publicado por Emir Mendez (3 intervenciones) el 06/07/2017 12:35:08
Buenos días gente.
Tengo el siguiente dilema, que ni siquiera supe especificar describir en el título el problema.
Necesito filtrar una tabla de mysql con php la cual tiene id de países e id de paquetes de viajes, ya que un paquete de viaje puede visitar varios países. O sea es una relación de muchos a muchos. En la tabla pueden haber varios registros que tengan el mismo id de paquete pero tengan distintos id de países. Espero que me entiendan esta parte.
[b]Ahora lo que nesecito es filtrar con php y mysql los paquetes de viaje que incluyan distintos países que se seleccionarán en un select de múltiple selección. O sea ej. Quiero que me muestre los paquetes que pasan por Francia, Alemania y España (pueden ser más o menos los seleccionados)
No me sirve ni el OR o el IN ya que tiene que incluir todos los paises que se seleccionen, no uno u otro.
Con el AND lógicamente fue lo que primero que probé pero también lógicamente después me di cuenta que si filtraba primero ej. con idPais = 12 y hacia AND idPais = 20 , el resultado siempre va a ser 0 porque después de filtrar por el primero no quedan registros con id diferente a ese.
Espero me entiendan el problema y si es una tontería sepan disculparme es que el cuagulo no me deja pensar a veces.
Desde ya muchas gracias!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 76
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Filtrar registros mismo campo diferente criterio

Publicado por preguntas (26 intervenciones) el 06/07/2017 16:52:14
Es algo asi lo que quieres lograr con PHP?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
$tabla_paquetes = [
    [1, "paquete_1"],
    [2, "paquete_2"],
    [3, "paquete_3"]
];
 
$tabla_paises = [
    [1, "pais_1", 1], //id_pais, nombre_pais, id_pquete
    [2, "pais_2", 3],
    [3, "pais_3", 2],
    [4, "pais_4", 1]
];
 
//FILTROS...
$paises_seleccionar = [1, 3, 4];
 
//RESULTADO SEGUN FILTRO
$paquetes_segun_filtro = [];
 
 
 
//RECORRO LOS PAISES FILTRADOS
foreach ($paises_seleccionar as $pais_s) {
    //RECORRO LA TABLA PAISES
    foreach ($tabla_paises as $pais) {
        //SI COINCIDE EL ID DEL PAISE FILTRADO CON ALGUNA ID DENTRO DE LA TABLA PAISES...
        if ($pais_s == $pais[0]) {
            //OBTENGO EL ID DEL PAQUETE DEL PAISES QUE COINCIDIO
            array_push($paquetes_segun_filtro, $pais[2]);
            break;
        }
    }
}
 
$res = "segun el filtro de paises, estos corresponden a los paquete: <br />";
//LIMPIO LOS VALORES REPETIDOS
$paquetes_segun_filtro =  array_unique($paquetes_segun_filtro);
 
//RECORRO LOS RESULTADOS SEGUN LOS FILTROS
foreach ($paquetes_segun_filtro as $paquete) {
    $res .= $paquete."<br />";
}
 
//IMPRIMO EL RESULTADO
echo $res;

http://sandbox.onlinephpfunctions.com/code/10ca772cc844058c4c42968756fc4c997d96be79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtrar registros mismo campo diferente criterio

Publicado por Emir Mendez (3 intervenciones) el 06/07/2017 18:22:02
Gracias por la respuesta.
Lo que sucede es que, si bien tengo esas dos tablas (paquetes y países) la de países no puede tener un campo id_paquete ya que el mismo país puede tener infinidad de paquetes o a la inversa un paquete puede tener infinidad de países (relacion de muchos a muchos) . Por eso es que se hizo una tabla que se llama "paises-paquetes" que contiene los campos "id", "id_pais", "id_pauquete" .
Lo que necesito es que pueda buscarme todos los paquetes que tienen el id_pais según la selección pero la selección pueden ser varios id_pais
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtrar registros mismo campo diferente criterio

Publicado por Emir Mendez (3 intervenciones) el 07/07/2017 20:20:43
Cómo estás? Gracias de nuevo.
Sabes que probé tu código y aumentando la cantidad de registros en la tabla paquete_paises me tira lo mismo que si hiciera una consulta con or o con in. Me da como resultado los paquetes que tienen uno al menos. Lo que necesito es que si seleccionas 3 países por ej los paquetes que de como resultado tienen que tener si o si todos esos países
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar