Avatar billede floetti Nybegynder
11. juli 2003 - 17:20 Der er 11 kommentarer og
1 løsning

Hjælp vedr. søge funk.

Hej !

Jeg har lavet en søge funktion som skal lede efter huse som er placeret i forskellige områder og har forskellige funktioner, som f.eks. strøm, warme, badeværelse, køkken o.s.v. I databasen har jeg lavet det sådan at om der er "strøm, så står Y og hvis ikke står N" o.s.v. Men problemet er at, hvis en søger efter et hus med varme og badeværelse - så kommer bare de hus som passer lige med søgelsen, men jeg vil gerne have at der skal f.eks. komme hus som har det søgte og mere.

Scriptet:

$sql = mysql_query("Select adr, city, postal, country, cata, price, power, heat, tv, wc, phone, kitchen, shower, bath, washer, dryer from locations where ...... ");
$results = mysql_num_rows($sql);
echo "$results<br><br>";
while($row = mysql_fetch_array($sql)){
echo "$row[adr]<br>$row[postal] - $row[city]<br>$row[country]<br><br>El: $row[power] Hiti: $row[heat] - Sjónvarp: $row[tv] - Telefon: $row[tv] - Køkur: $row[kitchen] - Toilet: $row[wc] - Brúsa: $row[shower] - Bað: $row[bath] - Vaskimaskina: $row[washer] - Turkitrumla: $row[dryer] - Hæddir: $floors<br><br>";
}

Jeg ved ikke hvordan jeg bygger sådan søgefunktion op da man skal søge i flere kolonner... ! Jeg ved selvføgelig at man kan lave det med && , || , like - men det går ikke helt!!!

Ved godt at det ikke er serligt godt forklaret, men håber at nogen kan forstå ligt af det??

På forhånd takk
Floetti
Avatar billede detox Nybegynder
11. juli 2003 - 17:35 #1
Så skal du bruge or i din søgestreng. Forøvrigt hvis du skal bruge alle oplysningerne fra tabellen er det lettere at skrive *.
Fx:
$sql = mysql_query("Select * from locations where power='$power' or shower='$shower' or phone='$phone'");
Avatar billede cpmonster Nybegynder
11. juli 2003 - 17:41 #2
Du er nødt til at sammensætte SQL strengen FØR du kører den på databasen. Altså:
SQL = "Select * From locations Where"
If shower = "yes" Then 'Bruger har valgt ja til bruser fra fra formen
  SQL = SQL + "AND shower = 'y'"
End IF
if bath = "yes"
    SQL = SQL + "AND bath = 'y'"
End if
osv....

Du må lige fuske omkring at der ikke kommer 2 AND's eller der mangler 1 AND mellem 2 søge kriterier.. vil måske forekomme hvis kun et søgevalg fremkommer.

Kunne evt. løses med en
if onlyoneseachcritea 'et eller andet hjemmelavet kontrolcheck
  Replace(SQL,"AND","")
End if

Ellers hvis der bare ALTID er mindst ET søge tjek UDEN et "AND", burde der slet ikke forekomme problemer med ovenstående forslag.
Avatar billede cpmonster Nybegynder
11. juli 2003 - 17:42 #3
Hvis du bruger OR vil den give dig en record bare ET søge kriterie er iorden, og være "ligeglad" med at der er flere kriterier.
Avatar billede cpmonster Nybegynder
11. juli 2003 - 17:43 #4
Say when!?!?!
Avatar billede detox Nybegynder
11. juli 2003 - 17:59 #5
cpmonster-> Ja, det kan du selvfølgelig have ret i, alt efter hvordan formen ser ud. Den kunne jo være opbygget med selectboxe, men det fremgår jo ikke af spørgsmålet.
Avatar billede cpmonster Nybegynder
11. juli 2003 - 18:02 #6
Hvordan skal brugeren ellers sammensætte sin søgning?
Avatar billede cpmonster Nybegynder
11. juli 2003 - 18:11 #7
Det er ikke for at starte en større debat, men det må da formodes at der kan køres en tjek på de inputs lige inden SQL bliver kørt på databasen.

Der kan der da sagtens fremkomme en masse IF sætninger på den sql sætning lige inden den bliver aktiveret..
Avatar billede detox Nybegynder
11. juli 2003 - 18:26 #8
cpmonster-> Selvfølgelig kan der det, du har fuldstændig ret. Jeg havde bare en formodning om at man kunne lave formen ved hjælp af selectboxe og så har værdierne fx enten "y" eller ingenting og så kunne man bare bruge or i søgestrengen.
Avatar billede floetti Nybegynder
25. juli 2003 - 23:19 #9
Hej Igen !!!!

Nu er jeg MEGET sen til at svare på svarene, jeg er lige kommet tilbage fra en ferietur, så....! . "cpmonster" - dit svar ser intersant ud, hvad mener du med Relpace ?
Avatar billede detox Nybegynder
26. juli 2003 - 00:16 #10
Jeg tror ikke helt jeg forstår spørgsmålet. Hvad mener du med: "hus som har det søgte og mere"?
Anyway, hvis du kan bruge cpmonsters forslag, skal du ændre på syntaxen her:
SQL = SQL + "AND shower = 'y'"
til:
$sql .= "AND shower = 'y'";
Mht. REPLACE er syntaxen:
$newstr = str_replace("AND", "", $oldstr);
Avatar billede cpmonster Nybegynder
29. juli 2003 - 12:37 #11
Jeg skrev den om Replace, da det måske ville være et problem, hvis der kun var ét søgekriterie. MEN hvis du ikke sætter et 'AND' på det første kriterie(et obligatorisk kriterie), skal det så påsættes  et 'AND' EFTER hvert extra søgekriterie (den under IF then)

Derefter et evt. check på at erstatte (AND AND) med (AND)
Avatar billede floetti Nybegynder
17. august 2005 - 15:03 #12
Kom ikke så langt med dette spørgsmål... nu er altså lukketid;) efter 2 år!
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