вставка дубликата записи на страницу обновления php

1

Всякий раз, когда я вводил значение в первый раз и добавлял запись, он добавлялся отлично, но всякий раз, когда я обновляю свой браузер, нажав F5, он показывает сообщение "страница, на которую вы ищете информацию, которую вы ввели...", и вставляйте повторяющуюся запись. HTML-код определяет ниже:

  <?php include("Connection.php"); ?>


  <form  role="form" method="post">
                              <div class="col-md-6">
                                  <div class="form-group">
                                      <label>Type Name</label>
                                      <input name="emptype" class="form-control" placeholder="Employee ID">
                                  </div>
                                  <div  class="form-group">
                                      <label>Type Description</label>
                                      <input name="typedecs" class="form-control" placeholder="First Name">
                                  </div>





                              </div>

                              <div class="col-md-12 text-right">
                                <button type="submit" name="addtype" class="btn btn-primary">Add Type</button>
                                <button type="reset" class="btn btn-default">Reset</button>
                            </div>
</form>

below is my PHP Code


     <?php

           $emptype=$_POST['emptype'];
         $typedesc=$_POST['typedecs'];
              if(isset($_POST['addtype']))
              {

         $query=mysql_query("insert into emptype(typename,typedesc)values('$emptype','$typedesc')")or die("<script>alert('Error');</script>");


          echo '<script>showAlert();window.setTimeout(function () {HideAlert();},3000);</script>';

Что-то мне не хватает? Пожалуйста помоги.

  • 1
    Что вы ожидаете, вы отправляете форму снова после обновления.
  • 2
    сделайте перенаправление, используя заголовок , после успешной вставки
Теги:
duplicates
insert

3 ответа

2

предложение: используйте mysqli_ * или PDO вместо функций mysql_ *, но вы написали код в нем, поэтому я также дал код.

Просто запустите запрос select, чтобы проверить, существует ли запись в базе данных, если она существует, а затем не вставлять ее снова.

  $query=mysql_query("SELECT * FROM emptype WHERE typename = '$emptype' AND typedesc='$typedesc') or die(mysql_error());

if (mysql_num_rows($query)<=0)
{
      $query=mysql_query("insert into emptype(typename,typedesc)values('$emptype','$typedesc')")or die("<script>alert('Error');</script>");

}
  • 0
    Спасибо за предложение .. это работает! но я все еще получаю это предупреждение "страница, которую вы ищете, использовала информацию, которую вы ввели значение php, вставленное при обновлении", как я могу ее решить
0

Один из вариантов может состоять в том, чтобы проверить, уже ли это значение в вашей базе данных.

Источник: пример из PHP.net - mysql_query

// Formulate Query
// This is the best way to perform an SQL query
// For more examples, see mysql_real_escape_string()
$query = sprintf("SELECT * FROM emptype 
    WHERE typename='%s' AND typedesc='%s'",
    mysql_real_escape_string($emptype),
    mysql_real_escape_string($typdesc));

// Perform Query
$result = mysql_query($query) or die(mysql_error());

// Get num rows
$num_rows = mysql_num_rows($result);

// If $num_rows is False - It not a duplicate
if(!$num_rows)
...

Рассмотрим использование PDO PHP.net - PDO - функции mysql обесцениваются.

0

Я думаю, это потому, что php-скрипт (insert query) находится на одной странице HTML-формы, поэтому, обновляя страницу, вы говорите браузеру снова вызвать PHP-скрипт с предыдущими данными. поэтому, чтобы предотвратить разделение HTML-формы от php, чтобы код был таким: 1- HTML.php

<?php include("Connection.php"); ?>
<form  role="form" method="post" action="Action.php">
                          <div class="col-md-6">
                              <div class="form-group">
                                  <label>Type Name</label>
                                  <input name="emptype" class="form-control" placeholder="Employee ID">
                              </div>
                              <div  class="form-group">
                                  <label>Type Description</label>
                                  <input name="typedecs" class="form-control" placeholder="First Name">
                              </div>
                        </div>
                          <div class="col-md-12 text-right">
                           <input type="submit" value="submit">
                        </div> </form>

2- Action.php

<?php include("Connection.php");
       $emptype=$_POST['emptype'];
     $typedesc=$_POST['typedecs'];
          if(isset($_POST['addtype']))
          {

     $query=mysql_query("insert into emptype(typename,typedesc)values('$emptype','$typedesc')")or die("<script>alert('Error');</script>");

      echo '<script>showAlert();window.setTimeout(function () {HideAlert();},3000);</script>';  echo "<meta http-equiv='refresh' content='0;url=html.php'>";

?>

это сделает страницу html.php page call.php при нажатии кнопки отправки, тогда будет запущен скрипт php, после чего он перенаправит вас на страницу html.php еще раз

Ещё вопросы

Сообщество Overcoder
Наверх
Меню