behamot
6.07.2004, 10:12:49
robię zapytanie w php do bazy
$rezult = mysql_query(tu zapytanie np where kot =' filemon' )
teraz chcę pobrać ilość wyników
$ile = mysql_num_rows($rezult)
ta wartość $ile jest mi bardzo potrzebna do ustalenia ile będzie stron wyników.
Ale teraz chciałbym aby w $rezult znalazły się tylko wyniki od 1 do 10
(dla where kot='filemon')
normalnie to bym użył w zapytaniu limit ale jak zaznaczyłem najpierw potrzebna mi jest całkowita ilość 'filemonów' występujących w bazie. a potem tylko wyniki od 1 do 10 , 11-20 itd
czy można to zrobić tak, aby nie
musieć jeszcze raz przeszukiwać bazy (z poleceniem limit np limit 10,20)(szkoda czasu )
przecież wyniki już mam, więc jak pobrać tylko te np od 10 do 20 dla następnej strony wyświetleń.
kszychu
6.07.2004, 10:25:58
Tak czy siak, gdzieś te wyniki musisz przechować. Możesz to oczywiście zrobić w sesji i pobierać tylko tę część (10-20), która ci bedzie potrzebna. Nie wiem jednak czy opłaca się robić takie kombinacje alpejskie.
Ja to robie tak, że robię dwa wyszukiwania o tym samym where, przy czym jedno zlicza znalezione rekordy, a drugie wyświetla dane i ma LIMIT. Na każdej stronie wyników, żeby nie komplikować, jest tak samo.
behamot
6.07.2004, 10:38:52
Zrobiłem tak jak mówisz, jednak baza ma mieć docelowo ok 3000 wierszy po 40 kolumn.
więc powtórne wyszukiwanie wydaje mi się dosyć obciążającym elementem, szczególnie jeżeli skrypt może byc wywołany w danym momencie wiele razy (strona główna)
. Z phpi sql mam doczynienia od jakiegoś tygodnia, więc może się mylę. Na razie baza rekorów ma tylko kilkaset więc jest ok...Zastanawiam się co bedzie później...
Może ktoś powie coś więcej na temat wydajności php i sql, bo mam o tym nikłe pojęcie.
Dzięki za odpowiedź.
e4you
6.07.2004, 12:14:24
jak liczysz rekordy uzywaj count(*) jest wydajniesze
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.