Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] [MySQL] Wyciągnięcie liczby komentarzy
Forum PHP.pl > Forum > Przedszkole
Traper21
Witam.
Mam tabelę w której znajdują się komentarze. Komentarze te mają przyporządkowany nr ID swój oraz wpisu do którego są przypisane. Chciałem napisać skrypt który wyczyta mi z tego liczbę komentarzy do danego wpisu. Żeby nie komplikować posłużyłem się ol,li, którę nr mi, a zresztą sami zobaczcie na skrypt to zrozumiecie o co mi chodzi smile.gif.
Wszystko byłoby fajnie lecz skrypt nie działa. Tzn wypełnia <li> tylko 1 wpis a reszta wpisów jest pusta.
  1. <h1>Wyciągamy z bazy danych liczbę komentarzy</h1>
  2. <ol>
  3. <?php
  4. $baza_nazwa = "name";
  5. $baza_uzytkownik = "root";
  6. $baza_haslo = "asd";
  7. $baza_host = "localhost"; //najczęściej localhost
  8.  
  9. @mysql_connect($baza_host, $baza_uzytkownik, $baza_haslo)
  10. or die('Brak połączenia z serwerem MySQL.');
  11.  
  12. @mysql_select_db($baza_nazwa)
  13. or die('Błąd wyboru bazy danych.');
  14.  
  15. $result = mysql_query('SELECT * FROM `tabelakomentarzy`');
  16.  
  17. for ($i = 1; $i <= 123; $i++)
  18. {
  19. echo "<h2>Wpis $i</h2>";
  20. while ($row = mysql_fetch_assoc($result))
  21. {
  22. if ($row['idkomentarza'] == $i)
  23. {
  24. ?>
  25. <li><?php echo $row['idkomentarza']; ?></li>
  26. <?php
  27. }
  28. }
  29. }
  30.  
  31. ?>
  32. </ol>
sticker
bo po 1 while i inkrementacji i $row == null
Traper21
To jak można rozwiązać ten problem?
qrees
Proponuje zamienić dwie pętle na jedną. Da się to prosto zrobić, masz wszystko co potrzebujesz. Generalnie problem jest w tym, że mysql_fetch_assoc($result) nie zaczyna za każdym razem od początku, tylko od miejsca w którym skończyło poprzednio. Czyli po pierwszym obrocie pętli, będzie zawsze na końcu tabeli.
Traper21
Problem rozwiązałem w ten sposób i działa smile.gif

  1. <h1>Wyciągamy z bazy danych liczbę komentarzy</h1>
  2. <?php
  3.  
  4. $baza_nazwa = "name";
  5. $baza_uzytkownik = "root";
  6. $baza_haslo = "asd";
  7. $baza_host = "localhost"; //najczęściej localhost
  8.  
  9. @mysql_connect($baza_host, $baza_uzytkownik, $baza_haslo)
  10. or die('Brak połączenia z serwerem MySQL.');
  11.  
  12. @mysql_select_db($baza_nazwa)
  13. or die('Błąd wyboru bazy danych.');
  14.  
  15. for ($i=1; $i <= 123; $i++)
  16. {
  17.  
  18. $result = mysql_query('SELECT * FROM `tabelakomentarzy` WHERE idkomentarza='.$i.'');
  19. echo "<h2>Wpis $i</h2>";
  20. echo "<ol>";
  21. while ($row = mysql_fetch_assoc($result))
  22. {
  23. ?>
  24.  
  25. <li><?php echo $row['idkomentarza']; ?></li>
  26.  
  27. <?php
  28. }
  29. echo "</ol>";
  30.  } 
  31. ?>
  32. </ol>


Teraz tylko chciałbym jakoś zliczyć ile tych wpisów jest smile.gif, bo liczenie po każdym ol i li nie jest zbyt wydajne.

EDYCJA *****************************************

Już sobie poradziłem, mianowicie smile.gif

  1. <h1>Wyciągamy z bazy danych liczbę komentarzy</h1>
  2. <?php
  3.  
  4. $baza_nazwa = "name";
  5. $baza_uzytkownik = "root";
  6. $baza_haslo = "asd";
  7. $baza_host = "localhost"; //najczęściej localhost
  8.  
  9. @mysql_connect($baza_host, $baza_uzytkownik, $baza_haslo)
  10. or die('Brak połączenia z serwerem MySQL.');
  11.  
  12. @mysql_select_db($baza_nazwa)
  13. or die('Błąd wyboru bazy danych.');
  14.  
  15. for ($i=1; $i <= 123; $i++)
  16. {
  17.  
  18. $tresc_zapytania = "SELECT doid FROM tabelakomentarzy WHERE idkomentarza=$i";
  19. $zapytanie = mysql_query($tresc_zapytania);
  20. $wiersze = mysql_num_rows($zapytanie);
  21.  
  22. echo "<h2>Wpis $i</h2>";
  23. ?>
  24.  
  25. <?php echo $wiersze; ?>
  26.  
  27. <?php
  28.  } 
  29. ?>
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.