Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP + MySQL] Skryt redakcja_ilosc_newsow.php, Skryt liczący ilość newsów w ciągu jakiegoś okresu czasu
henio
post 10.05.2008, 16:21:20
Post #1





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 15.10.2004
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Utworzyłem skrypt, kóry liczy mi liczbę newsów każdego użytkownika. Chciałbym go rozszerzyc tak aby oprócz tego liczył mi jeszcze liczbe newsów dziś, wczoraj, w ciagu 7 dni i w ciągu 30 dni. Mógłbym to zrobić zwiększając liczbę zapytań do bazy danych. A chodzi mi o to, aby używać jak najmniej zapytań do bazy danych. Więc czy ma ktoś jakiś pomysł?

Zapytanie o którym mowa:
"SELECT count(*) AS ilosc_artykul, rodzaj_newsa FROM newsy WHERE id_uzytkownik = ".$rekord['id_uzytkownik']." GROUP BY rodzaj_newsa ORDER BY ilosc_artykul DESC"

  1. <?php
  2.  
  3.  
  4. // Załączenie funkcji i kodu odpowiadającego za połączenie z bazą danych
  5. include("../baza.php");
  6. include("funkcje/funkcje.php");
  7.  
  8. // Sprawdzanie czy użytkownik jest zalgowany
  9. if(!empty($_SESSION['login']) && !empty($_SESSION['haslo']) && !empty($_SESSION['ostatnio_online']) && !empty($_SESSION['id_uzytkownik']))
  10. { // Jeśli tak to uzyska dosęp do strony
  11.  
  12. // Sprawdzanie czy zalogowany użytkownik jest członkiem redakcji
  13. if($_SESSION['zarejestrowany'] !== 'Uzytkownik')
  14. { // Jeśli tak to uzyska dostęp do strony
  15.  
  16. naglowek("Redakcja w liczbach");
  17. include("naglowek.php");
  18. include("menu.php");
  19. echo "<div id=\"tresc\">\n";
  20.  
  21. // Utworzenie tablicy newsy, która bedzie przechowywać liczbę newsów i artykułów n
    apisanych przez redaktorów
  22. $newsy = array();
  23.  
  24. // Utowrzenie zmiennych tymaczowych, które później będą przechowywać liczbę poszcz
    ególnych rodzajów newsów
  25. $liczba_zwykly_news = 0;
  26. $liczba_wydarzenie = 0;
  27. $liczba_artykul = 0;
  28. $liczba_ogloszenie = 0;
  29.  
  30. // Pobranie z bazy danych listy wszystkich członków redakcji i zapisanie rekordów 
    w tablicy asocjacyjnej
  31. $wynik = mysqli_query($mysql, "SELECT id_uzytkownik, login, ostatnio_online FROM uzytkownicy WHERE zarejes
    trowany != 'Uzytkownik' ORDER BY login ASC"
    ) or die ('Zapytanie jest błędne!<br />'.mysqli_error($mysql));
  32.  
  33. while($rekord = mysqli_fetch_assoc($wynik))
  34. {
  35.  
  36. // Pobranie z bazy danych liczby zwykłych newsów, wydarzeń i artykułów każdego red
    aktora
  37. $wynik2 = mysqli_query($mysql, "SELECT count(*) AS ilosc_artykul, rodzaj_newsa FROM newsy WHERE id_uzytkownik = ".$rekord['id_uzytkownik']." GROUP BY rodzaj_newsa ORDER BY ilosc_artykul DESC") or die ('Zapytanie jest błędne!<br />'.mysqli_error($mysql));
  38.  
  39. // Policzenie ile było dzisiaj, wczoraj , w ciągu 7 dni, w ciągu 30 dni i w ogóle
  40. while($rekord2 = mysqli_fetch_assoc($wynik2))
  41. {
  42.  
  43. // Sprawdzenie jak to jest rodzaj newsa: zwykły news, wydarzenie, artykuł czy ogło
    szenie
  44. if($rekord2['rodzaj_newsa'] == 'zwykly_news')
  45. { // Jeżeli to jest zwykly news to zmieniona zostaje zmienna tymczasowa przechowując
    a liczbę zwykłych newsów dodanych przez danego użytkownika
  46. $liczba_zwykly_news = $rekord2['ilosc_artykul'];
  47. }
  48. elseif($rekord2['rodzaj_newsa'] == 'wydarzenie')
  49. { // Jeżeli to jest wydarzenie to zmieniona zostaje zmienna tymczasowa przechowująca
     liczbę wydarzeń dodanych przez danego użytkownika
  50. $liczba_wydarzenie = $rekord2['ilosc_artykul'];
  51. }
  52. elseif($rekord2['rodzaj_newsa'] == 'artykul')
  53. { // Jeżeli to jest artykuł to zmieniona zostaje zmienna tymczasowa przechowująca li
    czbę artykułów dodanych przez danego użytkownika
  54. $liczba_artykul = $rekord2['ilosc_artykul'];
  55. }
  56. elseif($rekord2['rodzaj_newsa'] == 'ogloszenie')
  57. { // Jeżeli to jest ogłszenie to zmieniona zostaje zmienna tymczasowa przechowująca 
    liczbę ogłoszeń dodanych przez danego użytkownika
  58. $liczba_ogloszenie = $rekord2['ilosc_artykul'];
  59. }
  60. }
  61.  
  62. // Policzenie łącznej ilości wszystkich rodzajów newsa
  63. $suma_rodzaj = $liczba_zwykly_news + $liczba_wydarzenie + $liczba_artykul + $liczba_ogloszenie;
  64.  
  65. // Wstawienie danych do tablicy
  66. $newsy[] = array('Autor' => "".$rekord['login']."",
  67.  'Zwykle_newsy' => "$liczba_zwykly_news",
  68.  'Wydarzenia' => "$liczba_wydarzenie",
  69.  'Artykuly' => "$liczba_artykul",
  70.  'Ogloszenia' => "$liczba_artykul",
  71.  'Lacznie' => "$suma_rodzaj",
  72.  'Ostatnio_online' => "".$rekord['ostatnio_online'].""
  73.  );
  74. }
  75.  
  76. // Posortowanie danych malejąco po ilości zwykłych newsów
  77. foreach ($newsy as $key => $rows) 
  78. {
  79. $autor[$key] = $rows['Autor'];
  80. $zwykle_newsy[$key] = $rows['Zwykle_newsy'];
  81. $wydarzenia[$key] = $rows['Wydarzenia'];
  82. $artykuly[$key] = $rows['Artykuly'];
  83. $ogloszenia[$key] = $rows['Ogloszenia'];
  84. $lacznie[$key] = $rows['Lacznie'];
  85. $ostatnio_online[$key] = $rows['Ostatnio_online'];
  86. }
  87. array_multisort($zwykle_newsy, SORT_DESC, $wydarzenia, SORT_DESC, $artykuly, SORT_DESC, $newsy);
  88.  
  89. // Wyświetlenie danych w tabeli
  90. ?>
  91. <table>
  92. <tr><th>Redaktor</th><th>Zwykłe newsy</th><th>Wydarzenia</th><th>Artykuły</th><th>Ogłoszenia</th><th>Łącznie</th><th>Ostatnio online</th></tr>
  93. <?php
  94. for($i=0; $i<count($newsy); $i++)
  95. {
  96. echo "<tr><td>".$newsy[$i]['Autor']."</td><td>".$newsy[$i]['Zwykle_newsy']."</td><td>".$newsy[$i]['Wydarzenia']."</td><td>".$newsy[$i]['Artykuly']."</td><td>".$newsy[$i]['Ogloszenia']."</td><td>".$newsy[$i]['Lacznie']."</td><td>".$newsy[$i]['Ostatnio_online']."</td></tr>\n";
  97. }
  98. ?>
  99. </table>
  100. <?php
  101.  
  102. echo "</div>\n";
  103. include("stopka.php");
  104. }
  105. else
  106. { // Jeśli nie to pojawi się komunikat o braku dostępu do tej części panelu administ
    racyjnego
  107. include("brak_dostepu.php");
  108. }
  109. }
  110. else
  111. { // Jeśli nie to pokaże się komunikat o konieczności zalogowania się
  112. include("zalogowany_nie.php");
  113. }
  114. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 09:27