1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

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

Тема в разделе "Базы данных и администрирование", создана пользователем xJlaIIax, 10 июн 2009.

  1. xJlaIIax

    xJlaIIax Гость

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

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

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

    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", для проверке когда для вывода комментариев из базы данных:

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

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

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

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

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

    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();' >");	
    }
    
    }
    
    ?>
    Ну вот и всё, к сожалению функция добавление новых комментариев не работает. Надеюсь вы мне поможите устранить эту ошибку.
     
  2. xJlaIIax

    xJlaIIax Гость

    Репутация:
    0
    Я тут эксперементировал и понял что если не много изменить код в файле 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 = "";}
     
Загрузка...

Поделиться этой страницей