Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nie Działa Zliczanie Komentarzy
Forum PHP.pl > Forum > Gotowe rozwiązania
tara
do rzeczy:

Mam kod, który na stronie main.php wyświetla newsy, i ilość komentarzy do nich z tabeli , "...koment" :
  1. <?
  2.  
  3.  
  4.  
  5.  
  6. $con=mysql_connect('', '', '');
  7.  // pobieramy nazwę tabeli i numer id.
  8. $wynik1 = mysql_query (&#092;"SELECT * FROM news\");
  9.  while ($rekord = mysql_fetch_array ($wynik1)) {
  10.  $komenttabela = &#092;"\".stripslashes($rekord[7]).\"koment\";
  11.  $id=&#092;"\".stripslashes($rekord[0]).\"\";
  12.  }
  13. // zliczamy ilość rekordów w tabeli \"..koment\"
  14.  $ilosc = &#092;"SELECT count(*) FROM $komenttabela WHERE id=$id\"; 
  15. $ilosc = mysql_fetch_row(mysql_query($ilosc)); 
  16.  $komentarze = $ilosc[0];
  17. // wybieramy wszystko z newsów i wyświetlamy newsa...
  18. $wynik = mysql_query (&#092;"SELECT * FROM news\");
  19. while ($rekord = mysql_fetch_array ($wynik)) {
  20. $id=&#092;".....index.php?akcja=\".stripslashes($rekord[7]).\"&id=\".stripslashes($rekord[0]).\"\">Więcej...</A><BR>&nbsp;Komentarzy: ($komentarze)<BR></TD></TR></TABLE>\";
  21. }
  22.  
  23.  
  24.  mysql_close($con);
  25.  
  26. ?>


Skrypt działa, ale jeśli mam kilka newsów na stronie, to wszystkie mają taką samą ilość komentarzy jak ostatni, mimo że nie mają komentarzy blink.gif.

Nie wyświela żadnych błędów.

CO ejst przczyną że wyświetla wszędzie tą samą ilośc koemntarzy ?
fones
nie działa bo masz dwie takie same zmienne... z tym ze jedna chce kozystac z drugie... tej nie mam bo zostala zastapiona przez ta co wywoluje....ta zmienna to $ilosc. Troche uwagi i bedzie dobrze... a po drugie.... hm spojrz sam jak to powinno byc:
  1. <?php
  2.  
  3. $ques= &#092;"SELECT count(*) FROM $komenttabela WHERE id=$id\"; 
  4. $ilosc = mysql_fetch_row(mysql_query($ques)); 
  5. $komentarze = $ilosc['count(*)'];
  6.  
  7. ?>


pozdro guitar.gif
tumczasty
fones, nie w tym rzecz; w ogóle wszystko poplątałeś tongue.gif

tara: zauważ, że przypisywanie wartości zmiennym $ilosc i $komentarze wykonywane jest tylko 1 raz, bez względu na ilość newsów. a wartości zmiennej $komenttabela są kolejno nadpisywane, i w końcu zostaje wartość właśnie dla ostatniego newsa, która jest wykorzystywana dla wszystkich pozostałych. trzeba przerobić ten skrypt --- jedna pętla while() powinna wystarczyć --- powinieneś sobie z tym poradzić
MarcinZ
Prawdopodobnie chodzi tobie iż masz ten sam wynik np.: jakis news 1 komentarze(8);
jakis news 2 komentarze (8) - a powinno byc np. 5..

w tym momencie to powinieneś użyć takiej małej funkcji jaką jest mysql_free_result(); sam kiedyś miałem problem ale doszedłem do tego..

  1. <?php
  2. //..twój kod....
  3. while(wybranie z bazy wczesniej jakie to niusy som i ich ide){
  4. //dopiero pozniej dajesz zlicznanie ile jest komentarz
  5. $ilosc = &#092;"SELECT count(*) FROM $komenttabela WHERE id=$id\"; 
  6. $ilosc = mysql_fetch_row(mysql_query($ilosc)); 
  7. $komentarze = $ilosc[0];
  8. //.... dlaszy kod wyświetlania
  9. //a na koniec przed zamknięciem pętli...
  10. $jakas_zmienna = mysql_free_result($ilosc);
  11. }
  12.  
  13. ?>

to powinno wystarczyc..
jak by co to podesle c swoje..
tara
jakoś sobei nie mogę poradzić... sad.gif

Co tutaj powinno być ?:
while(wybranie z bazy wczesniej jakie to niusy som i ich ide){

Co to jest za zmienna, czy to obojętne ?:
$jakas_zmienna = mysql_free_result($ilosc);

Spróbowałem to mi wyświetliło newsy trzykrotnie z tą samą liczbą komentarzy, mimo że każdy miał inne blink.gif
tumczasty
  1. <?php
  2. mysql_connect('', '', '');
  3. // pobieramy nazwę tabeli i numer id.
  4. $wynik1 = mysql_query ('SELECT * FROM news');
  5.  while ($rekord = mysql_fetch_array ($wynik1)) {
  6.  $komenttabela = stripslashes($rekord[7]).'koment';
  7.  $id=stripslashes($rekord[0]);
  8. // zliczamy ilość rekordów w tabeli \"..koment\"
  9.  list($komentarze) = mysql_fetch_row(mysql_query(&#092;"SELECT count(*) FROM $komenttabela WHERE id=$id\"));
  10. // wybieramy wszystko z newsów i wyświetlamy newsa...
  11.  $id=&#092;".....index.php?akcja=\".stripslashes($rekord[7]).\"&id=\".stripslashes($rekord[0]).\"\">Więcej...</A><BR>&nbsp;Komentarzy: ($komentarze)<BR></TD></TR></TABLE>\";
  12. }
  13. ?>
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-2024 Invision Power Services, Inc.