amod Skrevet 2. september 2006 Del Skrevet 2. september 2006 Hei Jeg prøver å lage et søkefunksjon som søker gjennom en database. Jeg har fått til å lage noe som funker hvis jeg bare skal søke på et nøkkelord ved å bruke like. Men jeg har lyst til å kunne skrive inn flere ord som ikke står etterhverandre, noe slikt som alle søkemotorer på internett. Noen som vet hvordan man kan få til dette? Som et eksempel så vil jeg kunne søke: hjelp takk Og få opp eventuelt felt hvor det står: tusen takk for hjelpen:) Lenke til kommentar
endrebjo Skrevet 2. september 2006 Del Skrevet 2. september 2006 AND: SELECT * FROM table WHERE column LIKE 'nøkkel' AND column LIKE 'nøkkel2'; OR: SELECT * FROM table WHERE column LIKE 'nøkkel' OR column LIKE 'nøkkel2'; Du splitter opp inn-strengen med: explode() Lenke til kommentar
Gjest Slettet-rXRozPkg Skrevet 2. september 2006 Del Skrevet 2. september 2006 (endret) Det kan også være lurt å ta med % (jokertegn) i spørringene for å søke etter deler av et ord. F.eks: $sokeord = mysql_real_escape_string($_REQUEST['sokeord']); $sokeord = explode(" ", $sokeord); $count = count($sokeord); if($count > 0) { $sql = "SELECT * FROM tabell WHERE kolonne LIKE '%".$sokeord[0]."%'"; for($i=1; $i < $count; $i++) { $sql .= " OR kolonne LIKE '%".$sokeord[$i]."%' "; // AND / OR } $sql .= " ORDER BY kolonne ASC"; // trengs ikke, men her kan du putte på ting som order/group by og limit/offsett osv. $result = mysql_query($sql); osv.... } else { // Ingen søkeord } Hvis kode som dette gjør at du får "den samme raden" flere ganger, så kan du legge på DISTINCT i spørringen; "SELECT DISTINCT * FROM tabel....." Endret 2. september 2006 av Slettet-rXRozPkg Lenke til kommentar
endrebjo Skrevet 2. september 2006 Del Skrevet 2. september 2006 Det kan også være lurt å ta med % (jokertegn) i spørringene for å søke etter deler av et ord. 6789880[/snapback] Ja, det er vel hele poenget med å bruke LIKE. Men det er forskjell på å bruke '% it %', '%it%' og '%it %', derfor kalte jeg bare hele søkestrenger for nøkkel.Søkestrengen bør trådstarter tilpasse selv. Lenke til kommentar
Gjest Slettet+142 Skrevet 2. september 2006 Del Skrevet 2. september 2006 (endret) Det kan også være lurt å ta med % (jokertegn) i spørringene for å søke etter deler av et ord. F.eks: $sokeord = mysql_real_escape_string($_REQUEST['sokeord']); $sokeord = explode(" ", $sokeord); $count = count($sokeord); if($count > 0) { $sql = "SELECT * FROM tabell WHERE kolonne LIKE '%".$sokeord[0]."%'"; for($i=1; $i < $count; $i++) { $sql .= " OR kolonne LIKE '%".$sokeord[$i]."%' "; // AND / OR } $sql .= " ORDER BY kolonne ASC"; // trengs ikke, men her kan du putte på ting som order/group by og limit/offsett osv. $result = mysql_query($sql); osv.... } else { // Ingen søkeord } Hvis kode som dette gjør at du får "den samme raden" flere ganger, så kan du legge på DISTINCT i spørringen; "SELECT DISTINCT * FROM tabel....." 6789880[/snapback] kunne noen laget sånn at hvis noen søker på "sport bergen"(med apostrofene), at det markeres med AND istedenfor OR i queryen? ... og/eller at søkeordene som printes, kommer i bold (som på google ) ved bruk av regexp? kan nemlig ikkje regexp Endret 2. september 2006 av Slettet+142 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå