Citat:
Originally posted by Robert@Jul 6 2004, 23:32
Har en sida där jag tänkte begränsa antalet sökträffar om de blir för många, och därför be användaren att begränsa sin sökning (ja ni fattar...).
Grejjen är väl den att man gör detta främst av performance skäl, eller hur? Så då undrar jag; för att få reda på att det har returnerats för många träffar så måste ju ändå sql frågan ställas, så vad vinner man egentligen på det hela? Man tvingar faktiskt användaren att ställa *ytterligare* en sql fråga, dock lite mer optimerad, men ändå?
Det är ju inte heller så bra att först göra en count för då får du ju i snitt ännu sämre prestanda (först en count sats, sedan den "riktiga" slq frågan).
Är jag ute och cyklar? :blink:
|
Varför vill du "tvinga användaren" att skriva bättre söksträng? Det är inte direkt användarvänligt.
I självaste verket kan du "begränsa" din query för varje sida:
exempel:
Du har 1 000 sidor med innehållet test i kolumnen "data".
Så du gör mer eller mindre:
$max_hits_page = 100; //Antal träffar per sida
$page = $_GET['page']; //Nuvarande sida, sidan fås genom GET-request
$start = (( $page -1 ) * $max_hits_page); //Vilken rad vill jag starta med ? Ifall det är sida 2 och vi har 100/page så blir resultatet 100 (det är ju där vi vill starta)
select * from data_table where data like '%test%' limit $start,$max_hits_page;
Då får du en query som inte returnerar mer än 100 rader.
Hur du sen räknar fram hur många sidor du har fått och hur du ritar upp [1][2] .. osv länkar lämnas åt dig som en övning
/Zoran