Avatar billede fcknet Nybegynder
29. november 2003 - 11:21 Der er 12 kommentarer og
1 løsning

Søgning med PHP

Hejsa. Jeg har efterhånden fået opbygget et velvoksent website. Dog synes jeg efterhånden at der mangler en søgefunktion.

Denne søgefunktion skal være ret avanceret for at den kan bruges. Da jeg vil have den til at søge i flere grene af websitet skal jeg i gang med at søge i flere tabeller.

Desuden ville det være fedt, hvis der var nogen som kunne fortælle mig hvordan jeg gør så man kan lave en søgning med "alle ordene", "eksakt frase", "et af ordene".
Avatar billede detox Nybegynder
29. november 2003 - 13:48 #1
Til at starte med vil det være smart, hvis du har givet dine tabeller en prefix. Så kan du ligge dine tabelnavne i et array med:

$res = mysql_query("SHOW TABLES LIKE 'prefix_%'");
while ($row = mysql_fetch_row($res)) {
    $tabel[] = $row[0];
}
Avatar billede detox Nybegynder
29. november 2003 - 13:52 #2
Til spørgsmål 2:
"alle ordene": WHERE felt LIKE '% ord1 %' AND felt LIKE '% ord2 %' osv...
"eksakt frase": WHERE felt LIKE '%ord1 ord2%'
"et af ordene": WHERE felt LIKE '% ord1 %' OR felt LIKE '% ord2 %' osv...
Avatar billede fcknet Nybegynder
29. november 2003 - 14:12 #3
Jeg kan jo bare lave et array manuelt som indeholder tabelnavnene...

Men hvordan gør jeg det så med flere ord?
Avatar billede detox Nybegynder
29. november 2003 - 14:28 #4
Ja, selvfølgelig. Hvad mener du med flere ord?
Avatar billede fcknet Nybegynder
29. november 2003 - 14:50 #5
Kan du ikke prøve at opstille en komplet kode for mig?
Hvor mange points skal du have for det?
Avatar billede detox Nybegynder
29. november 2003 - 14:59 #6
Nej, det bliver nok for omfattende, men jeg vil gerne hjælpe dig hen ad vejen.
Avatar billede rackbox Nybegynder
29. november 2003 - 23:55 #7
Hvis du har flere ord, så start med at dele sætningen op i et array, eks.
$soegeord = explode(" ",$ord);
hvor $ord er den streng brugeren vil søge efter.

herefter laver du en foreach:
$query = "select * from din_tabel where felt like ";
$first = 0;
foreach ($soegeord as $key => $value){
  if ($first = 0){
      $query.="'%$value'";
      $first = 1;
  } else {
      $query.=" or felt like '%$value%'";
  }
}
Avatar billede detox Nybegynder
30. november 2003 - 00:11 #8
if ($first = 0){
skal lige ændres til:
if ($first == 0){

$query.="'%$value'";
til:
$query.="'%$value%'";
Avatar billede rackbox Nybegynder
30. november 2003 - 00:13 #9
tak ;-)
Avatar billede detox Nybegynder
30. november 2003 - 00:14 #10
Så lidt ;o)
Avatar billede detox Nybegynder
22. december 2003 - 12:42 #11
Er vi gået i stå her?
Avatar billede fcknet Nybegynder
07. januar 2004 - 17:36 #12
Svar lige :D
Avatar billede fcknet Nybegynder
07. januar 2004 - 17:56 #13
Ih altså!
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