На странице в цикле выводятся записи из бд, при нажатии на ссылку "читать" в get передается id строки и показывается полный текст, есть возможность добавления комментариев. HTML: <form name='form1' method='post' action='./module/comment/add.php' align=center> <label>Имя:<br> <input type='text' name='name'> </label> <br> <label>Комментарий:<br> <textarea name='com_text' cols='40' rows='10'> </textarea> </label> <br><br> <input name='table' type='hidden' value='$table'> <input name='id_data' type='hidden' value='$nomer'> <input name='' type='submit' value='Добавить' class='old_button'> </form> в первом скрытом поле передается имя таблицы, куда добавлять комментарии, во втором скрытом поле передается id записи, которую комментировали. На странице вывода кратких версий записей, возле каждой записи в инклюде висит такой код: PHP: <? mysql_connect($hostname, $username, $password) or die ("Невозможно установить соединение с базой данных"); $com = "SELECT id FROM comments_$table ORDER BY id DESС"; $com_res = mysql_query($com) or die(mysql_error()); $comment = mysql_fetch_assoc($com_res); if($comment['id'] == 0) { $comment['id'] = 0; } echo "<p><a href='$url".$row['id']."'>Комментарии (".$comment['id'].")</a></p>"; ?> естественно он выводит возле каждой записи одно и то же число (это я заметил позже =\). Второй хидден в форме добавления комментариев я сделал после того, как понял что он выводит везде одно и то же. Но никак не могу понять, как сделать так, чтобы возле каждой записи он выводил именно то колличество комментариев, которое сделано в ней, хоть и понял, что все-таки второй хидден для этого нужен, не могу его никак применить.
Эм, почти ничего не понял из прочитанного. Просто при комменте поста добавляй +1 к комментам (допустим к полю count_comments), а потом в цикле выводи записи и подставляй $comment['count_comments'];
вот это PHP: if($comment['id'] == 0) { $comment['id'] = 0; } просто гениально! Зачем? Даже два "зачем?" 1. зачем у тебя их несколько разных? 2. зачем оно нужно на стороне пользователя, пусть даже и в hidden? по большому счету количество комментариев, это количество строк, которые вернул твой запрос? Тогда копай mysql_num_rows тебе не только второй, тебе и первый hidden не нужен на самом деле.
первый хидден передает имя таблицы в которую и из которой надо выводить комментарии, имя таблицы выглядит так comments_имя. Но таблицы делят комментарии по категориям, а не по записям, они скидывают все в одну кучу и для того, чтобы понять какой комментарий для какой записи, есть второй хидден, он передает id записи, которую комментируют и потом можно понять, какая запись сколько раз прокомментирована. PHP: <? if($comment['id'] == 0) { $comment['id'] = 0; } ?> Когда в таблице 0 записей, оно не отображает даже нуля, потому что я упорядочил id по desc и вывел последнюю цифру.
PHP: <? mysql_connect($hostname, $username, $password) or die ("Невозможно установить соединение с базой данных"); $com = mysql_query("SELECT * FROM comments_$table WHERE id_data='$row[id]'"); $comment = mysql_num_rows($com); echo "<p><a href='$url".$row['id']."'>Комментарии (".$comment.")</a></p>"; ?> karakh спасибо за подсказку в виде mysql_num_rows
Вот скажи, зачем у пользователя в браузере информация об имени таблицы? Неужели для того, чтобы передать что-то из одной части php-скрипта в другую часть php-скрипта нужно прогонять это через юзера? А потом ты пихаешь пришедшее от пользователя значение в запрос, в качестве части имени таблицы в бд. И да, понять сколько раз прокомментирована какая запись тоже можно не передавая ее id браузеру.