Я хочу удалить проект из базы данных.Перед удалением я хочу подтвердить его, хочет ли пользователь удалить или нет.Если пользователь нажимает ОК, он должен вызвать функцию удаления.Но в коде, когда пользователь щелкает, функция вызывается не только пользователем нажмите ОК, но также нажмите Concel. Для другого оператора alter он работает нормально. Для вызова функции php возникает только проблема.
Как я могу это решить?
код,
<a href = "http://localhost/Performance/project/ShowAllProjects.php?project_id='.$row['project_id'].'"><img src = "http://localhost/performance/css/delete.png" title = "delete" alt = "running test" style = "width:15px;height:15px;border:0;margin-left:1cm" Onclick = "deleteProject();"/></a>
<script>
function deleteProject() {
var r = confirm("Press a button!");
if (r == true) {
//alert("You pressed OK!");
alert("<?php confirmDelete(); ?>");
} else {
alert("You pressed Cancel!");
}
}
</script>
<?php
function confirmDelete(){
$sql = "DELETE FROM project_table WHERE project_id='".$_GET['project_id']."' AND member_id='".$_SESSION['user_id']."';";
if (mysqli_query($GLOBALS['db'], $sql)) {
echo "Your test deleted successfully";
} else {
echo "ERROR: Could not able to execute $sql. " . mysqli_error($GLOBALS['db']);
}
}
?>
вы можете попробовать с console.info() вместо alert()
вы должны использовать сообщение формы или restful API (ajax) для достижения своей цели.
попробуйте <a href = "localhost / Performance / project /… echo $row['project_id'ght;?> "> <img src = " локальный / производительность / css / delete.png "title = " delete "alt = " бегущий тест "style = " width: 15px; height: 15px; border : 0; margin-left: 1cm "onclick = " return confirm ('Вы уверены, что хотите удалить этот элемент?'); "/> </a>
Также дезинфицируйте вводимые пользователем данные, чтобы предотвратить SQL-инъекцию.
Пожалуйста, используйте подготовленные операторы в вашем SQL, иначе маленькие котята умрут ()
это ссылка, необходимая для предотвращения события по умолчанию тега привязки, которое обновляет страницу. Пожалуйста, измените deleteProject (event) {event.preventDefault ();}. Я уверен, что это сработает для тебя



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам следует попытаться убрать свой PHP из поля зрения, если это возможно. Если вы переместите свои функции PHP в отдельный файл PHP и вызовете их с помощью AJAX, это позволит вам повторно использовать код на других страницах, если это необходимо.
Это не протестировано полностью, но я бы сказал, что это более чистое решение.
Добавьте идентификатор к удаленному изображению:
<img id = "delete" src = "" title = "delete" alt = "running test" style = "width:15px;height:15px;border:0;margin-left:1cm" onclick = "deleteProject()"/>
Измените свой javascript, чтобы использовать AJAX для вызова PHP-скрипта:
$( document ).on( 'click', '#delete', function(){
var r= confirm("Press a button!");
if (r==true)
{
$.ajax({
url: '<?php echo LOCATION_OF_PHP_SCRIPT; ?>',
type: 'post',
data: DATA_IF_NEEDED
}).success( resp )
{
if ( resp == TRUE )
{
alert( "Deleted" );
}
}
}
else
{
alert("You pressed Cancel!");
}
})
Вам нужно будет настроить некоторые параметры в соответствии с вашим приложением, но это должно помочь вам.
Вы не можете запустить код php из JavaScript. JavaScript является клиентским, а php - серверным.
Вы должны создать сценарий deleteThings.php, который удалит то, что вы хотите, и вызовет его из клиентского JavaScript, используя асинхронный запрос Ajax.
Для асинхронного запроса Ajax вы можете использовать jQuery, vanilla JavaScript или другие библиотеки.
Используйте ajax для вызова функции PHP из функции JAVASCRIPT.
Проверьте приведенный ниже код.
$ .ajax ({
type: "POST",
url: 'your_functions.php',
dataType: 'json',
data: {functionname: 'delete'},
success: function (obj, textstatus) {
}
})
your_functions.php
Просто следуйте этому коду, чтобы использовать вызов jQuery ajax. Это HTML-код с включенным jQuery, и я использовал файл test.php в том же каталоге. Просто напишите свою функцию PHP в файле test.php. Наконец, ответ будет отображаться в данном div после того, как пользователь нажал кнопку подтверждения.
<!DOCTYPE html>
<html>
<head>
<title>Jquery ajax</title>
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<button onclick = "myFun()">Click me</button>
<div id = "div1"></div>
<script>
function myFun(){
var r= confirm("Press a button!");
if (r==true)
{
$.ajax({url: "test.php", success: function(result){
$("#div1").html(result);
}});
}
else
{
alert("You pressed Cancel!");
}
}
</script>
</body>
</html>
при нажатии на div функция read выполнится и передаст привет
<?php
function read($id){
echo $id;
}
?>
<div onclick = "<?php read("hi"); ?>" class = "item">
</div>
alert () используется для отображения сообщения, а не для вызова функции.