ajaxform — я пытаюсь создать кнопку для удаления строки данных, выбранных из MySQL, используя PHP и AJAX.

Как следует из заголовка, я создал кнопку и поместил ее в качестве последнего столбца в таблице. Таблица взята из MySQL и отображает все значения правильно. Есть также другая форма для новых записей, которая отлично работает.

Я провёл свой код через соответствующие инструменты валидатора онлайн, и они прошли без ошибок. Итак, мне интересно, где моя проблема в том, что он не передает значение строки, которая будет удалена. Или действительно, что в целом неверно, или если есть лучший способ это закодировать. Я довольно новичок в PHP и особенно в AJAX, поэтому мне интересно, где я ошибаюсь? Заранее спасибо, и если понадобится дополнительная информация, я с радостью приеду.

Вот код для HTML и PHP:

<?php

@$db = new mysqli('localhost', 'root', 'pwdpwd', 'pet_shop');
if (mysqli_connect_errno())
{
echo 'Cannot connect to database: ' . mysqli_connect_error();
}
else
{
$groomings = 'SELECT * from grooming';
$result = $db->query($groomings);
}
?>
<table align="center" border="1">
<tr>
<th>ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>Address</th>
<th>City</th>
<th>State</th>
<th>Zip</th>
<th>Phone</th>
<th>Email</th>
<th>Pet Type</th>
<th>Breed</th>
<th>Pet Name</th>
<th>Neutered/Spayed</th>
<th>Pet Age</th>
<th>Edit/Delete</th>
</tr>

<?php
while ($row = $result->fetch_assoc())

{
echo '<tr>';
echo '<td>' . $row['GroomingID'] . '</td>';
echo '<td>' . $row['FirstName'] . '</td>';
echo '<td>' . $row['LastName'] . '</td>';
echo '<td>' . $row['Address'] . '</td>';
echo '<td>' . $row['City'] . '</td>';
echo '<td>' . $row['State'] . '</td>';
echo '<td>' . $row['Zip'] . '</td>';
echo '<td>' . $row['PhoneNumber'] . '</td>';
echo '<td>' . $row['Email'] . '</td>';
echo '<td>' . $row['PetType'] . '</td>';
echo '<td>' . $row['Breed'] . '</td>';
echo '<td>' . $row['PetName'] . '</td>';
echo '<td>' . $row['NeuteredOrSpayed'] . '</td>';
echo '<td>' . $row['PetAge'] . '</td>';
echo '<td>' . '<button action="delete.php" class="del_btn" rel="'.$row["GroomingID"].'">' . 'Delete' . '</button>' . '</td>';
echo '</tr>';
}
?>

И Jquery / Ajax:

<script>
$(document).ready(function(){
$('.del_btn').click(function(){
var del_id = $(this).attr('rel');
$.post('delete.php', {delete_id:del_id}, function(data) {
if(data == 'true') {
$('#'+del_id).remove();
} else {
alert('Could not delete!');
}
});
});
});
</script>

</table>
<?php
$result->free();
$db->close();
?>

А вот файл delete.php для выполнения запроса:

<?php
function dbString($string)
{
$string=trim($string);
if (get_magic_quotes_gpc())
{
return $string;
}
else
{
return addslashes($string);
}
}@$db = new mysqli('localhost', 'root', 'pwdpwd', 'pet_shop');
if (mysqli_connect_errno())
{
echo 'Cannot connect to database: ' . mysqli_connect_error();
}

if(isset($_POST['delete_id']) && !empty($_POST['delete_id']))
{
$delete_id = mysql_real_escape_string($_POST['delete_id']);
$result = mysql_query("DELETE FROM grooming WHERE GroomingID=".$delete_id);
}
?>

<!DOCTYPE HTML>
<html>
<head>
</head>
<body
onload="document.createElement('form').submit.call(document.getElementById('newEntry'))">
<form action="admin.php" id="newEntry">
<input type="submit" value="confirm">
</form>
</body>

1

Решение

В вашем реальном коде вы пытаетесь удалить элемент HTML, который не существует

$('#'+del_id).remove();

Я нигде не вижу в вашем коде элемента с таким идентификатором. Попробуйте сделать это:

<?php
while ($row = $result->fetch_assoc())

{
echo '<tr id="'.$row['GroomingID'].'">'; // <-- HERE
echo '<td>' . $row['GroomingID'] . '</td>';

Кроме того, вы должны поместить весь свой код JavaScript в <head> раздел вашей HTML-страницы, а не в <body>

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector