2015-03-22 3 views
0

Привет, ребята, это мой первый проект PHP, поэтому я новичок, и я разрабатываю форум-форум, но мне нужно разработать систему комментариев здесь, поэтому я использую следующие код для принятия значений из моей HTML-формы, которая затем присваивает эти значения двум переменным PHP, и они вызывают функцию, которую я сохранил в другом файле PHP.Метод формы HTML формы, представляющий повторяющиеся значения на странице reload

Теперь проблема заключается в том, что эти значения передаются автоматически при обновлении моей веб-страницы, поэтому моя база данных заполняется теми же значениями, которые я назначил этим переменным, поэтому мне нужна ваша помощь в ее сортировке.

<html> 
<head> 
<?php include 'menu.php'?> 
<?php include 'include/core.php'?> 

<?php 
if($_SERVER['REQUEST_METHOD']=="POST") 
{ 
$nme = trim($_POST['name']); 
$cmnt = trim($_POST['comments']); 

if(!empty($nme) && !empty($cmnt)) 
{ 

create_commentsystem($nme,$cmnt); 
unset($nme); 
unset($cmnt); 

} 
else 
{ 
echo "Please enter the complete details"; 
unset($nme); 
unset($cmnt); 
} 

} 
?> 



<link href="css/main.css" rel="stylesheet" type="text/css"> 
<link href="css/auth.css" rel="stylesheet" type="text/css"> 
<title>Doctors Forum</title> 

</head> 
<body> 
<div id="container"> 
<div class="tab" align="Center"> 
    Page Content Here 
    </div> 
    <div class="content"> 
    <form method="post" name="form1" action=""> 
    <input class="field" type="text" name="name" placeholder="Name"   style="width:635px; height:40px;"/></br></br> 
    <textarea class="field" name="comments" placeholder="Leave Comments  Here..." style="width:635px; height:100px;"></textarea></br></br> 
    <input class="btn" type="submit" value="Post" style="width:150px;" > 
    </form> 
    </div> 
    <div id="" class="tab" align="center"> 
    <div> 
    </div> 
    </body> 
    </html>' 

А вот функция, которая вызывается при нажатии на кнопку, и проблема та же запись вставляется ровно в два раза каждый раз, когда я перезагрузить страницу `функция create_commentsystem ($ имя, $ комментариев)

{ 

    $name = $_POST['name']; 
    $comments = $_POST['comments']; 

    $conn = dbConnect(); 

    mysqli_query($conn, "INSERT INTO comments(name, comments)  VALUES('$name','$comments')"); 



    $result = mysqli_query($conn, "SELECT * FROM comments ORDER BY id ASC"); 

    while($row=mysqli_fetch_array($result)) 
{ 
    echo "<div class='comments_content'>"; 
    echo "<h4><a href='delete_commentsystem()?id=" . $row['id'] . "'> X</a> </h4>"; 
    echo "<h1>" . $row['name'] . "</h1>"; 
    echo "<h2>" . $row['comments'] . "</h2></br></br>"; 
    echo "<h3>" . $row['date_publish'] . "</h3>"; 
    echo "</div>"; 
    } 
    $conn->close(); 


}` 
+2

после сохранения записи используйте заголовок ("location: xxx.php"); умереть; – Butterfly

ответ

1

При обновлении веб-страницы браузер отправляет запрос еще раз. Самое простое решение - сохранить комментарий, чтобы использовать заголовок для перенаправления.

Пример:

if (add_comment_success()){ 
    header('Location: http://www.current.url.com/'); 
    exit(); 
} 
0

Две вещи можно сделать:

  1. перенаправлять как предложено другие ответы
  2. Если перенаправлять не вариант, проверьте в БД, чтобы увидеть если такое же имя и комментарий существует и не добавьте его

Нет другого w чтобы предотвратить это.

+0

Я думаю, что первое решение - лучшее, потому что комментарий может быть дублирован – ThehalfHeart

0

Вы можете попробовать добавления

'?submit=true' 

к вашему URL действия. Использовать

$_GET['submit'] 

для доступа к значению 'submit'. Ваш код может выглядеть так:

if($_GET['submit'] == true): 
    #form processing code 
    $_GET['submit'] = false; 
    header('your original file'); 
endif; 
Смежные вопросы