Jump to content

Requête SQL et resultats faussés prestashop 1.7.7.6 (résolu)


Recommended Posts

bonjour,

J'essaie de modifier un plugin que j'ai déja modifié dans une autre installation, donc je reprend simplement le code de une installation et la copie dans l'autre. Dans la requête sql de la table Orders, j'ajoute 2 nouveaux champs qui sont présents et je recupere simplement le resultat sauf que dans cette installation il m'affiche rien dans le résultat, il m'affiche les valeurs par défaut des colonnes...

 

ci-joint une partie du code :

 

$req_order = "SELECT `id_order`,`id_cart`,`id_carrier`,`id_address_delivery`,`reference`,`total_paid_tax_incl`,`total_paid_tax_excl`,`ddw_order_date`,`ddw_order_time`,`payment`,`id_shop`,`id_lang` FROM `".DB_PREFIX."orders` WHERE `id_order` = " . $id_order . " ORDER BY `id_order` ASC LIMIT 1";

$rez_order = Db::getInstance()->executeS($req_order);

 

j'ai juste ajoute "ddw_date_order" ,"ddw_order_time" et enleve "date_add" a la requête deja existante

 

ici la liste des donnees en base de donnees :

image.png.60310eac815254156dbd4c649703f6fe.png

 

et quand je log le resultat :

 

$logger->logDebug($rez_order['0']);

 

voici la sortie :

 

(
            [id_order] => 14
            [id_cart] => 20
            [id_carrier] => 28
            [id_address_delivery] => 17
            [reference] => ZWNYHIMOT
            [total_paid_tax_incl] => 6.500000
            [total_paid_tax_excl] => 5.910000
            [ddw_order_date] => 0000-00-00 00:00:00
            [ddw_order_time] => 
            [payment] => Paiement comptant à la livraison (Cash on delivery)
            [id_shop] => 1
            [id_lang] => 2
        )

Une idee ? sachant que jai 3 ou 4 commndes uniquement car je suis encore en DEV. je comprends vraiment pas, si je remet date_add j'ai bien la date

Edited by abouzouzou (see edit history)
Link to comment
Share on other sites

Pourquoi faire un champ pour l'heure alors que votre premier champ est un datetime comprenant l'heure ? Vous auriez pu combiner les deux.

Si vous testez votre requête dans PhpMyAdmin cela vous retourne un résultat correct ou pas ?

Link to comment
Share on other sites

il y a 13 minutes, Tom Girou a dit :

Pourquoi faire un champ pour l'heure alors que votre premier champ est un datetime comprenant l'heure ? Vous auriez pu combiner les deux.

J'imagine que c'est une plage horaire de retrait d'un module mal développé puisqu'il modifie une table native au lieu d'utiliser la sienne histoire de bien planter toutes les prochaines mises à jour de PrestaShop.

Link to comment
Share on other sites

1 minute ago, Tom Girou said:

Pourquoi faire un champ pour l'heure alors que votre premier champ est un datetime comprenant l'heure ? Vous auriez pu combiner les deux.

Si vous testez votre requête dans PhpMyAdmin cela vous retourne un résultat correct ou pas ?

comme expliqué c'est une modification de plugin d'impression pour prendre les données ajoutées par un autre plugin de choix d'heures et de date,donc les données en DB ne sont pas ajoutées par moi (donc ca c'est un autre debat ^^). Et j'ai pas testé la requete direct je vais le faire pour voir merci

Link to comment
Share on other sites

4 minutes ago, Mediacom87 said:

J'imagine que c'est une plage horaire de retrait d'un module mal développé puisqu'il modifie une table native au lieu d'utiliser la sienne histoire de bien planter toutes les prochaines mises à jour de PrestaShop.

Pas bete malheuresement quand on prend le plugin on voit pas le code source, parce que en lui meme le plugin est joli et bien utile...

 

Mais énormément de plugins modifient directement la table Orders... Alors j'ai pas regardé les bonnes pratique de prestashop je saurais pas dire si c'est recommandé ou pas si la procedure d'update est propre ou non mais bon comme dis avamt c'est un autre débat ^^.

Link to comment
Share on other sites

il y a une heure, abouzouzou a dit :

Mais énormément de plugins modifient directement la table Orders... Alors j'ai pas regardé les bonnes pratique de prestashop je saurais pas dire si c'est recommandé ou pas si la procedure d'update est propre ou non mais bon comme dis avamt c'est un autre débat ^^.

Tout à fait, un autre débat, mais franchement, c'est agaçant.

Par contre, petite précision, ce n'est pas spécifique à PrestaShop, c'est la même chose pour tous les CMS, on ne touche jamais les tables natives, mais il semble que les développeurs ne savent pas réellement ce qu'ils font et comme vous le dit, c'est beau, après les clients se fichent royalement de savoir si c'est bien codé et je trouve cela triste tellement je trouve de modules développés n'importe comment.

il y a une heure, abouzouzou a dit :

Et j'ai pas testé la requete direct je vais le faire pour voir merci

C'est une pratique à apprendre, lorsque vous intervenez sur un problème SQL il faut toujours effectuer un test dans un client SQL afin d'avoir un retour d'erreur précis si elle existe.

Link to comment
Share on other sites

32 minutes ago, Mediacom87 said:

Tout à fait, un autre débat, mais franchement, c'est agaçant.

Par contre, petite précision, ce n'est pas spécifique à PrestaShop, c'est la même chose pour tous les CMS, on ne touche jamais les tables natives, mais il semble que les développeurs ne savent pas réellement ce qu'ils font et comme vous le dit, c'est beau, après les clients se fichent royalement de savoir si c'est bien codé et je trouve cela triste tellement je trouve de modules développés n'importe comment.

C'est une pratique à apprendre, lorsque vous intervenez sur un problème SQL il faut toujours effectuer un test dans un client SQL afin d'avoir un retour d'erreur précis si elle existe.

Merci de me rappeler comment coder ^^ jt tellement dans la surprise de ce que j'avais que j'ai oublié d'essayer!

Link to comment
Share on other sites

ce qui est quand même extraordinaire 

$req_order = "SELECT `id_order`,`id_cart`,`id_carrier`,`id_address_delivery`,`reference`,`total_paid_tax_incl`,`total_paid_tax_excl`,`date_add`,`ddw_order_date`,`ddw_order_time`,`payment`,`id_shop`,`id_lang` FROM `"._DB_PREFIX_."orders` WHERE `id_order` = " . $id_order . " ORDER BY `id_order` ASC LIMIT 1";
$rez_order = Db::getInstance()->executeS($req_order);

cette requête ou on a ajouté date_add rameène cette dernière

*DEBUG* 	v1.7.7.6	2022/07/01 - 11:45:38: Array
(
    [0] => Array
        (
            [id_order] => 16
            [id_cart] => 22
            [id_carrier] => 28
            [id_address_delivery] => 17
            [reference] => WCPJUJTGN
            [total_paid_tax_incl] => 3.000000
            [total_paid_tax_excl] => 2.840000
            [date_add] => 2022-07-01 11:45:38
            [ddw_order_date] => 0000-00-00 00:00:00
            [ddw_order_time] => 
            [payment] => Paiement comptant à la livraison (Cash on delivery)
            [id_shop] => 1
            [id_lang] => 2
        )

)

ici la structure des champs

 

et ici les data

image.png.803cfd659ddb7b0f11b60d6ba8b1c4c7.png

on ne doit rien définir pour que le executeS fonctionne ? aucun mapping j'ai regardé je vois nulle part, par contre j'ai essayé d'ajouter une autre date de la DB , delivery date et le résultat est le même que pour mes 2 champs donc il doit y avoir quelque chose avec le execute ou getInstanceimage.png

 

(
    [0] => Array
        (
            [id_order] => 17
            [id_cart] => 23
            [id_carrier] => 25
            [id_address_delivery] => 17
            [reference] => ZOIRCKLHZ
            [total_paid_tax_incl] => 4.500000
            [total_paid_tax_excl] => 4.090000
            [date_add] => 2022-07-01 11:58:03
            [ddw_order_date] => 0000-00-00 00:00:00
            [ddw_order_time] => 
            [delivery_date] => 0000-00-00 00:00:00
            [payment] => Paiement comptant à la livraison (Cash on delivery)
            [id_shop] => 1
            [id_lang] => 2
        )

)

 

Edited by abouzouzou (see edit history)
Link to comment
Share on other sites

C'est bon j'ai trouvé grâce à vous en vous parlant. Il s'agissait d'une histoire de Hook.... un hook était manquant et un autre dans le mauvais order, donc la requête etait executée avant que le hook ne enregistre les données... 

 

merci!!!

Link to comment
Share on other sites

  • abouzouzou changed the title to Requête SQL et resultats faussés prestashop 1.7.7.6 (résolu)

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...