Avatar billede playr Nybegynder
07. januar 2008 - 12:46 Der er 5 kommentarer

Søgefunktion i php mysql?

Hej

Jeg vil gerne lave en søgefunktion som gør følgende:

Tabel: navn
- id
- navn
- fritid

Hvis man har nogle rækker i navn der indeholder følgende:

id: 1
navn: casper
fritid: sport, underholdning, skole

id: 2
navn: jesper
fritid: sport, dyr, andet

Hvis man så søger på "sport" så skal den finde begge 2, men søger man kun på "skole" så finder man kun "casper".

Hvordan gøres dette?
Avatar billede pidgeot Nybegynder
07. januar 2008 - 12:52 #1
Du bør lave din tabelstruktur om så du har en ekstra tabel der indeholder 1 række pr. person pr. interesse de har. På den måde kan du søge i den ekstra tabel for at få alle de personer der har en given interesse.

Samtidigt bør du nok overveje at kæde det sammen med en tredje tabel der indeholder de mulige interesser, da jeg går ud fra det ikke er ren fritekst. Det vil samtidigt sikre at folk ikke kommer til at stave forkert og dermed ikke kan findes.
Avatar billede di8leva Nybegynder
07. januar 2008 - 12:55 #2
Lyt til pidgeot for selve strukturen...

for selve sögningen laver du:

SELECT * FROM table_name WHERE fritid LIKE '%sport%'

% er wildcard, og bruges af LIKE
Avatar billede pidgeot Nybegynder
07. januar 2008 - 13:03 #3
Vil du undgå at ord hvor sport indgår også kommer med (eks. hvis en havde skrevet holdsport i stedet for bare sport), så skal du ud i en betydeligt længere SQL-sætning for at tage højde for når ordet står alene/i starten/slutningen af sætningen.
Avatar billede playr Nybegynder
07. januar 2008 - 13:06 #4
Jamen jeg vil gerne lave det ligesom "tags". Så man bare udfylder et felt der hedder fritid med f.eks.:
sport, dyr, skole, underholdning, fest, karate

og hver enkelte ting er et link som kommer hen til f.eks. search.php?q=fest og så finder den alle der har skrevet "fest" som intereresse/fritid
Avatar billede pidgeot Nybegynder
07. januar 2008 - 13:20 #5
Tags implementeres netop ved at have en undertabel der indeholder en række pr. tag,  hvorefter teksten "sættes sammen" ved udskriftstidspunktet. Når man skal sætte dem ind i sin tabel deler man den givne streng op og indsætter et passende antal rækker.
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

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