Potrzebuję pomocy w rozwiązaniu takiego problemu.
Pod artykułem chciałbym zamieścić w kolejności komentarze, których treść są pobierane z bazy danych.
Chciałbym osiągnąć taki efekt:
Zadaję pytanie, pobieram dane i zawieram je w zmiennej przy pomocy fetch. Następnie tą zmienną wykonuję w dwóch pętlach. Jedna jest po to aby umieścić dane w przygotowanym szablonie HTML - ta pętla jest zapisana w pliku z treścią logiczną.
Druga natomiast jest pętlą while, która byłaby wpisana w między treścią HTML w pliku z treścią wykonania.
Mam niestety taki problem:
Pobieram niestety tylko dwa wersy z bazy danych i chyba popełniam błąd przy fetch, bo ostateczny efekt wizualny jest taki jaki zamierzałem osiągnąć, lecz zawsze wyświetla mi tylko jeden komentarz - czyli jedną wykonaną dobrze pętle, a dwa komentarze po wywołaniu var_dump, choć w bazie mam więcej.
Tutaj jest treść skryptu:
$pytanie = $polaczenie->prepare("SELECT * FROM `endo_artykuly_komentarze` WHERE id_artykulu=:param1 ORDER BY id_komentarza"); $pytanie->bindValue(':param1', 1); $pytanie->execute(); $wynik = $pytanie->fetch(PDO::FETCH_ASSOC); for ($i=0; $i<$liczba_komentarzy; $i++) { // tutaj właśnie wykonuje tylko jeden raz prawidłowo pętle $komentarz[$i] = ' <div class="kom_tab"> <div class="kom_pojemnik"> <table class="kom_autor"> <tr><td>'.$wynik['data'].'</td><td>'.$wynik['autor_komentarza'].'</td><td>napisał:</td></tr> </table> <p class="kom_tresc">'.$wynik['tresc'].'</p> </div> </div>'; } echo ' <pre>'; echo ' </pre>'; $i = 0; while ($i<$liczba_komentarzy) { $i++; }
A to mi pokazuje var_dump:
[0]=> ["id_komentarza"]=> string(1) "2" ["id_artykulu"]=> string(1) "1" ["autor_komentarza"]=> string(6) "Erigor" ["data"]=> string(16) "29.12.2014 18:22" ["tresc"]=> string(14) "Dobry artykuł" } [1]=> ["id_komentarza"]=> string(1) "3" ["id_artykulu"]=> string(1) "1" ["autor_komentarza"]=> string(8) "Grzesiek" ["data"]=> string(16) "29.12.2014 18:36" ["tresc"]=> string(11) "Komentarz 2" } }
A to print_r:
29.12.2014 18:21 Grzesiek napisał: Komentarz
Nie jestem pewien, ale chyba problem tkwi w źle skomponowanej pierwszej pętli albo źle dobieram funkcję fetch.