Bllidz Posted December 23, 2020 Share Posted December 23, 2020 Bonjour, Dans commande ou il y'a la liste des produits , j'ai rajouté l'affichage d'une date qui correspond à une date de livraison du produit (sachant que les produit n'ont pas la même date de livraison pour une commande). J'ai un bouton pour modifier un produit ( sa quantité , son prix ) et quand je clique sur mettre à jour, ça le met à jour. J'aimerais faire de même avec la date que j'affiche toujours avec le même bouton qui marche pour le reste . La date vient d'une table que j'ai crée. Auriez vous une idée pour que je puisse du coup modifier ma date via ce bouton ? . J'ai une fonction dans product afin de faire un update: qui se trouve dans classes/product.php static public function update_date_Liv_Prod($newDate ,$id_order_detail) { return Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'order_date_liv` odl SET odl.Date = '.$newDate .' WHERE `id_order_detail` = '. (int) $id_order_detail) ; } Dois-je mettre ma date dans un formulaire et récupérer avec un $_Post ? et à la place de $newDate mettre $_POST["date"] ? ou bien autrement ? Et ou dois-je appeler ma fonction ? Le code d'un élément que le bouton modifie qui se trouve dans la template/controler/_product_line_.tpl {if $can_edit} <span class="product_quantity_edit" style="display:none;"> <input type="text" name="product_quantity" class="edit_product_quantity" value="{$product['product_quantity']|htmlentities}"/> </span> {/if} Le bouton en question qui se trouve dans la template/controler/_product_line_.tpl {* Update controls *} <button type="button" class="btn btn-default submitProductChange" style="display: none;"> <i class="icon-ok"></i> {l s='Update' d='Admin.Actions'} </button> Ma version PS: 1.7.6.9 Merci de votre aide d'avance Link to comment Share on other sites More sharing options...
Alexandre Carette Posted December 30, 2020 Share Posted December 30, 2020 Salut, du coup tu tapes dans l'objet OrderDetail ? cdt Link to comment Share on other sites More sharing options...
Bllidz Posted December 31, 2020 Author Share Posted December 31, 2020 Salut Ce code est dans la classe product.php donc je ne touche qu'au a la classe product et après au tpl static public function update_date_Liv_Prod($newDate ,$id_order_detail) { return Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'order_date_liv` odl SET odl.Date = '.$newDate .' WHERE `id_order_detail` = '. (int) $id_order_detail) ; } Link to comment Share on other sites More sharing options...
Alexandre Carette Posted December 31, 2020 Share Posted December 31, 2020 (edited) De ce que je comprend ton objectif est de mettre une date de livraison dans le detail de la commande (pour chaque produit commandé) à partir d'une date donnée dans le produit, donc a un moment il faut que la donnée se transfert dans OrderDetail.php soit en ajoutant un nouveau champs dans Order detail soit en injectant dans product_name (la ou y a le nom du produit et les declinaisons) est ce bien cela ? ou alors plus simple a partir de l id_product de la commande tu va aller chercher la date de livraison juste pour l afficher Edited December 31, 2020 by Alexandre Carette (see edit history) Link to comment Share on other sites More sharing options...
Bllidz Posted December 31, 2020 Author Share Posted December 31, 2020 En gros j'ai crée une table ou dedans il y'a une clé etrangère de order_detail, et la date de livraison du produit. J'arrive à l'afficher Je souhaiterai enfaite les incrémenté à la création de la commande + 2 jours et quand je clique sur modifier pour pouvoir modifier la date de livraison du produit je souhaiterai que elle se mette à jour. Je ne sais pas si c'est plus compréhensible comme ça ? Link to comment Share on other sites More sharing options...
Alexandre Carette Posted December 31, 2020 Share Posted December 31, 2020 (edited) ok donc faudrait que ton bouton soit <button type="submit" name="updateDate" class="btn btn-default submitProductChange"> <i class="icon-ok"></i> {l s='Update' d='Admin.Actions'} </button> dans le post Process du controller (AdminOrdersController.php): public function postProcess() { ... code... if (Tools::isSubmit('updateDate') { var_dump('ok'); die(); } ... code... } voir deja si le boutton entre dans la fonction... Edited December 31, 2020 by Alexandre Carette (see edit history) Link to comment Share on other sites More sharing options...
Bllidz Posted December 31, 2020 Author Share Posted December 31, 2020 Merci de ton aide, je test ça demain et je te redis ! Link to comment Share on other sites More sharing options...
Bllidz Posted January 1, 2021 Author Share Posted January 1, 2021 Du coup j'ai testé ce que vous m'avez dit, et ça me donne une erreur 500 sur le var_dump('ok'); Parse error: syntax error, unexpected ';' et je ne comprends pas pourquoi Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 1, 2021 Share Posted January 1, 2021 (edited) petite erreur de ma part il manque une parenthèse desolé if (Tools::isSubmit('updateDate')) { var_dump('ok'); die(); } Edited January 1, 2021 by Alexandre Carette (see edit history) Link to comment Share on other sites More sharing options...
Bllidz Posted January 1, 2021 Author Share Posted January 1, 2021 Je l'avais pas vu non plus la parenthèse manquante 😅 et pour ce qui est du var_dump le bouton n'a pas l'air de rentrer dans la fonction.. Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 2, 2021 Share Posted January 2, 2021 (edited) Bon du coup j ai un peu regardé, il faut faire de l ajax je te laisse look les pj, cdt Edited January 2, 2021 by Alexandre Carette (see edit history) Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 2, 2021 Share Posted January 2, 2021 dans le controller tu vas pouvoir recup tes deux variables et pouvoir faire l update en bdd, cdt Link to comment Share on other sites More sharing options...
Bllidz Posted January 3, 2021 Author Share Posted January 3, 2021 Super , merci beaucoup pour ton aide je vais tester ça et je te redis si j'ai un problème ou une question , Cordialement Link to comment Share on other sites More sharing options...
Bllidz Posted January 4, 2021 Author Share Posted January 4, 2021 Du coup j'ai essayé ce que tu as fait , et je rencontre quelques soucis... <td><input type="text" name="dateLiv" class="dateLiv" id="dateLiv" value="testDateLiv_{$product.product_reference}" /></td> le input ne s'affiche pas et de plus mon bouton Modifier( qui était de base) ne fait plus rien.. aurais-tu une idée ? Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 4, 2021 Share Posted January 4, 2021 besoin d'avoir plus d'explications: du code et / ou des screenshots de l affichage du code source etc.. tres difficile d aider sinon Link to comment Share on other sites More sharing options...
Bllidz Posted January 4, 2021 Author Share Posted January 4, 2021 Problème résolu pour le input il s'affiche Mais cependant quand je clique sur Modifier ou ModifDateLiv rien ne se passe.. Et ce qui est du code je n'ai rien changé mis a part ce que j'ai rajouté Les boutons {* Modif dateLiv *} <button type="button" class="btn btn-default submitChangeDateLiv" style="display : block;"> <i class="icon-ok"></i> {l s='ModifDateLiv' d='Admin.Actions'} </button> {* Modif dateLiv *} <button type="button" class="btn btn-default submitProductChange" style="display: none;"> <i class="icon-ok"></i> {l s='Update' d='Admin.Actions'} </button> <button type="button" class="btn btn-default cancel_product_change_link" style="display: none;"> <i class="icon-remove"></i> {l s='Cancel' d='Admin.Actions'} </button> Dans adminOrdersController.php public function ajaxProcessupdateDateLivProd(){ $id_order_detail = Tools::getValue('id_order_detail'); $date_liv =Tools::getValue('date_liv'); $var_dump($date_liv) ; die(); } dans order.js $('button.submitChageDateLiv').unbind('click').click(function(e){ e.preventDefault(); var DateLiv = $(this).closest('tr.product-line-row').find('td.dateLiv').val(); var id_order_detail = $(this).closest('tr.product-line-row').find('td.edit_product_id_order_detail').val(); query = 'ajax=1&token='+token+&'action=updateDateLivProd&id_order_detail='+id_order_detail+'&date_liv='+DateLiv+'&'; $.ajax({ type:'POST', url: admin_order_tab_link, cache:false, dataType: 'json', data : query, success: function(data) { if (data.result) { console.log('ok'); } else jAlert(data.error); } }); } Et pour le reste je n'ai rien changé Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 4, 2021 Share Posted January 4, 2021 Regarde dans ta console le contenu de order.js qui se charge, regarde bien si le code modifier et present sinon control +f5 pour vider les caches ensuite regarde dans ton xhr vu que c'est de l ajax Link to comment Share on other sites More sharing options...
Bllidz Posted January 4, 2021 Author Share Posted January 4, 2021 Dans le js le code de modifier est bien présent Mais dans le xhr il n'y a pas adminOrderController Link to comment Share on other sites More sharing options...
Bllidz Posted January 4, 2021 Author Share Posted January 4, 2021 Le bouton modifier remarche mais pour le bouton ModifDateLiv toujours rien.. Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 4, 2021 Share Posted January 4, 2021 http://demo1769.baba-agency.com/admin188zgucqo login: [email protected] password: demodemo Link to comment Share on other sites More sharing options...
Bllidz Posted January 4, 2021 Author Share Posted January 4, 2021 (edited) J'ai surement du mal copier alors, je ne vois que ça .. je vais vérifié ... car je vois que sur la demo ça se récupère.. Edited January 4, 2021 by Bllidz (see edit history) Link to comment Share on other sites More sharing options...
Bllidz Posted January 4, 2021 Author Share Posted January 4, 2021 effectivement c'est moi qui ne sait pas copier... il manquait un N à 'button.submitChaN geDateLiv..... Et cependant peux tu m'expliquer pourquoi c'est marqué undefined au lieu de "testDateLiv_COST" ? Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 4, 2021 Share Posted January 4, 2021 (edited) dans le js var DateLiv = "ok"; dans l ajax query = 'ajax=1&token='+token+&'action=updateDateLivProd&id_order_detail='+id_order_detail+'&date_liv='+DateLiv+'&'; dans le controler $date_liv =Tools::getValue('date_liv'); et tu var_dump $date_liv test ca deja Edited January 4, 2021 by Alexandre Carette (see edit history) Link to comment Share on other sites More sharing options...
Bllidz Posted January 4, 2021 Author Share Posted January 4, 2021 ça me renvoi bien "ok" Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 4, 2021 Share Posted January 4, 2021 donc faut regarder var DateLiv = $(this).closest('tr.product-line-row').find('td.dateLiv').val(); ton input et bien dans un <td class="dateLiv"> qui est lui meme dans le <tr class="product-line-row"> ? Link to comment Share on other sites More sharing options...
Bllidz Posted January 4, 2021 Author Share Posted January 4, 2021 C'était comme ça donc vaut mieux que je mette comme ça ? Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 4, 2021 Share Posted January 4, 2021 2 minutes ago, Bllidz said: donc vaut mieux que je mette comme ça ? tout a fait Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 4, 2021 Share Posted January 4, 2021 dans le js tu demandes a chercher dans un td qui a la class dateLiv donc si tu ne met pas la class tu vas avoir un undefined vu qu il ne trouve rien cdt Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 4, 2021 Share Posted January 4, 2021 mais c'est vrai que dans mon code il y a plein d erreurs lol Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 4, 2021 Share Posted January 4, 2021 (edited) en fait dans mon js il y a un espace ce qui change tout enfin mon code html est bon faut juste que tu mettes un espace dans ton js pas besoin de ragouter une classe a ton td Edited January 4, 2021 by Alexandre Carette (see edit history) Link to comment Share on other sites More sharing options...
Bllidz Posted January 4, 2021 Author Share Posted January 4, 2021 Hop parfait, désolé encore.. je vais devoir apprendre à copier 😅 Du coup maintenant si j'ai bien compris, je peux faire appel dans cette même fonction à ma fonction update_date_Liv_Prod() dans la classe product ? dans ajaxProcessupdateDateLivProd() je récupère mes 2 variables, et je peux faire appel a ma fonction qui donnera ça du coup ? static public function update_date_Liv_Prod($date_liv,$id_order_detail) { return Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'order_date_liv` odl SET odl.Date = '.$date_liv .' WHERE `id_order_detail` = '.$id_order_detail ; } Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 4, 2021 Share Posted January 4, 2021 (edited) ok donc la on est dans le controller AdminOrdersController on a recup les deux variables donc on peux faire la requete d'update comme ceci /* Modif Alex */ public function ajaxProcessupdateDateLivProd() { $id_order_detail = Tools::getValue('id_order_detail'); $date_liv = Tools::getValue('date_liv'); $sql= Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'order_date_liv` odl SET odl.Date = '.$date_liv .' WHERE `id_order_detail` = '.$id_order_detail ; return $sql; } /* Modif Alex */ cdt Edited January 4, 2021 by Alexandre Carette (see edit history) Link to comment Share on other sites More sharing options...
Bllidz Posted January 4, 2021 Author Share Posted January 4, 2021 (edited) Super merci Cependant quand je clique sur le bouton ça devrait modifier la date, Mais ça ne fait rien et il récupère pas de valeur sur la variable... UPDATE: ça marche 1x sur 3 , faut juste attendre un peu de temps et f5 après !!!!!! Merci beaucoup de ton aide et ta patience ! Edited January 4, 2021 by Bllidz (see edit history) Link to comment Share on other sites More sharing options...
Bllidz Posted January 4, 2021 Author Share Posted January 4, 2021 Et je me permet également serais-tu comment je puisse incrémenté la date de chaque article dès que une commande est passé ? Link to comment Share on other sites More sharing options...
Bllidz Posted January 4, 2021 Author Share Posted January 4, 2021 (edited) Et au final bizarre j'ai tapé 1999-12-28 et ça m'a affiché 1959.. mais si je tape juste un nombre cela fonctionne (fin ca me fait une soustraction ) il a pas l'air d'aimer les lettres mais les chiffres il aime bien et avec un chiffre (qui passe en string) Edited January 4, 2021 by Bllidz (see edit history) Link to comment Share on other sites More sharing options...
Bllidz Posted January 4, 2021 Author Share Posted January 4, 2021 Problème résolu juste des guillemets et ça marche nickel 1 Link to comment Share on other sites More sharing options...
Alexandre Carette Posted January 4, 2021 Share Posted January 4, 2021 (edited) Quote Et je me permet également serais-tu comment je puisse incrémenté la date de chaque article dès que une commande est passé ? Faudrait faire un module et utiliser le hook: actionValidateOrder et la tu fais une requete sql Edited January 4, 2021 by Alexandre Carette (see edit history) Link to comment Share on other sites More sharing options...
Bllidz Posted January 4, 2021 Author Share Posted January 4, 2021 D'accord merci beaucoup en tout cas de ta grande aide ! 😁 1 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