私はPHPがとても新しいです。私はここに私のコードに適合する答えを見つけようとしましたが、何も見つかりませんでした。リフレッシュ時にDBの挿入が重複しないようにするにはどうすればよいですか?
F5キーを押すと、フォームからの最後の挿入がデータベースに複製されます。別のページにリダイレクトせずにどうやってそれを防ぐのですか?
私は$_SESSION
についていくつかの回答を見ましたが、私はそれを使用する方法を理解していませんでした。 私は訂正コードの説明をしたいと思います、ありがとうございます。
PS、db接続は別のファイルにあります。私に答える必要がある場合は、それを入れます。
は、ここに私のコードです:
addToMembersList.php
<DOCTYPE html5>
<html>
<head>
<?php
include_once "db_connect.php";
$member=mysqli_query($mysqli,"select * from members");
?>
<style>
table,tr,td{
border: 1px solid black;
border-collapse: collapse;
}
</style>
</head>
<body>
<table>
<tr>
<td><b>First name</b></td>
<td><b>Last name</b></td>
<td><b>Email</b></td>
<td><b>Website</b></td>
<td><b>Comment</b></td>
<td><b>Gender</b></td>
</tr>
<?php
if($member){
while($row = $member->fetch_assoc()){ ?>
<tr>
<td><?php echo $row['first_name'];?></td>
<td><?php echo $row['last_name'];?></td>
<td><?php echo $row['email'];?></td>
<td><?php echo '<a href="'.$row['website'].'">'.$row['website'].'</a>';?></td>
<td><?php echo $row['comment'];?></td>
<td><?php echo $row['gender'];?></td>
<td><button type="submit" onclick="deleteMember.php" value="$row['id']">Delete</button></td>
</tr>
<?php }
}?>
</table>
</body>
</html>
$query = "insert into members (first_name, last_name, email, website, comment, gender) values ('%s', '%s', '%s', '%s', '%s', '%s')";
$query = sprintf($query,$_POST['fName'], $_POST['lName'], $_POST['email'], $_POST['website'], $_POST['comment'], $_POST[$gender_select]);
$result = $mysqli ->query($query);
}
}
?>
のindex.php
<DOCTYPE html5>
<html>
<head>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script>
function loadmembersList(response,textStatus,jqXHR){
request = $.ajax({
url:"memberListRequest.php",
type:"get"
})
request.done(function(response,textStatus,jqXHR){
$("#member_list").html(response);
});
}
$(document).ready(loadmembersList);
</script>
</head>
<body>
<form action="", method="POST">
First name:<input type="text" name="fName">
<br>
Last name:<input type="text" name="lName">
<br>
Email:<input type="text" name="email">
<br>
Website:<input type="text" name="website">
<br>
Comment:<input type="textarea" name="comment" placeholder="your text here">
<br>
Gender:<input type="radio" name="Male"> Male <input type="radio"
name="Female"> Female <input type="radio" name="Other"> Other
<br>
<input type="submit">
</form>
<div id="member_list"></div>
</body>
</html>
一方、 ''には '!'がありません。今、あなたが重複を避けたいのであれば、これを行う/修正する方法があまりにも多くあります。あなたはそれをGoogleにすることができます。多くの結果がありますが、私はそれを100%確信しています。 –
解決策は、クライアントがそのページに座らないようにすることです。 302を別のステータス/確認ページに発行します。 – Sammitch
'