Avatar billede artico Novice
09. august 2005 - 22:10 Der er 11 kommentarer og
1 løsning

søger ikke på "OR"

Jeg har flg.:
where sb1_butiksnavn like '%$_POST[sogeord]%' OR sb1_postnr = '%$_POST[postnr]%'

Jeg søger via en form med indput: 'sogeord' og 'postnr' ...
Men hvis jeg kun søger på postnr, så viser den ikke data med det indtastede postnr. først ? ligesom den injoreres?
Avatar billede arne_v Ekspert
09. august 2005 - 22:13 #1
hvis dogeord er tomt så tester du på

sb1_butiksnavn like '%%'

og den er jo sand for alle rækker

jeg tror at du skal konstruere din SQL streng dynamisk udfra hvilke felter der
er udfyldt
Avatar billede efry Nybegynder
09. august 2005 - 22:18 #2
Prøv med paranteser omkring de to udtryk
('%$_POST[sogeord]%') og (sb1_postnr = '%$_POST[postnr]%')
Den misforstår hvad OR funktionen skal dække og laver en OR mellem '%$_POST[sogeord]%' og sb1_postnr og checker derefter om det er lig med '%$_POST[postnr]%'
Avatar billede efry Nybegynder
09. august 2005 - 22:22 #3
arne v havde vist den rigtige løsning - beklager min kommentar
Avatar billede artico Novice
09. august 2005 - 22:29 #4
noget if else ?
Avatar billede arne_v Ekspert
09. august 2005 - 22:30 #5
ja
Avatar billede kjulius Novice
09. august 2005 - 22:54 #6
Alternativt kunne du forsøge dig med at teste om sogeord indeholder noget i selve SQL sætningen. Det kommer godt nok til at se lidt "forkert" ud, men teoretisk burde virke:

where '$_POST[sogeord]' <> '' and sb1_butiksnavn like '%$_POST[sogeord]%' OR '$_POST[postnr]' <> '' and sb1_postnr = '%$_POST[postnr]%'
Avatar billede artico Novice
09. august 2005 - 22:58 #7
Prøver lige denne, men variabel fejl ? hvad er forkert?

if($_POST[sogeord] == !""){
    $sogning =  $_POST['sogeord'];
    $sogetabel = 'sb1_butiksnavn';
  }
else {($_POST[postnr] == !"")
    $sogning =  $_POST['postnr'];
    $sogetabel = 'sb1_postnr';
  }

$sogning1 = mysql_query("select * from butikker
where '$sogning' like '%$sogetabel%'
") or die(mysql_error());
Avatar billede arne_v Ekspert
09. august 2005 - 23:01 #8
if($_POST[sogeord] == !""){

skal vel være

if($_POST[sogeord] != ""){

[uden at jeg dog er supergod til PHP]
Avatar billede artico Novice
09. august 2005 - 23:03 #9
kjulius > løsning virker fint, men ikke på postnr feltet ?
Avatar billede kjulius Novice
09. august 2005 - 23:11 #10
Okay, jeg brugte din oprindelige sql. Den sidste compare skal naturligvis også bruge like:

where '$_POST[sogeord]' <> '' and sb1_butiksnavn like '%$_POST[sogeord]%' OR '$_POST[postnr]' <> '' and sb1_postnr like '%$_POST[postnr]%'

eller, hvis det virke skal være lig med, så uden %..%:

where '$_POST[sogeord]' <> '' and sb1_butiksnavn like '%$_POST[sogeord]%' OR '$_POST[postnr]' <> '' and sb1_postnr = '$_POST[postnr]'
Avatar billede artico Novice
09. august 2005 - 23:16 #11
JES JES JES !! TAK nu kører det for mig :-) send et svar
Avatar billede kjulius Novice
09. august 2005 - 23:18 #12
Afsendt...
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