Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]zliczanie postów, userów i liczby for z bazy mysql
Forum PHP.pl > Forum > Przedszkole
musiek86
Witam mam skrypt który zlicza mi ile jest w serwisie założonych for, ile postów i ilu userów, wyglada tak:
  1. <?php
  2. //Parametry bazy i serwera
  3. $ip = 'aaa';
  4. $nazwa = 'bbb';
  5. $login = 'ccc';
  6. $pass = 'ddd';
  7.  
  8. //Ustanawiamy połączenie z serwerem mysql
  9. if ( !mysql_connect($ip, $login, $pass) ) {
  10. echo 'Nie moge polaczyc sie z baza danych';
  11. exit (0);
  12. }
  13. //Wybieramy baze danych
  14. if ( !mysql_select_db($nazwa_bazy) ) {
  15. echo 'Blad otwarcia bazy danych';
  16. exit (0);
  17. }
  18. //Zapytanie do bazy celem pobrania danych z odpowiednich komórek
  19. $zapytanie = mysql_query("SELECT COUNT(*) ilosc FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'efora_%_pa_settings' AND TABLE_SCHEMA = 'e-fora'")
  20. ;
  21.  
  22.  
  23. //wyświetlamy wyniki, sprawdzamy, czy zapytanie zwróciło wartość większą od 0
  24. if(mysql_num_rows($zapytanie) > 0) {
  25. /* jeżeli $zapytanie jest pozytywne, to wyświetlamy dane */
  26. $liczba = mysql_fetch_assoc($zapytanie);
  27. echo 'Liczba for:<b> '.$liczba['ilosc'];
  28. echo "</b><br>";
  29.  
  30. }
  31.  
  32. ?>
  33. <?php
  34. //Liczba uzytkowników
  35. $zapytanie1 = mysql_query("SELECT user_id FROM efora__demo__users ORDER BY user_id DESC LIMIT 1");
  36. $zapytanie1a = mysql_query("SELECT user_id FROM efora__fjteam__users ORDER BY user_id DESC LIMIT 1");
  37. $zapytanie1b = mysql_query("SELECT user_id FROM efora__minecraftskill__users ORDER BY user_id DESC LIMIT 1");
  38. $zapytanie1c = mysql_query("SELECT user_id FROM efora__polishteam__users ORDER BY user_id DESC LIMIT 1");
  39. $zapytanie1d = mysql_query("SELECT user_id FROM efora__pkm__users ORDER BY user_id DESC LIMIT 1");
  40. $zapytanie1e = mysql_query("SELECT user_id FROM efora__cskaczooh__users ORDER BY user_id DESC LIMIT 1");
  41. $liczba_userow = mysql_fetch_assoc($zapytanie1);
  42. $liczba_userow2 = mysql_fetch_assoc($zapytanie1a);
  43. $liczba_userow3 = mysql_fetch_assoc($zapytanie1b);
  44. $liczba_userow4 = mysql_fetch_assoc($zapytanie1c);
  45. $liczba_userow5 = mysql_fetch_assoc($zapytanie1d);
  46. $liczba_userow6 = mysql_fetch_assoc($zapytanie1e);
  47. $suma_userow = $liczba_userow[user_id] + $liczba_userow2[user_id] + $liczba_userow3[user_id] + $liczba_userow4[user_id] + $liczba_userow5[user_id] + $liczba_userow6[user_id];
  48. echo 'Liczba użytkowników: <b>'.$suma_userow;
  49. echo "</b><br>";
  50. ?>
  51. <?php
  52. //Liczba postów
  53. //W tym momencie tylko dla jednego fora 'demo'
  54. $zapytanie2 = mysql_query("SELECT post_id FROM efora__demo__posts ORDER BY post_id DESC LIMIT 1");
  55. $zapytanie2a = mysql_query("SELECT post_id FROM efora__fjteam__posts ORDER BY post_id DESC LIMIT 1");
  56. $zapytanie2b = mysql_query("SELECT post_id FROM efora__minecraftskill__posts ORDER BY post_id DESC LIMIT 1");
  57. $zapytanie2c = mysql_query("SELECT post_id FROM efora__polishteam__posts ORDER BY post_id DESC LIMIT 1");
  58. $zapytanie2d = mysql_query("SELECT post_id FROM efora__pkm__posts ORDER BY post_id DESC LIMIT 1");
  59. $zapytanie2e = mysql_query("SELECT post_id FROM efora__cskaczooh__posts ORDER BY post_id DESC LIMIT 1");
  60. $liczba_postow = mysql_fetch_assoc($zapytanie2);
  61. $liczba_postow2 = mysql_fetch_assoc($zapytanie2a);
  62. $liczba_postow3 = mysql_fetch_assoc($zapytanie2b);
  63. $liczba_postow4 = mysql_fetch_assoc($zapytanie2c);
  64. $liczba_postow5 = mysql_fetch_assoc($zapytanie2d);
  65. $liczba_postow6 = mysql_fetch_assoc($zapytanie2e);
  66. $suma_postow = $liczba_postow[post_id] + $liczba_postow2[post_id] + $liczba_postow3[post_id] + $liczba_postow4[post_id] + $liczba_postow5[post_id] + $liczba_postow6[post_id];
  67. echo 'Liczba postów: <b>'.$suma_postow;
  68. echo "</b><br>";
  69. ?>


W tym momencie dla kazdego nowego fora musze dopisywac kolka linijek tekstu by naliczanie było odpowiednie. Zliczanie for oparte jest na jednym konktretnym zapytaniu
  1. $zapytanie = mysql_query("SELECT COUNT(*) ilosc FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'efora_%_pa_settings' AND TABLE_SCHEMA = 'e-fora'"

Myslałem o skonstruowaniu podobnego zapytania do pozostałych obliczen, bym nie musiał juz wiecej dopisywać recznie kodu przy kazdym nowym forum, ale nie wiem, nie umiem sobie dalej sam poradzic. Myslałem o czyms takim:

  1. <?php
  2. $zapytaniee = mysql_query("SELECT COUNT(*) ilosc FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'efora_%_users' AND TABLE_SCHEMA = 'e-fora'")
  3. ;
  4.  
  5.  
  6. //wyświetlamy wyniki, sprawdzamy, czy zapytanie zwróciło wartość większą od 0
  7. if(mysql_num_rows($zapytaniee) > 0) {
  8. /* jeżeli $zapytaniee jest pozytywne, to wyświetlamy dane */
  9. $liczba = mysql_fetch_assoc($zapytaniee);
  10. echo 'Liczba userów test:<b> '.$liczba['ilosc'];
  11. echo "</b><br>";
  12.  
  13. }
  14.  
  15. ?>
  16.  
  17. <?php
  18. $zapytaniee1 = mysql_query("SELECT COUNT(*) ilosc FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'efora_%_posts' AND TABLE_SCHEMA = 'e-fora'")
  19. ;
  20.  
  21.  
  22. //wyświetlamy wyniki, sprawdzamy, czy zapytanie zwróciło wartość większą od 0
  23. if(mysql_num_rows($zapytaniee1) > 0) {
  24. /* jeżeli $zapytaniee1 jest pozytywne, to wyświetlamy dane */
  25. $liczba = mysql_fetch_assoc($zapytaniee1);
  26. echo 'Liczba postow test:<b> '.$liczba['ilosc'];
  27. echo "</b><br>";
  28.  
  29. }
  30.  
  31. ?>

Niwstety wyniki zapytan zwracaja nie poprawne liczby. Może mi ktos pomóc?



Naprawde nikt nie wie jak mi pomoc ? ;>


Naprawde nikt nie wie jak mi pomoc ? ;>
droslaw
W ostanim zapytaniu pobierasz ilość tabel, w których masz posty. Nie ilość postów. Można by było to zrobić na kilka sposobów.
1. Najprostszy. Pobrać listę tabel i pętli wykonać odpowiednie zapytania.
2. Napisać procedurę składowaną
3. Zapisać gdzieś inforamcje o ilości postów i userów, aktualizować przy każdej zmianie. To byłby wg mnie najlepszy sposób bo zliczanie za każdym razem ilości wierszy w tylu tabelach sporo kosztuje.
musiek86
Chyba mnie to przerasta ..

Ktoś mógłby mi to jakos rozpisać logicznie?
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.