Dubbele echo filteren
Voorbeeld:
$sql = "SELECT * FROM horeca_search INNER JOIN horeca ON horeca_search.Alias_S=horeca.Alias
WHERE
horeca_search.Waarde_S='" . $Leeftijd_temp_16 . "' OR
horeca_search.Waarde_S='" . $Leeftijd_temp_18 . "' OR
horeca_search.Waarde_S='" . $Leeftijd_temp_21 . "' OR
horeca_search.Waarde_S='" . $Sluitingstijd_temp_02 . "' OR
horeca_search.Waarde_S='" . $Sluitingstijd_temp_04 . "' OR
horeca_search.Waarde_S='" . $Muziekstijl_temp_top40 . "' OR
horeca_search.Waarde_S='" . $Muziekstijl_temp_80s . "' OR
horeca_search.Waarde_S='" . $Muziekstijl_temp_90s . "' OR
horeca_search.Waarde_S='" . $Muziekstijl_temp_apreski . "' OR
horeca_search.Waarde_S='" . $Muziekstijl_temp_dialect . "' OR
horeca_search.Waarde_S='" . $Muziekstijl_temp_nederlands . "' OR
horeca_search.Waarde_S='" . $Muziekstijl_temp_renb . "' OR
horeca_search.Waarde_S='" . $Muziekstijl_temp_house . "' OR
horeca_search.Waarde_S='" . $Biermerk_temp_heineken . "' OR
horeca_search.Waarde_S='" . $Biermerk_temp_jupiler . "' OR
horeca_search.Waarde_S='" . $Biermerk_temp_brand . "' OR
horeca_search.Waarde_S='" . $Biermerk_temp_hertogjan . "' OR
horeca_search.Waarde_S='" . $Biermerk_temp_amstel . "' OR
horeca_search.Waarde_S='" . $Biermerk_temp_lindeboom . "'
"
array_unique te gebruiken.
Wel afhankelijk van de data in je tabel.
Kijk eens naar WHERE veldnaam IN(...)
hmm de oplossing van santhe is denk ik het beste als je het in je query al oplost.
Hay de Bitter op 26/06/2012 13:47:22:
Door bij WHERE de OR functie te gebruiken kan het zijn dat er bij de echo een dubbele bij zit. Is er een mogelijkheid dat hij deze maar 1 keer weergeeft.
Heb je daar een voorbeeld van, of denk je dat alleen?
Het zou namelijk niet het geval moeten zijn. De database selecteert alle rijen die aan de voorwaarden voldoen. In jouw geval zal een rij die aan 1 voorwaarde voldoet geselecteerd worden, en ook een rij die aan meer dan 1 voorwaarde voldoet. Maar niet twee keer. Het is niet zo dat per voorwaarde alle rijen gecontroleerd worden.
Als je al dubbele resultaten krijgt heeft dat niets te maken met je OR statements, maar met een verkeerde join.
$sql = 'SELECT * FROM horeca_search INNER JOIN horeca ON horeca_search.Alias_S=horeca.Alias
WHERE horeca_search.Waarde_S IN (' . $Leeftijd_temp_16 . ', ' . $Leeftijd_temp_18 . ', ' . $Leeftijd_temp_21 . ', ' . $Sluitingstijd_temp_02 . ', ' . $Sluitingstijd_temp_04 . ', ' . $Muziekstijl_temp_top40 . ', ' . $Muziekstijl_temp_80s . ', ' . $Muziekstijl_temp_90s . ', ' . $Muziekstijl_temp_apreski . ', ' . $Muziekstijl_temp_dialect . ', ' . $Muziekstijl_temp_nederlands . ', ' . $Muziekstijl_temp_renb . ', ' . $Muziekstijl_temp_house . ', ' . $Biermerk_temp_heineken . ', ' . $Biermerk_temp_jupiler . ', ' . $Biermerk_temp_brand . ', ' . $Biermerk_temp_hertogjan . ', ' . $Biermerk_temp_amstel . ', ' . $Biermerk_temp_lindeboom . ')';
Zie het resultaat
SELECT * FROM horeca_search INNER JOIN horeca ON horeca_search.Alias_S=horeca.Alias WHERE horeca_search.Waarde_S IN (, , , , 04, , , , , , , , , , , , , , )
Gewijzigd op 26/06/2012 15:04:34 door Hay de Bitter
Maar kijk nog eens naar mijn vorige opmerking, die is nu namelijk ook nog steeds van toepassing. Als je bij de vorige query dubbele waardes krijgt, dan krijg je die hier ook. Dat gaat dus niets oplossen.
Gewijzigd op 26/06/2012 15:12:39 door Erwin H