matt.webcroisieres Posted June 14, 2011 Share Posted June 14, 2011 Bonjour,Pour un de mes modules, je dois lister des devis. Je dois pouvoir les supprimer depuis le backoffice, tout se déroule bien mais je dois rafraichir la page pour que le >echo '</pre> <table frame="below"> '.$dev['id_devis'].' </t mon fichier javascript devis.js: function supprimer(id){ if (id > 0) { //Exécution du script PHP avec Ajax /*$('#tabdevis').animate({ 'backgroundColor': '#ff8888', 'color': '#941010' }, 1000); */ $.ajax({ type: 'GET', data: 'id=' + id, url: '/modules/blockdevisgroupe/script.php', success: function(data){ if (data == '1') { /*$('#tabdevis').fadeTo("slow", 0, function(){ $(this).hide(); });*/ alert("oui"); } else { alert("non"); } } }); } } Et mon fichier script.php qui renvoie 1 si la requête est effectué: $query = ' DELETE FROM `'._DB_PREFIX_.'devis_groupe` WHERE `id_devis` = '.$_GET['id']; $requete = Db::getInstance()->Execute($query); if(mysql_query($requete)) echo '1'; else echo '0'; Lorsque je clic sur supprimer, ça m'affiche directement "non". J'espère que vous pourrez m'aider...Merci d'avance Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 14, 2011 Share Posted June 14, 2011 Hmm déjà tu peux un peu simplifier ton écriture, et utilise du Post, toujours mieux. $.post('modules/blockdevisgroupe/script.php', {id: id}, function(data) { alert('data'); $('#tabdevis').fadeOut('slow'); } Ensuite : $requete = Db::getInstance()->Execute($query); Te renvoie déjà un Bool (true si la requête est bonne, false sinon). Donc un : return Db::getInstance()->Execute($query); Devrait être mieux. Car ton "mysql_query" n'a rien à faire ici. Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 14, 2011 Author Share Posted June 14, 2011 Merci de ta réponse, mais le $.post je le met a la place de $.ajax ou dedans ?.. Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 14, 2011 Share Posted June 14, 2011 A la place, c'est juste une écriture raccourcie, donc plus pratique.http://api.jquery.com/jQuery.post/D'ailleurs, j'avais pas vu, mais si tu veux supprimer le TR correspond, il faut mettre un id unique et lié à l'ID. Et dans le success de l'Ajax : $('#devis-' + id).fadeOut(); Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 14, 2011 Author Share Posted June 14, 2011 C'est ce que j'ai vu J'ai remplacé ce que tu m'as dis, mais rien ne se produit...maintenant j'ai: function supprimer(id){ if (id > 0) { $.post('modules/blockdevisgroupe/script.php', {id: id}, function(data) { alert('data'); $('#tabdevis').fadeOut('slow'); }); } } et: $query = ' DELETE FROM `'._DB_PREFIX_.'devis_groupe` WHERE `id_devis` = '.$_POST['id']; return Db::getInstance()->Execute($query); Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 14, 2011 Share Posted June 14, 2011 Tu as Firebug d'installé ? Ou Chrome ? Regarde dans l'onglet Console, lors du clic sur ton bouton Supprimer. Une ligne devrait s'écrire. Regarde ce qui envoyé, et ce qui est récupéré. Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 14, 2011 Author Share Posted June 14, 2011 J'allais modifier mon code lors de ta réponse Oui j'utilise firebug, c'est pour ca que j'ai vu une petite erreur, l'url était fausse. Maintenant j'ai le même problème qu'avant... function supprimer(id){ if (id > 0) { $.post('/modules/blockdevisgroupe/script.php', {id: id}, function(data) { if (data == true) { alert('data'); $('#tabdevis').fadeOut('slow'); } else { alert('help') } }); } } Maintenant ca me renvoie "Help" Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 14, 2011 Author Share Posted June 14, 2011 Fatal error: Class 'Db' not found in /home/jet-travel-prestashop-14/modules/blockdevisgroupe/script.php on line 5 Il faut que j'appel la classe Db ? Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 14, 2011 Share Posted June 14, 2011 Cela serait pas mal en effet ... Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 14, 2011 Author Share Posted June 14, 2011 include_once(PS_ADMIN_DIR.'/../classes/Db.php');Comme ça ? Si c'est ça... bah ça ne marche toujours pas :-/ Ça en devient frustrant xD Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 14, 2011 Share Posted June 14, 2011 Plutôt comme ça : require(dirname(__FILE__).'/../../config/config.inc.php'); include dirname(__FILE__).'/../../init.php'; Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 14, 2011 Author Share Posted June 14, 2011 Effectivement ça marche mieux Je pourrais avoir une petite explication stp pour savoir pourquoi on appel ses deux fichiers ?Sinon... ma ligne se supprimer bien, mais après une actualisation... :-/ Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 14, 2011 Author Share Posted June 14, 2011 Et j'ai toujours L'alerte "help" Ca ne rentre pas dans la boucle, alors que ca devrait renvoyer true.. Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 14, 2011 Share Posted June 14, 2011 Et bien regarde si tu n'as pas d'erreur JS après avoir cliqué sur le bouton.Ensuite de quelle boucle parles-tu ?Pour les fichiers, le premier contient les codes d'accès à la base notamment (serveur, utilisateur, mot de passe).Et l'autre est le noyau Prestashop qui contient toutes les classes. Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 14, 2011 Author Share Posted June 14, 2011 D'accord, merci pour les explications.Je parle de cette boucle = function(data) { if (data == true) { alert('data'); $('#tabdevis').fadeOut('slow'); } else { alert('help'); } Je n'ai pas d'erreur JS après avoir cliqué. J'ai un "help" et quand je rafraichir la ligne disparait... Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 14, 2011 Share Posted June 14, 2011 Il faut voir ce que renvoie l'appel Ajax déjà. En clair, la requête est bien faite côté PHP, mais alors le return Db::getInstance()->Execute($query); Ne doit alors pas renvoyer true mais autre chose. Fais un alert(data); pour voir. Et sinon : if (data !== false) Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 14, 2011 Author Share Posted June 14, 2011 Il renvoie rien... C'est vide. Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 14, 2011 Author Share Posted June 14, 2011 Bon j'ai "triché" pour que ça marche..J'ai mis: if (data == "") { $('#tabdevis').fadeOut('slow'); } Ça marche parfaitement comme ça! Dommage que je n'ai pas réussi dans les règles lolMerci beaucoup de ton aide !! Vraiment... ça commencer a me prendre la tête Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 14, 2011 Share Posted June 14, 2011 Non c'est bien dans les règles. Je me suis surement trompé sur le fait que Db->Execute renvoie true en cas de succès. A priori il renvoie le résultat de la requête, donc, sur un "DELETE", ne renvoie rien.Sur ton 1er message, cliques sur le bouton "Résolu".Bonne chance pour la suite. Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 14, 2011 Author Share Posted June 14, 2011 Encore merci de ton aide. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now