Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] [MySQL] Wyciągnięcie liczby komentarzy, Problemy słabeusza php
Traper21
post 2.12.2007, 01:26:08
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 2.07.2007

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


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>


Ten post edytował Traper21 2.12.2007, 01:27:06
Go to the top of the page
+Quote Post
sticker
post 2.12.2007, 01:34:09
Post #2





Grupa: Zarejestrowani
Postów: 611
Pomógł: 19
Dołączył: 28.02.2005
Skąd: Wrocław

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


bo po 1 while i inkrementacji i $row == null


--------------------
Go to the top of the page
+Quote Post
Traper21
post 2.12.2007, 01:45:00
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 2.07.2007

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


To jak można rozwiązać ten problem?
Go to the top of the page
+Quote Post
qrees
post 2.12.2007, 02:00:32
Post #4





Grupa: Zarejestrowani
Postów: 275
Pomógł: 44
Dołączył: 23.11.2007

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


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.
Go to the top of the page
+Quote Post
Traper21
post 2.12.2007, 10:03:36
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 2.07.2007

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


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


Ten post edytował Traper21 2.12.2007, 10:28:50
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: 24.07.2025 - 20:01