ОБСУЖДЕНИЕ

Добавление новых комментарие

1 ответов 4 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Решил создать на своём сайте возможность добавление комментариев, но что то не выходит. Что бы было легче вам выявить ошибки в моих действиях опишу их как можно подробней.

1. Я создал в базе денных таблицу из 5 полей под названием "comments":

link removed

2. В конце странице написал код, для вывода комментариев из базы данных:

Код:
<!--Вывод комментариев из базы данных-->
<? 
echo "<p class='post'>Коментарии:</p>";

$result3 = mysql_query ("SELECT * FROM comments WHERE post='fast'",$db);
if (mysql_num_rows ($result3) > 0)
{ 

$myrow3 = mysql_fetch_array($result3);

do
{
printf ("<div class='post_div'><p class='post_add'>Комментарий добавил(а): 
<strong class='color'>%s</strong> <br> Дата: <f class='color'>%s </p> </f>
<p class='post_text'>%s</p></div>",$myrow3["author"], $myrow3["date"], $myrow3["text"]);
}
while ($myrow3 = mysql_fetch_array($result3));
} 

$result4 = mysql_query ("SELECT * FROM comments_setting",$db);

$myrow4 = mysql_fetch_array($result4); 

?>

3. В базе данных в ручную заполнил все поля в таблице "comments", для проверке когда для вывода комментариев из базы данных:

link removed

4. Проверка прошла успешно, комментарии выводятся.

link removed

5. Создал в базе данных таблицу под названием "comments_setting" из 3 полей, для защиты от спама:

link removed

6. Заполнил её:



7. Создал форму для добавления новых комментариев с код:



Код:
<!--Добавление нового комментария-->
<p class='vaiii_comment'> Добавить Ваш коммментарий:</p>
<form action="../blocks/comment.php" method="post" name="form_com">
<p><label>Ваше имя: </label><input name="author" type="text" size="25" maxlength="25"></p>
<p><label>Текст комментария: <br> <textarea name="text" cols="28" rows="4"></textarea></label></p>

Введите сумму чисел с картинки:
<table width="110" border="0">
<tr>
<td>
<img SRC="<? echo $myrow4["img"]; ?>" HSPACE=0 VSPACE=10 >
</td>
<td>
<input name="pr" type="text" size="2" maxlength="5">
<input name="id" type="hidden" value="<? echo $fast; ?>">
</td>
</tr>
</table>
<input name="sud_com" type="submit" value="Комментировать">
</form>

8. Создал comments.php с кодом:

Код:
<? include("../blocks/bd.php"); ?> <!--Подключение к базе-->

<?
if (isset($_POST['author']))
{
$author = $_POST ['author'];
}

if (isset($_POST['text']))
{
$text = $_POST ['text'];
}

if (isset($_POST['pr']))
{
$pr = $_POST ['pr'];
}

if (isset($_POST['sud_com']))
{
$sud_com = $_POST ['sud_com'];
}

if (isset($_POST['fast']))
{
$fast = $_POST ['fast'];

if (isset($sub_com))
{
if (isset($author)) {trim($author); }
else {$author = "";}

if (isset($text)) {trim($text); }
else {$text = "";}

if (empty($author) or empty($text))	
{
exit ("<p>Вы ввели не всю информацию, вернитесь назад и заполните все поля. <br> <input name='back' type='button' value='Вернуться назад' onlick='java script:self.back();' >");
}

$author = stripslashes($author);
$text = stripslashes($text);
$author = htmlspecialchars($author);
$text = htmlspecialchars($text);

$result = mysql_query ("SELECT summa FROM comments_setting",$db);
$myrow = mysql_fetch_array($result);

if ($pr == $myrow["summa"])
{
$date = date("Y-m-d");
$result2 = mysql_query ("INSERT INTO comments (post,author,text,date) VALUES ('$fast','$author','$text','$date')",$db);
}
else
{
exit ("<p>Вы ввели неверную сумму цифр с картинки. <br> <input name='back' type='button' value='Вернуться назад' onlick='java script:self.back();' >");	
}

}

?>

Ну вот и всё, к сожалению функция добавление новых комментариев не работает. Надеюсь вы мне поможите устранить эту ошибку.
 
Я тут эксперементировал и понял что если не много изменить код в файле comment.php то всё заработает!

Код:
<? include("../blocks/bd.php"); ?> <!--Подключение к базе-->

<?

if (isset($sub_com))
{
if (isset($author)) {trim($author); }
else {$author = "";}

if (isset($text)) {trim($text); }
else {$text = "";}
}

if (empty($author) or empty($text))	
{
exit ("<p>Вы ввели не всю информацию, вернитесь назад и заполните все поля. <br> <input name='back' type='button' value='Вернуться назад' onlick='java script:self.back();' >");
}

$author = stripslashes($author);
$text = stripslashes($text);
$author = htmlspecialchars($author);
$text = htmlspecialchars($text);

$result = mysql_query ("SELECT summa FROM comments_setting",$db);
$myrow = mysql_fetch_array($result);

if ($pr == $myrow["summa"])
{
$date = date("Y-m-d");
$result2 = mysql_query ("INSERT INTO comments (post,author,text,date) VALUES ('fast','$author','$text','$date')",$db);
}
else
{
exit ("<p>Вы ввели неверную сумму цифр с картинки. <br> <input name='back' type='button' value='Вернуться назад' onlick='java script:self.back();' >");	
}

?>

То есть дело было в основном в скобочке "}", её надо было ставить не в конец а после

Код:
if (isset($sub_com))
{
if (isset($author)) {trim($author); }
else {$author = "";}

if (isset($text)) {trim($text); }
else {$text = "";}