Jump to content

Bllidz

Members
  • Posts

    200
  • Joined

  • Last visited

Posts posted by Bllidz

  1. 19 minutes ago, Alexandre Carette said:

    Salut, a quel moment tu as cette erreur ?

    cdt

    C'était un problème dans un override dans order donc réglé 😉

     

    Quote

    public function ajaxProcessupdateDateLivProd() {

    $id_order_detail = Tools::getValue('id_order_detail');

    $date_liv = Tools::getValue('date_liv'); var_dump($date_liv);

    die();

    }

    Mais pour cette fonction il manque pas un update dans un objet  et sa création car là on récupère juste les données sans jamais les implémenter (si je ne dis pas de bétises bien sûr)  ? 

  2. Salut avant de tester j'ai un problème j'ai retiré tout ce que j'avais fais  car j'avais un problème il m'était impossible de rajouter un produit ou de créer une commande. Après avoir tout enlevé (les fonctions ajaxprocess)  de  j'ai toujours ce problème , il me dise " Unknown column 'date_prod_liv' in 'field list'" ce qui est normal vu que date_prod_liv n'est pas dans la table order cependant je ne comprends pas pourquoi il essaie de modifier date_liv_prod dans la table order ?? 

    l'erreur en question 

    image.thumb.png.25b062e8d3e2e3ec5c14aa193831b8d1.png

  3. 6 minutes ago, Bllidz said:

    Bah c'est quand j'ajoute un produit... J'ai vidé le cache mais maintenant quand j'ajoute un produit dans la commande ça m'ajoute le dernier produit de la commande.. 

    image.thumb.png.6f06ee8c9d8242267d39124fe301d6a2.png

    exemple là ca ne va pas m'ajouter l'illustration mais le COST 

    Et pour le insert toujours bloqué... il ne se fait pas .. 

    et quand je recharge la page il disparait.. 

  4. La requête actuelle 

     

       foreach( $id_order_details as $id_order_detail ){
                $id = (int)$id_order_detail['id_order_detail'];
                $sql= Db::getInstance()->execute('INSERT INTO `' . _DB_PREFIX_ . 'order_date_liv` (`id_order_detail`, `Date`) VALUES ('.$id. ', ' .$date_liv.')' );
               
              
                return $sql ;
            }       

     

    donc ça doit donner ca ? 

       foreach( $id_order_details as $id_order_detail ){
                $id = (int)$id_order_detail['id_order_detail'];
                $sql= Db::getInstance()->execute('INSERT INTO `' . _DB_PREFIX_ . 'order_date_liv` (`id_order_detail`, `Date`) VALUES ('.$id. ', "' .$date_liv.'"'')' );
               
    
                return $sql ;
            }       

     

  5. Just now, Alexandre Carette said:

    si tu veux rajouter des ligne faut faire des INSERT en sql

    Justement d'où mon insert à la base, car de base à la création d'une commande y'a tout les lignes de produit sauf la date qui est dans ma table . Et justement mon bouton doit les créer la date de chaque produit  à j+2 

  6. 7 minutes ago, Alexandre Carette said:

    fait un

    echo "<pre>";
    var_dump($id_order_details)
    echo "</pre>";
    die();

    verifie le typage des champs met des (int)$var sur tes variables le cas echéant

    cdt

    Cependant le update que je fais via phpmyadmin , ça ne me met pas d'erreur, mais ça ne me rajoute pas de nouvelle ligne dans la bdd donc ça provient surement de là ? 

  7. 54 minutes ago, Alexandre Carette said:

    fait des var dump, die pour tester toute tes varaibles,

    egalement teste ta requete sur phpmyadmin (pas en format php mais SQL), il va te dire ce qu 'il ne va pas, cdt

    Le update passe bien  fin il n'y a pas d'erreur mais par contre dans ma BDD ça ne fait rien, ça ne rajoute pas un tuple 

  8. Le code  du foreach et le     $order_detail['id-order_detail'] c'était un mauvais copier coller du $id_order_detail dans la boucle for mais j'ai toujours la même erreur de syntaxe 

     foreach( $id_order_details as $id_order_detail ){
            return Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'order_date_liv` odl SET odl.Date ='.$date_liv.' WHERE  odl.id_order_detail = '.$id_order_detail['id-order_detail'] );
            }       

     

  9. 21 minutes ago, Alexandre Carette said:

    ton return faut le mettre dans le foreach il va s executer sur chaque ligne de id_order_detail qu il trouve, la tu ne l execute qu une seul fois

    Je m'étais dit ça aussi mais les  retour dans les boucles je me suis tâté. 

     return Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'order_date_liv` odl SET odl.Date ='.$DateLiv.' WHERE  odl.id_order_detail = '.$order_detail['id-order_detail'] );

    donc normalement cette ligne c'est mieux 

    Mais ça me mets ça...

    image.png.c9fce0d2fb284c13c76166b37ee2adb6.png

  10. 18 minutes ago, Alexandre Carette said:

    ok donc au lieu de faire un INSERT INTO tu fais un

    UPDATE ps_ta_new-table SET Date = $DateLiv WHERE id_order_detail = $order_detail['id_order_detail']

    c vite fait faut refacto bien sur

     

    Ce qui donne un truc comme ça ? 

    image.thumb.png.b254f06a01735311788a47a1f4497c56.png

     

    Qu'entends tu par refacto ? 

  11. 6 minutes ago, Alexandre Carette said:

    ah oui ok d'accord je vois, tu aurais du faire un nouvel objet, mais bon c pas grave. donc  de ce que je comprend tu veux garder un historique des changement de date ?

    du coup fait moi un screenshot de la structure de ta nouvelle table, via phpmyadmin, regarde si l'id_ta_new_table est bien en primary et en auto increment

    Non pas forcément, c'est juste que j'ai pas pensé à ajouter un champ date_liv dans la table order_detail et que ça me paraissait plus simple de créer une nouvelle table  tout simplement. Car là le but est de créer grace au bouton la date en j+2 et de pouvoir la changer seulement en cas ou ce serait une date différente.

    Tiens le screen de la structure de la table.

    image.thumb.png.48f2a6faaca904261aed027f66ce6dca.png

    2 minutes ago, Alexandre Carette said:

    sinon a partir du moment ou tu cree une nouvelle table dans la bdd, faudrais faire un objet pour etre propre

    Oui c'est vrai.. 

  12. 3 minutes ago, Alexandre Carette said:

    tu instancie l'objet OrderDetail, oui c une classe ou plutot un objet, en gros tu recupere l'enregistrement de la ligne detail de la commande via son ID : new OrderDetail(285); -> ca te permet de recup tout l objet 285.  De la  tu update la data, je ne comprend pas pk tu veux faire un insert, c'est comme si tu crée une nouvelle ligne de produit dans ta commande, la fonction $order_d->update(); update la data dans l'objet

    Oui autant pour moi je me suis perdu dans la vision du fonctionnement. 

    Mais cependant $order_d->ton_champ_date = $date_liv;  je n'ai pas de champs date dans la classe order_detail 

    car la date qui est affiché provient d'une function dans la classe product que j'appelle dans view.tpl qui cette date même vient d'une table 

    J'ai peur de mal comprendre.. car je comprends que je récupère l'objetX x étant l'id_d'order_detail et qu'après je dis à la la variable de cet objet de prendre la valeur de $date_liv et qu'ensuite j'update l'objet juste pour le mettre à jour et que il prenne bien en compte le changement de la date.. Mais vu que je n'ai pas de champs date je ne vois pas trop..

  13. 13 minutes ago, Alexandre Carette said:

    deja je pense qu'il faut faire un update et non pas un insert de ligne... et on va tout recup ce sera plus simple,

            $order_details= Db::getInstance()->executeS('SELECT * FROM`' . _DB_PREFIX_ .'order_detail` where id_order = '. $id_order);

    dans le foreach on va instancier l'objet OrderDetail au lieu de faire une requete je trouve ca plus propre

    foreach( $order_details as $order_detail ){
    
              $order_d = new OrderDetail((int)$order_detail['id_order_detail']); 
              $order_d->ton_champ_date = $date_liv;
              $order_d->update();
    
    }    

    dans le code du dessus tu oublie de faire un return de $sql, c pour ce que ta requete ne execute pas

    Oui j'ai remarqué après que j'avais oublié le return mais même avec ça ne change rien.. 

     

    Cependant pour ta solution si je comprends bien dans le foreach  je créer un objet de la classe order_detail 

    et dans la classe order_detail je créer une variable "ton_champ_date" que j''instancie avec $date_liv (soit j+2) et je créer  une fonction update() qui elle aura seulement les insert, c'et bien cela ? 

  14. 30 minutes ago, Alexandre Carette said:

    ok dans ta function alors au lieu d un getValue, faut faire un executeS et oui y a plusieurs order_detail

            $order_details= Db::getInstance()->executeS('SELECT od.id_order_detail od.tonchampsdedatecustom FROM`' . _DB_PREFIX_ .'order_detail` od where id_order = '. $id_order);

    de la tu va pouvoir foreach $order_details

    Super merci beaucoup je récupère bien tout les id_order_detail 

    Cependant quand je clique les ou l'insert ne passe pas, est-ce que ça provient de execute () ? 

      public function ajaxProcessaddDateLivProd(){
            
            $id_order = Tools::getValue('id_order');
            $id_order_details=  Db::getInstance()->executeS('Select id_order_detail FROM`' . _DB_PREFIX_ .'order_detail` where id_order = '. $id_order);
            $date_liv=date("d-m-Y", strtotime("+2 day"));   //Date du jour +2 
            foreach( $id_order_details as $id_od ){
               $sql= Db::getInstance()->execute('INSERT INTO `' . _DB_PREFIX_ . 'order_date_liv` (`id_order_detail`, `date`) VALUES (' . (int) $id_od . ', ' . $date_liv . ')');
            }       
            
        }

     

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More