2015-03-31 2 views
-1

Я уверен, что многие из вас уже видели этот вопрос раньше, ive применил код, который работал для других, для моего собственного и все еще ничего, мне сложно определить, что происходит не так. Вот моя сторона пользователя с таблицей отображением MySQL данные и удалять кнопки:Удалите запись mysql с помощью кнопки удаления

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "gpdb"; 
$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
die("connection failed: " . $conn->connect_error); 
} 

$id = $_SESSION['id']; 
$sql = "SELECT AppID, AppDate FROM appointment WHERE PatientID ='$id'"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
echo ("<form action='delete.php' method='post'><table class='jobs-list'> 
<tr> 
<th class='job-position'><h4>Appointment ID</h4></th> 
<th class='job-position'><h4>Appointment Date and Time</h4></th> 
<th class='job-position'><h4>Edit Appointments</h4></th> 
</tr>"); 

while($row = mysqli_fetch_array($result)) 
{ 
echo ('<tr>'); 
echo ('<td>' . $row['AppID'] . '</td>'); 
echo ('<td>' . $row['AppDate'] . '</td>'); 
echo ("<td><input type='submit' id='deleteItem' value='".$row['AppID']."'/> </td>"); 
echo ('</tr>'); 
} 
echo ('</table></form>'); 

} 
else{ 
echo('<h4><b>You currently have no appointments</b></h4>'); 
} 
?> 
<script> 

$('#deleteItem').on('click', function(){ 
var pass = $(this).val(); 
console.log(pass); 
$.post("delete.php", { 
    'pass':pass 
}).done(function(data) { 
    alert("You cancelled : " + data); 
}); 
}); 
</script> 

И это файл delete.php:

<?php 
session_start(); 
//$servername = "localhost"; 
//$username = "root"; 
//$password = ""; 
//$dbname = "gpdb"; 
//$conn = new mysqli($servername, $username, $password, $dbname); 
//if ($conn->connect_error) { 
//die("connection failed: " . $conn->connect_error); 
//} 
print_r($_POST['pass']); 
//if(isset($_POST['pass']) && $_POST['pass'] != "") 
//{ 
//$deleteItem = $_POST['pass']; 
//$sql = "DELETE FROM appointment WHERE AppID='{$deleteItem}'"; 
//$result = $conn->query($sql); 
//header("location: http://localhost/gp/account.php"); 
//}else{ 
//echo('Something wrong'); 
//} 

?> 

Я сейчас читаю «что-то не так» на удалении .php, поэтому нет возврата из файла delete.php.

Заранее спасибо за любую помощь :)

+0

его потому, что вы обращаетесь к переменной 'deleteItem', которая не отправляется из ajax, она должна быть' pass' .. в условии IF и запросе удаления –

+0

Извините, я играю так много, что не могу даже увидишь маленькие вещи больше, я проверил их назад, как ты видишь, но я все еще получаю ошибку. –

+0

Также вы не можете использовать 'и' в использовании IF условия && вместо него. –

ответ

0

Это условие является вашим врагом

if(isset($_POST['deleteItem']) and is_numeric($_POST['deleteItem']))

так $_POST['deleteItem'] не является числовым значением, так как значение является чем-то вроде Delete 1, поэтому вы всегда видите «Something Неверно "

+0

Спасибо, я просто это сделал из чего-то Я видел здесь, я изменил его на: if (isset ($ _ POST ['pass'])) хотя все еще ошибка возврата –

+0

В $ _POST ['pass'] ничего нет. Вам нужно установить свою кнопку HTML и дать ей идентификатор «pass» –

-1

Первое, что #deleteItem означает, что вы участвуете и запускаете событие в id, и нет идентификатора с таким именем на странице

Во-вторых, если вы поставите ид = «DeleteItem» в цикле будет множественный идентификатор с таким же именем, что является неправильным

, что вы можете сделать, это отправить идентификатор в функции он будет посылать точный идентификатор для строка кнопка удаления нажата

<input type='button' name='deleteItem' value='Delete" onclick="deleteSelected('" .$row['AppID']."')'/> 

Теперь внутри вызова функции Аякса, как показано ниже

<script> 
    function deleteSelected(delete_id) 
    { 
     $.post("delete.php", { 
     'deleteItem':delete_id 
     }).done(function(data) { 
    alert("You cancelled : " + data); 
     }); 
    } 
</script> 

Теперь измените, если условие на странице действий по

if(isset($_POST['deleteItem']) && is_numeric($_POST['deleteItem'])) 
{ 
$deleteItem = $_POST['deleteItem']; 
$sql = "DELETE FROM appointment WHERE AppID='{$deleteItem}'"; 
$result = $conn->query($sql); 
header("location: http://localhost/gp/account.php"); 
}else{ 
echo('Something wrong'); 
} 
+0

Не знаю, почему мой ответ не одобрен, комментарий будет полезен при downvoting – Veerendra

+0

Привет, я пробовал это, но я ничего не получил, прежде чем он перешел к удалению .php и я видел ошибку, но не было возврата, но теперь ничего ... –

+0

@NiamhMacGualraic HI вы можете увидеть на консоли и разместить сообщение об ошибке – Veerendra

0

your'e используя тип кнопки отправить это перезагрузит page.Check код ниже использования event.preventDefault(); либо изменить submit типа для button

<script> 
$('#deleteItem').on('click', function(event){ 
event.preventDefault(); 
var pass = $row['AppID']; 
$.post("delete.php", { 'pass':pass }).done(function(data) { 
alert("You cancelled : " + data); 
}); 
}); 
</script> 
1

Проблема заключается в коде.

вам следует повторить кнопку так:

echo ("<td><input type='button' class='deleteItem' name='delete_".$row['AppID']."' value='".$row['AppID']."'/>") 

И вы не должны использовать переменную PHP в вашем JavaScript, ваш Javascript должен быть, как этот

<script> 

$('.deleteItem').on('click', function(){ 
    var pass = $(this).val(); 
    $.post("delete.php", { 
     'pass':pass 
    }).done(function(data) { 
     alert("You cancelled : " + data); 
    }); 
}); 
</script> 

Затем в delete.php вы следует проверить $_POST['pass'] НЕ $_POST['deleteItem']

Поэтому код будет

<?php 
session_start(); 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "gpdb"; 
$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
die("connection failed: " . $conn->connect_error); 
} 
if(isset($_POST['pass']) && is_numeric($_POST['pass'])) 
{ 
$deleteItem = $_POST['pass']; 
$sql = "DELETE FROM appointment WHERE AppID='{$deleteItem}'"; 
$result = $conn->query($sql); 
header("location: http://localhost/gp/account.php"); 
}else{ 
echo('Something wrong'); 
} 

?> 

Надеюсь, это поможет.

+0

Большое спасибо за это, я применил все эти изменения к моему оригинальному вопросу , Я действительно думал, что проблема связана с переменной, собранной в сообщении, однако я все еще получаю ошибку. Это нормально, что im передает $ row ['AppID'] из кнопки, когда она уже существует ранее в таблице? Я думал, что это может вызвать путаницу, но, похоже, как эти вопросы были ранее услышаны? –

+0

Я только что понял, что вы эхо-кнопка внутри цикла, так что будет массив кнопок с одинаковыми ID и Name, я немного изменил код. Попробуйте это, если вы все еще получаете ошибку, мы отлаживаем 'delete.php' –

+0

Да все еще получаю ошибку ... как я могу отлаживать delete.php? –

0

окончательно решил проблему, спасибо за вашу помощь, особенно @Gopakumar Gopalan.Я действительно необходим, что размещение вызов, но казалось, что метод формы держит функцию обратно, так что я удалил тег формы из таблицы:

<?php 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "gpdb"; 
$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
die("connection failed: " . $conn->connect_error); 
} 

$id = $_SESSION['id']; 
$sql = "SELECT AppID, AppDate FROM appointment WHERE PatientID ='$id'"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
echo ("<table class='jobs-list'> 
<tr> 
<th class='job-position'><h4>Appointment ID</h4></th> 
<th class='job-position'><h4>Appointment Date and Time</h4></th> 
<th class='job-position'><h4>Edit Appointments</h4></th> 
</tr>"); 

while($row = mysqli_fetch_array($result)) 
{ 
echo ('<tr>'); 
echo ('<td>' . $row['AppID'] . '</td>'); 
echo ('<td>' . $row['AppDate'] . '</td>'); 
echo ("<td><input type='submit' class='deleteItem' name='delete_".$row['AppID']."' value='".$row['AppID']."'/></td>"); 
echo ('</tr>'); 
} 
echo ('</table>'); 

} 
else{ 
echo('<h4><b>You currently have no appointments</b></h4>'); 
} 
?> 
<script> 

$('.deleteItem').on('click', function(){ 
var pass = $(this).val(); 
$.post("delete.php", { 
    'pass':pass 
}).done(function(data) { 
    location.reload(); 
}); 
}); 
</script> 

После того, как теги формы были удалены файл delete.php мог распознать $ _POST [ 'проход']; :

<?php 
session_start(); 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "gpdb"; 
$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
die("connection failed: " . $conn->connect_error); 
} 
if(isset($_POST['pass']) && $_POST['pass'] != "") 
{ 
$deleteItem = $_POST['pass']; 
$sql = "DELETE FROM appointment WHERE AppID='{$deleteItem}'"; 
$result = $conn->query($sql); 
header("location: http://localhost/gp/account.php"); 
}else{ 
echo('Something wrong'); 
} 

?> 

Надеюсь, этот ответ поможет и кому-то другому. Ура!

Смежные вопросы