Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Problem z wyświetlaniem danych z bazy.
Forum PHP.pl > Forum > PHP
jaca19
Witam,

Mam problem z wyświetlaniem danych z bazy. Przerabiam skrypt newsów i przy wyświetlaniu artykułów dodałem wyświetlanie artykułów z tej samej kategorii. Wszystko działa dopóki do artykułu nie zostanie dodany komentarz, wtedy artykuły z tej samej kategorii się nie wyświetlają. Myślę że przyczyną jest złe użycie pętli while.

A teraz trochę kodu:

  1. // nagłówek dla komentarzy
  2. echo '</div><div class="grid_6"><h3>Komentarze</h3>';
  3.  
  4. // tworzymy zapytanie na komentarze
  5. $result = mysql_query("SELECT * FROM articles_comments WHERE id_art='$id' ORDER BY data DESC");
  6. // jeżli są jakieś komentarze
  7. if(mysql_num_rows($result)<1)
  8. {
  9. echo 'Narazie brak komentarzy. Twój może być pierwszy!';
  10. }
  11. else {
  12. // to je wyśietlamy
  13. while($row = mysql_fetch_array($result))
  14. {
  15. echo '<b>'.stripslashes($row['nick']).'</b> ('.date("d.m.Y, H:i", $row['data']).')<br />';
  16. // przy treści zamieniamy znaki nowej lini \n \rn \r na <br />
  17. echo str_replace(array("\r\n", "\r", "\n"), "<br />", stripslashes($row['tresc'])).'<br /><br />';
  18. }
  19. }
  20.  
  21.  
  22.  
  23. // nagłówek dodawania komentarzy
  24. echo '<h3>Dodaj komentarz</h3>';
  25. // wyświetlamy prosty formularz
  26. echo '<form action="" method="POST">
  27. Nick: <br />
  28. <input type="text" name="nick" style="width:400px;"><br />
  29. Tresc: <br />
  30. <textarea name="tresc" style="width:400px;height:200px;"></textarea><br />
  31. <input type="submit" name="ok" value="Dodaj">
  32. </form>';
  33.  
  34. //Wyświetlanie artykułów z tej samej kategorii
  35.  
  36. echo '<h3>Artykuły z tej kategorii:</h3>';
  37. $cat = stripslashes($row['id_cat']);
  38. $result = mysql_query("SELECT * FROM articles WHERE id_cat='$cat' ORDER BY data DESC LIMIT 5") or die(mysql_error());
  39.  
  40. while($row = mysql_fetch_array($result))
  41. {
  42. echo '<a href="art.php?id='.$row['id'].'"><b>'.stripslashes($row['tytul']).'</b><br></a> ('.date("d.m.Y, H:i", $row['data']).'),';echo stripslashes($row['opis']).'<br /><br />';
  43. }
  44.  
  45. // rozłączenie z bazą danych
  46.  
  47.  
  48. // koniec buforowania
  49.  
  50. ?>


Tutaj jest przykład bez komentarzy (działający):http://jaca21.home.pl/Skrypt/artykuly/art.php?id=5
No i przykład z komentarzem (niedziałający):http://jaca21.home.pl/Skrypt/artykuly/art.php?id=7

I jak pisałem na wstępie coś nie tak z pętlą while w komentarzach chyba, tak jakby kiedy istnieje komentarz kolejny while nie jest wykonywany.
nospor
Kategorie pobierasz tak:
$cat = stripslashes($row['id_cat']);
A przecież wyswietlając komentarze nadpisujesz $row
jaca19
Dzięki wielkie smile.gif Nie wierze że tego nie zauważyłem, zmieniłem zmienną w komentarzach z $row na $row2 i działa. Pozdrawiam!
nospor
Gdybyś włączył wyświetlanie wszystkich błędów to byś dostał parę błędów, które być może zwróciłyby Twoją uwagę.

Tu masz napisane jak włączyć to wyświetlanie:
Temat: Jak poprawnie zada pytanie
Włącz je tak na przyszłość. Również zastosuj się do pozostałych porad a na pewno ci się to przyda
jaca19
Przyda się na pewno, dzięki za pomoc wink.gif
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.