[mySQL] Zoeken in meerdere velden AND/OR mbv LIKE functie

Pagina: 1
Acties:

  • Rexomnium
  • Registratie: September 2000
  • Laatst online: 09:11

Rexomnium

Vincam aut moriar

Topicstarter
Ik heb in een PHP programmaatje een vijftal zoekvelden. Gebruikers kunnen met een of meerdere zoekvelden in de database... zoeken (logisch :)).
De waarden die ik krijg van deze velden worden omgezet naar een deel van de mySQL-query:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$sortbySqlOutput = 
    "WHERE 
        klant_naam LIKE '%".$searchNaam."%' 
        && 
        klant_adres LIKE '%".$searchAdres."%' 
        && 
        klant_pc LIKE '%".$searchPostcode."%' 
        &&
        klant_woonplaats LIKE '%".$searchWoonplaats."%' 
        && 
        klant_tel1 LIKE '%".$searchTelefoon."%' 
        || 
        klant_tel2 LIKE '%".$searchTelefoon."%'
    ";


Op deze manier werkt het. Als ik een telefoonnummer ingeef, dan zoekt het programma in klant_tel1 en in klant_tel2 en indien hij in een van deze columns iets vindt, dan krijg ik een positief resultaat.
Nu wil ik met $searchAdres ook in de column klant_werkadres zoeken en met $searchPostcode in klant_werkpc, etc., etc.. Als ik echter iets als:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$sortbySqlOutput = 
    "WHERE 
        klant_naam LIKE '%".$searchNaam."%' 
        && 
        klant_adres LIKE '%".$searchAdres."%'
        ||
        klant_werkadres LIKE '%".$searchAdres."%'
        && 
        klant_pc LIKE '%".$searchPostcode."%' 
        ||
        klant_werkpc LIKE '%".$searchPostcode."%' 
        &&
        klant_woonplaats LIKE '%".$searchWoonplaats."%' 
        ||
        klant_werkwoonplaats LIKE '%".$searchWoonplaats."%' 
        && 
        klant_tel1 LIKE '%".$searchTelefoon."%' 
        || 
        klant_tel2 LIKE '%".$searchTelefoon."%'
    ";

invoer, dan krijg ik altijd een positief resultaat, wat ik dan ook invoer. Wat is nou de beste methode hiervoor? Hoe krijg ik het voor elkaar dat de searchAdres zowel in het werkadres als in het huidige adres wordt uitgevoerd en bijvoorbeeld searchWoonplaats in werkwoonplaats en in de huidige woonplaats? Hoe groepeer ik die dingen? Vingers? Iemand?

We zijn allemaal vaandeldrager in een optocht van gekwetsten.


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Je moet haakjes gebruiken. :)

offtopic:
werkwoonplaats ? doe dan werkplaatsnaam oid. :P

[ Voor 50% gewijzigd door Voutloos op 19-02-2007 17:51 ]

{signature}


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
offtopic:
in SQL bestaat '&&' en '||' niet. dat MySQL het snapt is leuk, maar je doet er verstandig aan je SQL zo veel mogelijk SQL te houden, en zo weinig mogelijk MySQL.. kortom: 'AND' en 'OR' gebruiken.

This message was sent on 100% recyclable electrons.


  • Rexomnium
  • Registratie: September 2000
  • Laatst online: 09:11

Rexomnium

Vincam aut moriar

Topicstarter
BasieP schreef op maandag 19 februari 2007 @ 17:49:
offtopic:
in SQL bestaat '&&' en '||' niet. dat MySQL het snapt is leuk, maar je doet er verstandig aan je SQL zo veel mogelijk SQL te houden, en zo weinig mogelijk MySQL.. kortom: 'AND' en 'OR' gebruiken.
Is niet offtopic, je helpt me juist goed met dit soort info :)

Ik ga haakjes proberen...

//edit:
Het is opgelost mbv de volgende code:
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
$sortbySqlOutput = 
            "WHERE 
            klant_naam LIKE '%".$searchNaam."%'
            AND
                (
                    klant_adres LIKE '%".$searchAdres."%'
                    OR
                    klant_werkadres LIKE '%".$searchAdres."%'
                )
            AND
                (
                    klant_pc LIKE '%".$searchPostcode."%'
                    OR
                    klant_werkpc LIKE '%".$searchPostcode."%'
                )
            AND
                (
                    klant_woonplaats LIKE '%".$searchWoonplaats."%'
                    OR
                    klant_werkwoonplaats LIKE '%".$searchWoonplaats."%'
                )
            AND
                (
                    klant_tel1 LIKE '%".$searchTelefoon."%'
                    OR
                    klant_tel2 LIKE '%".$searchTelefoon."%'
                )";

[ Voor 44% gewijzigd door Rexomnium op 20-02-2007 14:07 ]

We zijn allemaal vaandeldrager in een optocht van gekwetsten.