Avatar billede rab Nybegynder
12. september 2002 - 20:26 Der er 6 kommentarer og
1 løsning

søgning i flere felter af gangen (php/mysql)

I min form vil jeg gerne have til at stå:

<select name="attribut" size="1">
<option value="byen OR omraade OR adr OR land OR kontinent">alt</option>

og i connect:

"SELECT * FROM steder WHERE $attribut LIKE '%$search%' LIMIT 0, 30 "

Det virker hvis der kun står "byen OR omraade" men hvad skriver jeg hvis jeg vil have flere udsagn ind i den linie?
Avatar billede gizmo-gizmo Nybegynder
12. september 2002 - 20:32 #1
du sakl bruge:

WHERE noget = 'noget' OR noget='nogetandet'

man kan ikke sige:
WHERE noget OR nogetandet = 'noget'
Avatar billede rab Nybegynder
12. september 2002 - 21:07 #2
undskyld at jeg er kritisk men ville det ikke forhindre at jeg skrev "byen OR omraade" det virker jo.??
Avatar billede jakoba Nybegynder
12. september 2002 - 22:44 #3
nej, det er noget andet der gør at det ser ud som om det virker.

den korrekte måde at skrive det på er:

"  SELECT *
    FROM steder
    WHERE byen LIKE '%$search%'
        OR omraade LIKE '%$search%'
        OR adr LIKE '%$search%'
        OR land LIKE '%$search%'
        OR kontinent LIKE '%$search%'
    LIMIT 0, 30
"

du kan evt sige:

$attribut = str_replace( " OR", " LIKE '%$search%' OR", $attribut );
$sql_kommando = "SELECT * FROM steder WHERE $attribut LIKE '%$search%' LIMIT 0, 30 ";

mvh JakobA
Avatar billede rab Nybegynder
12. september 2002 - 23:56 #4
uddybning:
Grunden til at jeg vil have OR til at stå i formen er fordi man skal kunne vælge at søge i alt, kun i anmeldelsen eller kun på navnet:

<select name="attribut" size="1">
<option value="stednavn OR tekst OR ditnavn OR byen OR omraade OR adr OR land OR kontinent">alt</option>
<option value="tekst">kun anmeldelsen</option>
<option value="stednavn">kun pubbens navn</option>
</select>

håber i forstår hvad jeg mener...
Avatar billede svoeber Nybegynder
27. september 2002 - 01:40 #5
Jo, men du skal have 'like' ind i hver sammenligning - det er altså ikke nok at slutte med én 'like' efter alle dine 'or'.

Hvis du ændre din option value til 'alt', kan du i stedet udvide jakoba's forslag til:

if ($attribut == 'alt') {
  $attribut = "stednavn LIKE '%$search%' OR
              tekst LIKE '%$search%' OR
              ditnavn LIKE '%$search%' OR
              byen LIKE '%$search%' OR
              omraade LIKE '%$search%' OR
              adr LIKE '%$search%' OR
              land LIKE '%$search%' OR
              kontinent";}

"SELECT *
    FROM steder
    WHERE $attribut LIKE '%$search%'
    LIMIT 0, 30
"
Avatar billede svoeber Nybegynder
27. september 2002 - 01:43 #6
Så har du også flyttet den 'grimme' kode fra synlig HTML til skjult PHP ;)
Avatar billede rab Nybegynder
27. september 2002 - 03:15 #7
Og det virkede sku :-) tak for det
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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