Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Nie Działa Zliczanie Komentarzy, [php+mysql]
tara
post 15.08.2004, 18:05:41
Post #1





Grupa: Zarejestrowani
Postów: 147
Pomógł: 0
Dołączył: 3.03.2004
Skąd: śląsk

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


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 ?


--------------------
MySQL 4.0.15 | PHP 4.3.3 | Apache 1.3.28 | Kwrite | phpMyAdmin 2.5.6-rc1 | Linux MDK 10.1 pp
Go to the top of the page
+Quote Post
fones
post 15.08.2004, 19:36:11
Post #2





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 7.08.2004
Skąd: Brześć Kujawski

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


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

Ten post edytował fones 15.08.2004, 19:38:27


--------------------
Politechnika Warszawwska, Informatyka, G1I3
Aktualnie C i C++, ale nadal bardzo php ;p
Go to the top of the page
+Quote Post
tumczasty
post 15.08.2004, 20:13:04
Post #3





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 2.08.2004
Skąd: Rzeszów

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


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ć
Go to the top of the page
+Quote Post
MarcinZ
post 16.08.2004, 06:58:52
Post #4





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 18.03.2004
Skąd: Golub-Dobrzyń

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


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..


--------------------
PHP 4.3.11 apache 1.3.31 i wszystko
Go to the top of the page
+Quote Post
tara
post 16.08.2004, 16:50:32
Post #5





Grupa: Zarejestrowani
Postów: 147
Pomógł: 0
Dołączył: 3.03.2004
Skąd: śląsk

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


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


--------------------
MySQL 4.0.15 | PHP 4.3.3 | Apache 1.3.28 | Kwrite | phpMyAdmin 2.5.6-rc1 | Linux MDK 10.1 pp
Go to the top of the page
+Quote Post
tumczasty
post 17.08.2004, 16:13:55
Post #6





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 2.08.2004
Skąd: Rzeszów

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


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

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: 18.06.2025 - 14:42