Bonjour,
j'ai créé un fichier ajax qui me permet d'effacer un enregistrement en fonction de son ID et un fichier php qui contient une fonction de suppression.
Le soucis c'est que :
Mon code html :
<a href="#" id="<?php echo $donnees['id'];?>" class="supprimer"><span class="glyphicon glyphicon-remove"></span></a>
Mon code Ajax :
$(document).ready(function() {
$(".supprimer").click(function() {
var id = $(this).attr(id);
$.ajax({
type:"GET",
url: "inc/Traitement.php?supControleAcces("+id+")
});
return false;
});
}
Voila mon code php :
function supControleAcces($id){
// on stock dans une variable la fonction qui permet se connecter à la bdd
$controleAcces = controleAccesDb();
// on récupère l'id
$id = $_GET['id'];
// on crée une variable contenant la requete de suppression en fonction de l'id
$req = "DELETE FROM kone_acces WHERE id=".$id;
//on éxécute la requête et on le stock dans une variable
$result_supp = mysqli_query($controleAcces, $req);
}
Dans l'attente de votre réponse.
PLEASE
Salut,
Tu as oublié de fermer une double quote :
$(document).ready(function() {
$(".supprimer").click(function() {
var id = $(this).attr(id);
$.ajax({
type:"GET",
url: "inc/Traitement.php?supControleAcces("+id+")"
});
return false;
});
}
Et c'est quoi cet URL bizarre ?? Ne me dis pas que tu essaye d'appeler ta méthode PHP directement depuis l'URL ?? Non parce que si c'est le cas, désolé de te le dire, mais c'est assez ridicule ^^
Je pense que ceci sera plus efficace :
// JS
$.ajax({
type: "DELETE",
dataType: "text",
url: "inc/Traitement.php?action=del&id=" + id,
success: function (data) {
alert(data); // 'DEL_SUCCESS'
},
error: function (err) {
alert(err); // 'DEL_ERROR'
}
});
// PHP
if (isset($_SERVER['REQUEST_METHOD']) && strtolower($_SERVER['REQUEST_METHOD']) === "delete") {
if (isset($_GET['id']) {
$result = supControleAcces($_GET['id']);
$http_code = $result === "DEL_SUCCESS" ? 200 : 404;
http_response_code($http_code);
echo $result;
die();
}
}
function supControleAcces($id) {
// on stock dans une variable la fonction qui permet se connecter à la bdd
$controleAcces = controleAccesDb();
// on crée une variable contenant la requete de suppression en fonction de l'id
$req = "DELETE FROM kone_acces WHERE id=" . $id;
//on éxécute la requête et on le stock dans une variable
$result_supp = mysqli_query($controleAcces, $req);
mysqli_close($controleAcces);
if (!$result) {
return "DEL_ERROR";
}
return "DEL_SUCCESS";
}
Une dernière chose : mysqli est obsolète, tu devrais passer à PDO (https://www.grafikart.fr/formations/programmation-objet-php/tp-database | https://www.grafikart.fr/tutoriels/php/pdo-php-111)
Betaweb, je me permet juste de demander, tu es sûr que mysqli est obsolète ? C'est pas mysql dont tu parles ?
@AlexJM Effectivement. Cela dit, côté sécurité et perfs je pense qu'il serait mieux de migrer sur PDO :)
@betaWeb c'est là que tout le monde confond mysqli et mysql. Premièrement mysqli et mysql sont tous les deux plus rapides que PDO et deuxièmement mysqli (pas mysql) est tout autant sécurisé que PDO : ils intègrent tous deux des requêtes préparées (http://code.tutsplus.com/tutorials/pdo-vs-mysqli-which-should-you-use--net-24059) ;)
Après, je préfère PDO aussi j'ai juste un prof qui m'a tanné avec mysqli toute l'année :')
@AlexJM je trouve que d'enseigner à l'utilisation de mysqli en lieu et place de PDO c'est moyen, d'autant plus qu'on préfèrera PDO dans la plupart des cas.. Cela dit, j'ai aussi appris avec mysqli.
@betaWeb Les programmes belges sont stupides, au lycée (l'équivalent), si tu commences à programmer en procédural, tu ne peux pas passer en POO, si tu commences en POO, tu ne peux pas faire de procédural. Mais vas-y pour commencer la programmation en orienté objet :/ C'est stupide mais c'est comme ça ^^' Enfin bref nous dévions :')
@AlexJM C'est pareil en IUT (Bac +2) en France. Le souci est que les profs sont issus de ce que j'appelle "la génération procédurale". Ils savent programmer comme ça et du coup l'enseignent tel quel. C'est dommage mais c'est comme ça.
Pour l'anecdote, j'avais demandé à mon prof de dev web si on allait étudier le JS, et il m'avait répondu "Sûrement pas, le Javascript ça ne sert à rien !" .. c'est pour dire !
Mais oui nous dévions du sujet initial, auquel l'initiateur n'a d'ailleurs toujours pas répondu ! ^^