webForumDet fria alternativet

Söka som på Facebook

5 svar · 1 086 visningar · startad av webbo

webboMedlem sedan maj 201131 inlägg
#1

Jag vill bygga en sökfunktion till min sajt.

Sökningen ska fungera på ungefär samma sätt som på Facebook (och många andra liknande sajter såklart). Dvs, du trycker in första bokstaven på ett namn så dyker ett antal matchande personer upp i en ruta under sökfältet.

Vilken är den bästa approachen om jag vill bygga detta i PHP?

1. Att vid varje "keyup" göra en fråga direkt till databasen
2. Att vid varje "keyup" söka i en textfil (som fylls på så fort en ny användare reggar sig på sajten)

Jag vill ju såklart att sökfunktionen ska gå fort och inte tugga sönder min databas...

Alla tips och kloka ord är varmt välkomna!

:)

newseedMedlem sedan maj 2010117 inlägg
#2

Använd jQuery och autocomplete. Du kan "mata" funktionen med ajax-information. Om du är rädd för att tugga sönder din databas bör du dock vara försiktig med hur ofta du uppdaterar under tiden man skriver. T ex med en timeout innan den söker och/eller krav på ett visst antal tecken.

http://docs.jquery.com/UI/Autocomplete

webboMedlem sedan maj 201131 inlägg
#3

Ok, tack för svar. Går det alltså snabbare att söka direkt i databasen istället för att "cacha" datan i en textfil och söka i den?

newseedMedlem sedan maj 2010117 inlägg
#4

Det beror på vad du vill göra och hur mycket data som finns. Om det är ett begränsat antal värde som ska föreslås så kanske man kan lägga ut det direkt. Om man ska söka i en databas med tusentals värde så får man nog göra en AJAX-sökning efterhand som man skriver. Det senare innebär dock precis som du nämnde i första inlägget en risk för väldigt många anrop till databasen.

webboMedlem sedan maj 201131 inlägg
#5

Ok, jag tror jag är på rätt spår nu. Kör förmodligen frågorna direkt mot databasen. Tack för svar.

dwmediaMedlem sedan nov. 2006188 inlägg
#6

vid sökning kan du ju göra like %% så den söker efter likande händelser med ajax, vilket skulle minska resultatne hela tiden för varje ord man skriver.

130 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)