Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> statystyki newsow, zliczanie newsow dla danego usera
batat
post
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 8.03.2004
Skąd: Stalowa Wola

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


Mam maly problem przy swoich statystykach newsowych. chce, zeby pokazywalo ile kazdy user ma newsow. udalo mi sie stworzyc cos takiego:

  1. <?php
  2. mysql_connect (&#092;"127.0.0.1\",\"root\",\"krasnal\");
  3.  
  4. $zap = &#092;"SELECT * FROM news\";
  5. $wyk = mysql_query ($zap);
  6. while($wiersz=mysql_fetch_array ($wyk)) {
  7. $ilosc = &#092;"SELECT COUNT(*) FROM news WHERE autor='\".$wiersz['user'].\"'\";
  8. $newsow = mysql_query($ilosc) or die(mysql_error());
  9. $iloscnewsow = mysql_num_rows($newsow);}
  10.  
  11. $w = mysql_query (&#092;"SELECT * FROM users ORDER BY uid\");
  12. echo &#092;"<table width=500 align=center bgcolor=black cellspacing=0 cellpadding=2>\";
  13. while($wiersz=mysql_fetch_array ($w)) 
  14. {echo &#092;"<tr bgcolor=#400000><td>\".$wiersz['user'].\"</td><td>\".$iloscnewsow.\"</td></tr>\";}
  15. echo &#092;"</table>\";
  16. ?>


to mi wypisuje liste userow, ale w miejscu gdzie ma byc liczba newsow zawsze jest 1. jak ktos moze niech pomoze, bo mi jakos nic nie przychodzi do glowy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Bartech
post
Post #2





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 29.08.2003
Skąd: Poznań

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


Twój błąd polega na tym że dokonałeś dwukrotnego podliczenia odpowiedzi z MySQL.
1. Poprzez użycie zapytania
"SELECT COUNT(*) FROM news WHERE autor='".$wiersz['user']."
które w MySQL zwraca wynik w postaci jednego wiersza (rekordu) z liczbą postów od tego użytkownika.
2. Poprzez użycie funkicji
mysql_num_rows($newsow);
dokonałeś podliczenia wszystkich wyników (wierszy - rekordów) zwróconych przez MySQL, dlatego logicze jest że otrzymałeś "1", ponieważ - patrz punkt 1.

Proponuję wykonać to w ten sposób:
  1. <?php
  2. mysql_connect (&#092;"127.0.0.1\",\"root\",\"krasnal\");
  3.  
  4. $zap = &#092;"SELECT * FROM news\";
  5. $wyk = mysql_query ($zap);
  6. while($wiersz=mysql_fetch_array ($wyk)) {
  7. $ilosc = &#092;"SELECT * FROM news WHERE autor='\".$wiersz['user'].\"'\";
  8. $newsow = mysql_query($ilosc) or die(mysql_error());
  9. $iloscnewsow = mysql_num_rows($newsow);}
  10.  
  11. $w = mysql_query (&#092;"SELECT * FROM users ORDER BY uid\");
  12. echo &#092;"<table width=500 align=center bgcolor=black cellspacing=0 cellpadding=2>\";
  13. while($wiersz=mysql_fetch_array ($w)) 
  14. {echo &#092;"<tr bgcolor=#400000><td>\".$wiersz['user'].\"</td><td>\".$iloscnewsow.\"</td></tr>\";}
  15. echo &#092;"</table>\";    
  16. ?>


Zmiany objęły zapytanie w 9 lini kodu, usunąłem funkcję COUNT...

Ten post edytował Bartech 23.06.2004, 18:00:24
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: 26.09.2025 - 17:10