Postanowiłem stworzyć przy użyciu Smarty możliwość komentowania newsów na moim portalu. Podkreślam od razu, że przerabiam skrypt z połączenia portalu z forum (IPB przy użyciu IPB SDK) na "zwykłe możliwości", tzn. wpisanie komentarza do bazy danych, a następnie wyświetlenie go na podstronie z komentarzami. Poniżej przedstawiam odpowiednie fragmenty pliku .php i pliku .tpl.
Plik comment.php
$zapytanie = "SELECT `tekst`, `autor`, `data` FROM `fp_db_comments` WHERE id=$cleanID ORDER BY data ASC"; $ilosc_wierszy = mysql_query("SELECT * FROM `fp_db_comments` WHERE id=$cleanID ORDER BY data ASC"); $idzapytania = mysql_query($zapytanie); $ile_kom = mysql_num_rows($ilosc_wierszy); while ($wiersz = mysql_fetch_row($idzapytania)) { $smarty -> assign('DATATEKST',$wiersz[0]); $smarty -> assign('DATAAUTOR',$wiersz[1]); $smarty -> assign('DATADATA',$wiersz[2]); } $smarty -> assign('ILE_KOM',$ile_kom);
Plik koment.tpl
{section name=comments loop=$ILE_KOM} <table width="95%" border="0" cellspacing="1" cellpadding="0"> <tr> <td valign="middle" bgcolor="#C4C7CA"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> </tr> </tr> <tr> <td valign="top" bgcolor="#D8D9DC" class="kom_down"> {$DATATEKST} </td> </tr> {/section}
Ilość komentarzy wyświetla dobrą (tzn. tworzy dobrą ilość tabel - plik .tpl), ale jest problem z wyświetleniem zawartości zapytania. Zamiast wyświetlać wszystkie komentarze, wyświetla on najnowszy, bądź najstarszy w zależności od metody sortowania. Jak sprawić, aby wyświetlały się wszystkie komentarze, a nie jeden ?