Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] system newsów
Hectic
post
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)

  1. <?php
  2. /****************************/
  3. $page = $_GET['page'];
  4. $page2 = $page - 1;
  5. $select_id = 'Select id FROM news';
  6. $id_news = mysql_query($select_id);
  7. $wiersze = mysql_num_rows($id_news);
  8. $idy = $wiersze + 1;
  9. $idy2 = $page2 * $news_page;
  10. /****************************/
  11. if(!isset($_GET['page']))
  12. {
  13. $stop = $idy;
  14. }
  15. else
  16. { 
  17. $stop = $idy - $idy2;
  18. }
  19. /****************************/
  20.  
  21. $select_news = 'Select title, text, nick, date FROM news WHERE id < '.$stop.' ORDER BY id DESC LIMIT '.$news_page.'';
  22. $zapytanie = mysql_query($select_news);
  23. while($wiersz = mysql_fetch_row($zapytanie)) 
  24. {
  25. if (empty($wiersz[0]) and empty($wiersz[1]) and empty($wiersz[2]) and empty($wiersz[3]))
  26. { } // nie rób nic
  27. else 
  28. {
  29. echo '<BR><table class="news" align="center" width="95%" border="0">'; 
  30. echo '<tr><td><b>Tytuł:</b> ';
  31. echo $wiersz[0]; 
  32. echo '</td><td align="right">';
  33. echo '<b>Data:</b> ';
  34. printf ("%s", $wiersz[3]); 
  35. echo '</td><tr><td colspan="2" align="right"><br>';
  36. printf ("%s", $wiersz[1]); 
  37. echo '</td></tr><tr><td><br>';
  38. echo '<b>Autor:</b> ';
  39. printf ("%s", $wiersz[2]); 
  40. echo '</td><td align="right">Komentarze[0]</td></tr>';
  41. echo '</td></tr></table><hr width="95%">';
  42. }
  43. }
  44.  
  45. echo '<p class="news" align="center">Strona: ';
  46. $ilosc = ceil($wiersze / $news_page);
  47.  
  48. for($strona = 1; $ilosc >= $strona ; $strona++) 
  49. {
  50. echo '[<a href="index.php?go=news&page='.$strona.'">'.$strona.'</a>]';
  51. }
  52. ?>

Oraz ten fragment kodu:
  1. <?php
  2. $select_id = 'Select id FROM news';
  3. $id_news = mysql_query($select_id);
  4. $wiersze = mysql_num_rows($id_news);
  5. ?>

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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
LBO
post
Post #2





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ę.
  1. <?php
  2.  
  3. public function deleteUsers($ids) {
  4. //podstawowe zapytanie znajduję się w zmiennej
  5. //$this->sql = 'DELETE FROM users WHERE';
  6. foreach ($ids as $id) {
  7. $this->sql .= ' id = '.$id.' OR';
  8. }
  9. //wiem, że po zakończeniu iteracji przez tablice
  10. //zapytanie będzie zawierać nadmiarowe OR, ale
  11. //jest to tylko przykład. sam się możesz pokusić o
  12. //poprawną implementację.
  13.  
  14. $this->executeQuery();
  15. //wysyłasz zapytanie do BD, pobierasz wynik, przetwarzasz etc.
  16. }
  17.  
  18. ?>

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.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 08:44