Avatar billede stonejunkie Nybegynder
25. juni 2004 - 17:37 Der er 4 kommentarer og
1 løsning

Søge i links database.

Hej,

Jeg er igang med at lave en PHP søge funktion til min links samling. Søge funktionen består af et tekst felt hvor det er muligt at skrive et søgeord, en select box der indeholder alle links kategorierne og til sidst endnu en select box som indeholder lande. Det skal siges at det er ikke et krav at felterne skal udfyldes. Det vil sige at hvis man bare vælger DK under land skal man få alle links fra Danmark. Eller hvis man vælger Diverse under kategorier skal man få alle links fra kategorien Diverse. Men hvis man så vælger at skrive et søgeord og vælger kategori og land skal man kun få de links som indeholder søgeordet og tilhøre kategorien og landet.

Men hvordan laver jeg en søgning i min mysql database som kontrollere om variablerne fra de forskellige felter er sat og så henter linksene ud fra hvilke krav(søgeord, kategori, land) brugeren har valgt?
Avatar billede dennismp Nybegynder
25. juni 2004 - 18:19 #1
Du bygger SQL'en op alt efter hvad man har udfyldt.

fx

$sql = "SELECT ... FROM tabel ";

// tilføj søgeord

$sql .= "WHERE beskrivelse LIKE '%$soeg%' ";

// tilføj, hvis udfyldt, kategori

if(! empty($kategori) )
  $sql .= " AND kategori = '$kategori' ";

// tilføj, hvis udfyldt, land

if(! empty($land) )
  $sql .= " AND land = '$land' ";

// sortering og max antal links

$sql .= " ORDER BY url LIMIT 10 ";
Avatar billede stonejunkie Nybegynder
25. juni 2004 - 18:25 #2
Ok, men i dette tilfælde virker det da ikke hvis du undlader at udfylde søgeordet?
Avatar billede dennismp Nybegynder
25. juni 2004 - 18:55 #3
Så kan du bare bruge..

$sql = "SELECT ... FROM tabel WHERE 1=1 ";

// tilføj, hvis udfyldt, søgeord
if(! empty($soeg) )
  $sql .= " AND beskrivelse LIKE '%$soeg%' ";

// tilføj, hvis udfyldt, kategori
if(! empty($kategori) )
  $sql .= " AND kategori = '$kategori' ";

// tilføj, hvis udfyldt, land
if(! empty($land) )
  $sql .= " AND land = '$land' ";

// sortering og max antal links
$sql .= " ORDER BY url LIMIT 10 ";
Avatar billede stonejunkie Nybegynder
26. juni 2004 - 10:47 #4
Super det virker lige som det skal, hvis du smidder et svar skal du blive belønnet:)

Mange tak for hjælpen.
Avatar billede dennismp Nybegynder
26. juni 2004 - 13:38 #5
Det var så lidt :)
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