Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wyświetlenie ilości rekordów
Forum PHP.pl > Forum > Przedszkole
MikroUser
Witam,

nie wiem jak zrealizować, bardzo proszę o pomoc.

Mam sobie tabelkę bazy danych:

Foto_Katalogi
ID|Name|Ile
1|Przyroda|10
2|Auta|30
3|Budynki|20

chcę żeby w menu mi się wyświetlała liczba zdjęć dla katalogu:
Przyroda (10)
Auta (30)
Budynki (20)

Tylko myk jest taki że tworzę sobie menu, jako html przy pomocy szablonów. I wtedy w tym pliku menu.html mam na sztywno wpisane ilości.
w momencie jak dodaje nowy rekord np. dla katalogu Auta, chcę żeby w pliku menu.html poprawnie wczytać ilość.
Nie chcę od nowa generować plik menu.html (fizycznie to nie ma sensu!).

Jak to zrobić? Napisać menu.php i wtedy pobierać ilość rekordów dla każdego katalogu? Wtedy za każdym razem jak się wyświetla menu, skrypt musi się łączyć z bazą danych, odczytywać dane i je wyświetlać.
Dla jakiej ilości użytkowników ma to sens i jak to można obejść?

Dziękuję.
MatheW
Cytat
Jak to zrobić? Napisać menu.php i wtedy pobierać ilość rekordów dla każdego katalogu? Wtedy za każdym razem jak się wyświetla menu, skrypt musi się łączyć z bazą danych, odczytywać dane i je wyświetlać. Dla jakiej ilości użytkowników ma to sens i jak to można obejść?
Wierz mi - nie będzie to absolutnie żadne zwolnienie skryptu (oczywiscie jakies bedzie - 0,001s?). Baza MySQL jest bardzo szybka. Nie masz się czym martwić i rób to na SQL
occulkot
Najlepsze w tym wypadku bedzie zcacheowanie wynikow badz do pliku zewnetrzenego - badz do sesji uzytkownika - wowczas menu za kazdym razem generowane bedzie bez dostepu do mysqla

Cytat
Wierz mi - nie będzie to absolutnie żadne zwolnienie skryptu (oczywiscie jakies bedzie - 0,001s?). Baza MySQL jest bardzo szybka. Nie masz się czym martwić i rób to na SQL


Wszystko zalezy od wielkosci serwisu - przy malej stronie z jednym userem online takie wybieranie menu kazdorazowo nie powinno zbytnio przeciezyc bazy - jednak serwisy z 30-40 userami online - wyswietlajace nie tylko "menu" ale takze ostatnie newsy, ostatnie komentarze itd - potrafia mocno docisnac baze danych. Sam gdzies 2 lata temu mialem taki problem - strona dzialala bez zarzutow dopoki nie zaczelo wchodzic coraz wiecej osob - pozniej ilosc osob online wzrosla i hoster zagrozil ze nas odlaczy jesli nie zoptymalizujemy skryptow php ;]. Nagle z 20 zapytan do generacji podstrony zrobily sie 2 biggrin.gif - bo reszta poleciala do cache.
MikroUser
OK.

Ale co jeśli się scheszuje menu do zmiennych sesyjnych dla użytkownika, a w tym czasie dochodzi co najmniej ponad 20 nowych rekordów? Sceshowane dane nie będą wtedy aktualne ...

Rozumiem że nie ma żadnego innego rozwiązania ...

alo to jak w takim razie radzi sobie np. http://allegro.pl/20585_filmy.html
mają katalogi a w nawiasie ilość dostępnych rekordów. U nich jest to plik HTML. Na pewno się szybciej wykonuje niż co chwila skrypt w php.

Jak oni to robią ?

Dziękuję za odpowiedź.
mike
Cytat(MikroUser @ 30.10.2006, 10:57:02 ) *
alo to jak w takim razie radzi sobie np. http://allegro.pl/20585_filmy.html
mają katalogi a w nawiasie ilość dostępnych rekordów. U nich jest to plik HTML. Na pewno się szybciej wykonuje niż co chwila skrypt w php.

To normalny skrypt php a to że rozszerzenie ma takie to nic nie oznacza.
Równie dobrze może byc rozszerzenie .jpg tongue.gif
Poczytaj o mod_rewrite
occulkot
Cytat(MikroUser @ 30.10.2006, 12:57:02 ) *
OK.

Ale co jeśli się scheszuje menu do zmiennych sesyjnych dla użytkownika, a w tym czasie dochodzi co najmniej ponad 20 nowych rekordów? Sceshowane dane nie będą wtedy aktualne ...

Rozumiem że nie ma żadnego innego rozwiązania ...


Ustawiasz lifetime dla cache na niski - wowczas uzytkownik bedzie aktualizowal wyniki raz na minute.

Poza tym najlepsze imo jest polaczenie sesji i plikow - w plikach cacheujasz cale wytworzone przez jedego uzytkownika menu - nastepny uzytkownik sprawdza tylko czy scacheowany plik nie jest za stary - porownujac np daty modyfikacji z plikiem menu_changed (aktualizowanym dla kazdej zmiany w menu) - jesli jest starszy - ponownie pobiera menu zapisuje do pliku i sobie do sesji - jesli nie jest - pobiera tylko dane pliku. Zapytanie do pliku odbywa sie wg lifetime danego cache
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.