Всякий раз, когда я вводил значение в первый раз и добавлял запись, он добавлялся отлично, но всякий раз, когда я обновляю свой браузер, нажав 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>';
Что-то мне не хватает? Пожалуйста помоги.
предложение: используйте 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>");
}
Один из вариантов может состоять в том, чтобы проверить, уже ли это значение в вашей базе данных.
Источник: пример из 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 обесцениваются.
Я думаю, это потому, что 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 еще раз