ユーザーがデータベースからレコードを削除するために選択するメニューを使用しています。メニューの下に、データベースのレコードを表示するテーブルがあります。ページを手動で更新すると、テーブルの表示結果にレコードが削除されたことが示されますが、最善の努力にもかかわらず、#results セクションにメッセージが表示されないようです。
HTMLは次のとおりです。
<form action="" method="POST" name="deleteAccountForm">
<table>
<thead>
<th>Delete Account</th>
<th></th>
</thead>
<tbody>
<tr>
<td><select name="deleteMenu" id="deleteMenu">
<?php
foreach($accounts as $key=>$value) { ?>
<option name="account_name" value="<?php echo $value['account_id_PK']; ?>"><?php echo $value['account_name']; ?></option>
<?php } ?>
</select>
</td>
<td><input type="submit" name="delete" value="Delete"></td>
</tr>
</tbody>
</table>
</form>
そして私のJavascript:
var delAccount = function(e) {
e.preventDefault();
var data = $('#deleteAccountForm').serialize();
$.ajax({
type: "POST",
url: "inc/functions.php",
data: data,
beforeSend: function() {
$('#results').html('processing');
},
error: function() {
$('#results').html('failure');
},
success: function(response) {
$('#results').html(response);
},
timeout: 3000,
});
};
そして私のPHP:
function delete_account() {
require(ROOT_PATH . "/inc/database.php");
$deleteAccount = $_POST['deleteMenu'];
try {
$results = $db->prepare("DELETE FROM account WHERE account_id_PK = ?");
$results->bindValue(1, $deleteAccount);
$results->execute();
} catch(Exception $e) {
echo "ERROR: Data could not be removed from the database. " . $e;
exit;
}
}
また、これが完了した後に関数を実行して、ページを手動で更新せずに表示テーブルの結果を更新する方法も知っておく必要があります。