Gå til innhold

søke i mysql database


Anbefalte innlegg

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
Videoannonse
Annonse
Gjest Slettet-rXRozPkg

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 av Slettet-rXRozPkg
Lenke til kommentar
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
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 :p ) ved bruk av regexp? kan nemlig ikkje regexp :no:

Endret av Slettet+142
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...