Avatar billede clausberg Nybegynder
13. juni 2005 - 21:33 Der er 14 kommentarer og
1 løsning

Ged i sql søgning

Hey
Når jeg bruger denne slq:

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

...
så får jeg alle resultater frem i min DB - og det er ikke meningen!

Hvad skal jeg skrive, for at man kun ender op med et resultat efter en søgning?
Avatar billede nielle Nybegynder
13. juni 2005 - 21:39 #1
Nåe, du får vel maks 50 rækker.

Hvis du kun skal have et resultat skal "LIMIT 0, 50" rettes til LIMIT 0, 1
Avatar billede nielle Nybegynder
13. juni 2005 - 21:41 #2
Desuden skal du være opmærksom på at hvis bare en af dine $_POST['xxx'] er tomme, ja så matcher den tilsvarende LIKE del alle poster (som ikek er NULL) i det der så stÅr:

... OR 'kategori' LIKE '%%' ...
Avatar billede arne_v Ekspert
13. juni 2005 - 21:43 #3
jeg undrer mig mere over '' omkring feltnavnene ...
Avatar billede nielle Nybegynder
13. juni 2005 - 21:43 #4
... dem var jeg slet ikke kommet til endnu. :^)
Avatar billede clausberg Nybegynder
13. juni 2005 - 21:58 #5
hæ hæ :-D
Jeg tror lige jeg uddyber lidt - har nemlig svært ved selv at fatte hvad jeg laver :)

Jeg har en lille skabelon, hvor i man kan indtaste oplysninger, hvorefter man trykker på "søg" knappen og der bliver søgt i DB - det er vist ret lige til?

Jeg vil gerne have det således, at brugeren af min side, kan nøjes med fx kun at søge på kategori og lade de andre felter være åbne...
Og samtidigt skal en bruger af siden kunne nøjdes med fx kun at benytte 2 ud af ialt 4 søgefelter...

I den søgeskabelon jeg har lavet, har brugeren kun mulighed for i feltet "kategori" at vælge mellem 10 "kategorier" jeg på forhånd har defineret - derfor har jeg skrevet:

...........  OR 'kategori' LIKE '%".$_POST['kategori']."%' OR.......... men jeg ved ikke om det er rigtigt.... under kategori kan brugeren vælge mellem "internt", "venner", "breve" osv... hvad skal man skrive og hvor, så at scriptet fungerer uanset hvad brugeren vælger at punkter i feltet "kategori"???

Håber i kan hjælpe - er lidt ude på dybt vand!!!
Avatar billede nielle Nybegynder
13. juni 2005 - 22:08 #6
Ud fra din beskrivelse lyder det mere som om du skal lave noget i stil med:

$SQL = "SELECT * FROM details WHERE kategori LIKE '%" . $_POST['kategori'] . "%'";

if ( $_POST['titel'] != "" )
    $SQL += " AND titel LIKE '%" . $_POST['titel'] . "%'";

if ( $_POST['adresse'] != "" )
    $SQL += " AND adresse LIKE '%" . $_POST['adresse'] . "%'";

if ( $_POST['stk'] != "" )
    $SQL += " AND stk LIKE '%" . $_POST['stk'] . "%'";

$SQL += " LIMIT 0, 1";

query = mysql_query($SQL);
Avatar billede nielle Nybegynder
13. juni 2005 - 22:10 #7
"Kategori" er altid udfyldt. Og hvis en af de andre også er udfyldt, skal der også søges på dem - ellers ikke. Jeg bruger AND i det det nok er det brugeren forventer.
Avatar billede clausberg Nybegynder
13. juni 2005 - 22:13 #8
den må jeg lige afprøve... men i det eksempel du har givet mig, bliver hele søgningen så ikke foretaget udfra feltet "kategori" eftersom det er den der står først? eller er det lige meget i hvilke rækkefølge de kommer?
Avatar billede nielle Nybegynder
13. juni 2005 - 22:16 #9
Rækkefølgen har ikke noget med resultatet at gøre - det er helt op til databasen selv at bestemme den slags. Normalt bruger man en ORDER BY hvis man vil have tingene i en bestemt rækkefølge.
Avatar billede clausberg Nybegynder
13. juni 2005 - 22:28 #10
aha...
Nu skete der noget... eller rettere der skete intet når jeg bruger den foreslående... men det får mig til at spørge...

Jeg har - som sagt - allerede defineret nogle "punkter" under feltet "kategori", som brugeren kan vælge mellem... men hvordan "koder" jeg min DB i henhold til dette felt...

altså: i min DB har jeg under mit feltnavn "kategori" blot skrevet "internt", "venner", "breve" osv...

ved min skabelon godt, at når jeg vælger "venner" i "kategori" så skal den søge efter de indtastninger der ligger i "kategorien" "venner" ? - det virker næsten for simpelt til at  være rigtigt.
Avatar billede nielle Nybegynder
13. juni 2005 - 22:35 #11
Spg 1) Hvordan ser koden ud for din form?

Spg 2) Prøv at udskrive SQL'en til skærmen. Hvis du nu udfylder alle dine felter og trykker på submit-knappen - hvordan ser den resulterende SQL sætning så ud? Du gør dette ved at tilføje en echo umiddelbart før at du udføre SQL'en:

echo "DEBUG: " . SQL . "<br>";
query = mysql_query($SQL);
Avatar billede clausberg Nybegynder
13. juni 2005 - 22:40 #12
Jeg kigger lige på det i morgen - jeg har et par ting jeg lige skal prøve - vender tilbage
tak for hjælpen!!!!!!!! foreløbigt :-D
Avatar billede nielle Nybegynder
24. juni 2005 - 19:32 #13
Har du fået kigget på det?
Avatar billede clausberg Nybegynder
27. juni 2005 - 13:37 #14
Jeg har fundet ud af det :-D

Takker for hjælpen - smider du et svar?
Avatar billede nielle Nybegynder
27. juni 2005 - 17:46 #15
Svar :^)
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