Avatar billede clausberg Nybegynder
08. juni 2005 - 10:12 Der er 7 kommentarer og
1 løsning

AND og OR sql

Hey
Jeg er ved at lave en side, hvor brugeren har mulighed for at søge i en MySql database (den hedder "kontakter"). I min "søgemaskine" har jeg fire felter:

Søg på navn (tekst-felt)
Søg i kategori (her har brugeren mulighed for at vælge mellem flere kategorier)
Søg i land (her har brugeren mulighed for at vælge mellem flere lande)
Søg i antal (her har brugeren mulighed for at vælge mellem flere antal)

Brugeren kan enten vælge KUN at benytte ET felt (fx kategori) eller fx benytte alle ALLE fire felter...
Problemet er, at jeg ikke ved hvordan jeg skriver min sqlquery sætning, således at den medtager alle mulige kombinationsmuligheder. Jeg ved godt, at man skal bruge AND og OR... men hvordan den skal skrives ved jeg ikke.

Help plz
/ClausB
Avatar billede jih Nybegynder
08. juni 2005 - 10:22 #1
SELECT * FROM kontakter WHERE navn LIKE (din streng) OR kategori LIKE (din streng) OR land LIKE (din streng) OR antal LIKE (din streng)

det skal dog siges at hvis antal er givet op i tal, kan du bruge operators istedet... som fx

SELECT * FROM kontakter WHERE navn LIKE (din streng) OR kategori LIKE (din streng) OR land LIKE (din streng) OR antal = (din streng)
Avatar billede clausberg Nybegynder
08. juni 2005 - 10:27 #2
Ok... men virker denne sqlsætning også, hvis brugeren søger efter en bestemt "kontakt" og derfor gør brug af alle fire søgefelter... så skal man vel skrive AND

Er operators et lighedstegn (=) ???
Avatar billede jih Nybegynder
08. juni 2005 - 10:32 #3
min fejl... en operator er fx LIKE... men her er en liste over operators:

= -- Lig med
<> -- Ikke lig med
> -- Mere end
< -- Mindre end
>= -- Mere end eller lig med
<= -- Mindre end eller lig med
BETWEEN -- Mellem to tal fx
LIKE -- Hvis du skal søge efter et "pattern"

...

hvis du skriver OR, finder den alle der indeholder den tekst du søger på.. uanset om de begge findes i samme række eller om det er forskellige rækker.. det ville jeg se som den nemmeste måde at gøre det på...
Avatar billede jih Nybegynder
08. juni 2005 - 10:39 #4
en ting som ville være smart at huske er at skrive '%' på begge sider af din streng... fx hvis din streng i navn er "jakabov", så skriver du:
... WHERE navn LIKE '%jakabov%' ...
så hvis du har en der hedder fx gjakabovg, finder du den alligevel... ergo '%' er "wildcard" i SQL language... du kan evt. kigge på SQL tutorial her: http://www.w3schools.com/sql/default.asp
Avatar billede clausberg Nybegynder
08. juni 2005 - 10:52 #5
Takker... jeg afprøver det lige i aften - så skal jeg nok vende tilbage :-D
Avatar billede jih Nybegynder
08. juni 2005 - 10:53 #6
helt i orden.. :-)
Avatar billede clausberg Nybegynder
13. juni 2005 - 21:01 #7
Hey...

Det virker desværre ikke helt... når jeg bruger OR bliver alle resultater fra min DB vist - og det er ikke meningen.

$query = mysql_query("SELECT * FROM details WHERE 'titel' LIKE '%".$_POST['titel']."%' and 'kategori' LIKE '%".$_POST['kategori']."%' AND 'adresse' LIKE '%".$_POST['adresse']."%' AND 'stk' LIKE '%".$_POST['stk']."%' LIMIT 0, 50");

Brugeren af siden, skulle jo gerne via en enkelt søgning ende op med eet eller kun få resultater...

Forresten kan jeg heller ikke lave mine resultater om til links.
Avatar billede clausberg Nybegynder
18. juni 2005 - 18:27 #8
?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester