![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 256 Pomógł: 7 Dołączył: 1.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Napisałem skrypt newsów, który dzieli je na strony według idów. Wszystko jest ok dopóki nie skasuje któregoś ida np. 12, 11, 9, 8… Kiedy tak zrobię na końcu 1 i początku 2 wyświetla się ten sam news. I nie wiem dlaczego (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Oraz ten fragment kodu:
Może bardzo obciążyć serwer mysql (w przypadku dużej ilości newsów i odwiedzających). Jak inaczej to rozwiązać? Ten post edytował Hectic 1.05.2006, 21:41:09 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Może bardzo obciążyć serwer mysql (w przypadku dużej ilości newsów i odwiedzających). Jak inaczej to rozwiązać? Nie przesadzaj. Bazy danych Nie są, ąż tak bardzo wrażliwe. Chociaż można twoje zapytanie zoptymalizować.
Dalej...
...zamień na...
...zakładając, że $news_page to ilość newsów na stronę. Konstrukcja zapytania z LIMIT (i OFFSET) wyeliminuje Twóje problemy po wywaleniu id z BD. A teraz czytaj komentarze.
Tylko nie myśl, że jak wkleisz moje zalecenia to skrypt zacznie cudownie działać. Co to, to nie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) . Ja staram sie tylko pokazać Tobie właściwy kierunek. Pozdrowienia. Ten post edytował LBO 2.05.2006, 00:55:35 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 256 Pomógł: 7 Dołączył: 1.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem tego
Cytat //wtedy to $id_news = mysql_query($select_id); //i to niepotrzebne $wiersze = mysql_num_rows($id_news); W takim razie czym mam to zastąpić? Ten post edytował Hectic 2.05.2006, 08:58:21 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 225 Pomógł: 0 Dołączył: 1.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 256 Pomógł: 7 Dołączył: 1.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ale co oznacza offset? Znalazłem dokumentacje tylko w języku angielskim (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif)
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Ale co oznacza offset? Znalazłem dokumentacje tylko w języku angielskim troche samodzielnosci:http://www.google.com/search?hs=3Tp&hl=pl&...ukaj&lr=lang_pl juz pierwszy wynik zawiera to czego szukasz |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 0 Dołączył: 30.04.2006 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Witam
Denerwuje mnie fakt, że piszecie w ten sposób: Kod $select_id = 'Select COUNT(*) FROM news'; $id_news = mysql_query($select_id); Czy nie lepiej, szybciej i czytelniej jest tak: Kod $id_news = mysql_query('Select COUNT(*) FROM news');
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Może i szybciej, ale wyobraź sobie, że te zapytanie, może być jeszcze w międzyczasie modyfikowane. Nie w tym konkretnym przykładzie, ale jednak.
Załóżmy, że chcesz skasować pokaźną liczbę userów z BD. Ich id(ientyfikatory) są przekazane w tablicy $_GET['ids']. Tworzysz funkcję (albo lepiej - metodę), gdzie w prametrze przekazujesz tą tablicę.
Mam nadzieję, że zrozumiałeś. P.S. Moga byc błędy, bo się spieszę, ale nie mogłem tego zostawić bez odpowiedzi. P.P.S. Nie trzeba od razu robić, tak jak napisałem, ale jest to chyba przydatny nawyk dla programisty. W jakimś stopniu zwiększa póżniejszą zdolność programu do adaptacji/przeróbek przy mniejszej, włożonej w to pracy. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 225 Pomógł: 0 Dołączył: 1.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Może i masz rację... zły przykład dałem, bo - akurat w tym przypadku - SQL posiada odpowiednie funkcje/gramatykę do jego obsłużenia (cały czas zapominam o IN, hyhyhy). Ale to nie zmienia faktu, że może zaistnieć wiele innych czynników, gdzie trzymanie podstawowego zapytania i jego modyfikacja, zależna od zaistniałych warunków jest bardzo przydatna. Weź pod uwagę ADOdb - ten layer posiada (musi je posiadać) odpowiednie narzędzia do zmieniania zapytań z powodu np. nieobługiwania przez daną Bazę konkretnej SQL komendy i za pomoca ich robi do na około.
Ten post edytował LBO 2.05.2006, 14:04:40 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 06:08 |