attila Posted November 27, 2011 Share Posted November 27, 2011 Bonjour, J'ai crée une nouvelle table ou je souhaiterais ajouter des valeurs venant d'un select: $sql3 = 'SELECT id_order_detail FROM ps_order_detail WHERE ps_order_detail.id_order="'.$_REQUEST['id_order'].'"'; if ($results = Db::getInstance()->ExecuteS($sql3)) foreach ($results as $Value) echo $Value['id_order_detail']."\n"; $detail = $Value['id_order_detail']; $sql = Db::getInstance()->ExecuteS("INSERT INTO table VALUES('$detail','$id_customer','','','','','','','') "); J'ai bien les deux valeurs représentant chacun une ligne qui s'affiche en echo mais il n'y a qu'une ligne qui s'insert, celle qui m'importe: '$detail' , aurais-je oublier quelques choses ? Merci, d'avance, Link to comment Share on other sites More sharing options...
J. Danse Posted November 27, 2011 Share Posted November 27, 2011 Oui. $sql3 = 'SELECT id_order_detail FROM ps_order_detail WHERE ps_order_detail.id_order="'.$_REQUEST['id_order'].'"'; if ($results = Db::getInstance()->ExecuteS($sql3)) foreach ($results as $Value) { echo $Value['id_order_detail']."\n"; $detail = $Value['id_order_detail']; $sql = Db::getInstance()->ExecuteS("INSERT INTO table VALUES('$detail','$id_customer','','','','','','','') "); } Est-ce mieux, maintenant ? Link to comment Share on other sites More sharing options...
attila Posted November 27, 2011 Author Share Posted November 27, 2011 Klyne t'es un king:), c'est tout bete....des fois on passe a coté de pas grand chose, merci. Link to comment Share on other sites More sharing options...
J. Danse Posted November 27, 2011 Share Posted November 27, 2011 Question d'habitude. J'ai l'habitude de déboguer des petites erreurs de la sorte, d'autant plus lorsqu'on est en séance de cours (ou on conseille souvent l'utilisation des accolades même pour une seule instruction). N'oublie pas le [Resolu] Link to comment Share on other sites More sharing options...
Sbizz Posted November 28, 2011 Share Posted November 28, 2011 Bonjour, Si c'est résolu, vous devez mettre le tag RÉSOLU dans le titre. Mais je ne poste pas pour ça : $sql = Db::getInstance()->ExecuteS("INSERT INTO table VALUES('$detail','$id_customer','','','','','','','') "); Ce genre de syntaxe est à éviter. Premièrement, vous avez des paramètres inutiles... (les 7 derniers, si j'ai bien compté). De plus, vous ne définissez pas un lien entre le paramètre et son champ. Du coup, difficile de comprendre quoi que ce soit. $sql = Db::getInstance()->ExecuteS("INSERT INTO table(`champ_detail`, `id_customer`) VALUES('$detail','$id_customer') "); C'est un peu plus parlant et plus propre. On définit d'abords les champs qu'on va remplir ("champ_detail" et "id_customer") et on leur assigne des valeurs. Les autres champs n'ayant aucune assignation, auront une valeur par défaut (les champs VARCHAR n'auront rien, les champs INT auront 0, etc.). Edit: ah oui, et pour une question de sécurité, il ne faut pas oublier de mettre des cast pour les valeurs numériques et utiliser la fonction "pSQL" de Prestashop pour protéger vos variables. $sql = Db::getInstance()->ExecuteS("INSERT INTO table(`champ_detail`, `id_customer`) VALUES('" . pSQL($detail) . "','" . (int)$id_customer . "')"); Link to comment Share on other sites More sharing options...
attila Posted November 28, 2011 Author Share Posted November 28, 2011 Merci Sbizz, je ne sais pas faire le Résolu... Link to comment Share on other sites More sharing options...
Carl Favre Posted November 28, 2011 Share Posted November 28, 2011 Bonjour attila, C'est très simple, tu édites ton premier message et tu utilises l'éditeur complet pour ajouter [résolu] dans ton titre . Link to comment Share on other sites More sharing options...
Vincent Decaux Posted November 28, 2011 Share Posted November 28, 2011 D'accord avec Sbizz, je rajouterai qu'il serait bon aussi d'éviter des INSERT dans une boucle. Mieux vaut faire un seul INSERT histoire de soulager un peu le SGBD. $insert = ''; foreach ($results as $Value) { $insert .= '("'. pSQL($Value['id_order_detail']) .'", '. (int)$id_customer .'),'; } $sql = Db::getInstance()->ExecuteS("INSERT INTO table(`champ_detail`, `id_customer`) VALUES " . substr($insert, 0, -1) ); Un détail, mais c'est avec tous ces petits détails qu'on améliore la rapidité de sa boutique . Link to comment Share on other sites More sharing options...
Sbizz Posted November 28, 2011 Share Posted November 28, 2011 Ah ouai mais j'avais même pas grillé. C'est même pas un petit détail ça 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