carolet
Messages postés26Date d'inscriptionmercredi 9 avril 2003StatutMembreDernière intervention26 septembre 2013
-
25 févr. 2011 à 10:31
007Julien
Messages postés276Date d'inscriptionmercredi 22 septembre 2010StatutMembreDernière intervention 8 janvier 2014
-
25 févr. 2011 à 14:08
Bonjour,
J'ai mis en place un système de paiement en ligne via la solution e-transactions du crédit agricole.
Mon problème est que je n'arrive pas à récupérer toutes les lignes de mon panier après la transaction.
Sur la page d'appel du paiement, je récupére les infos de mon panier :
<?php
// on construit le tableau du caddie en récupérant les variables de la session
$TheCaddie = array();
// les infos du client
$TheCaddie[] = $_SESSION['login'];
$TheCaddie[] = MontantGlobal();
$TheCaddie[] = PortGlobal();
$TheCaddie[] = TotalGlobal();
$TheCaddie[] = $_POST['livraison'];
//pour envoyer le caddie à e-transaction sans probleme
//on serialize le tableau pour en faire 1 string et on le base64_encode()
//car certains caractères sont interdits dans la valeur du parm caddie
$xCaddie = base64_encode(serialize($TheCaddie));
$parm="$parm caddie=".$xCaddie;
?>
Puis, au retour du paiement, je veux enregistrer la commande dans ma base.
Pour l'entête, pas de problème.
Mais pour les lignes de mon panier, mes valeurs sont bien retournées, car j'arrive à enregistrer la première ligne, mais je n'arrive pas à faire la boucle sur toutes les lignes.
Pour mon premier article je doit récupérer les valeurs $arrayCaddie[5], $arrayCaddie[6], $arrayCaddie[7], $arrayCaddie[8], $arrayCaddie[9].
Pour le deuxième : $arrayCaddie[10], $arrayCaddie[11], $arrayCaddie[12], $arrayCaddie[13], $arrayCaddie[14].
Etc...
J'ai essayé avec for each, mais ça ne fonctionne pas.
<?php
//Caddie
//Ici nous retrouvons tout notre caddie que nous remmettons dans un tableau
$arrayCaddie = unserialize(base64_decode($caddie));
// ci-dessous on insère les lignes de la commande
$sql = "INSERT INTO lignescde(id,id_cde,ref,libelle,qte,prix,totalligne) VALUES('','$id_cde','".$arrayCaddie[5]."','".$arrayCaddie[6]."','".$arrayCaddie[7]."','".$arrayCaddie[8]."','".$arrayCaddie[9]."')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
?>
007Julien
Messages postés276Date d'inscriptionmercredi 22 septembre 2010StatutMembreDernière intervention 8 janvier 20144 25 févr. 2011 à 14:08
Apparemment, les articles à récupérer se suivent de 5 en 5 en commençant par le cinquième (les cinq premiers sont ignorés ?).
Alors, il devrait être possible de lancer les requêtes pour les seuls rangs multiples de 5 en utilisant l'article en cause $arrayCaddie[$k] (ou $v) et les 4 articles suivants $arrayCaddie[$k+1], $arrayCaddie[$k+2], $arrayCaddie[$k+3] et $arrayCaddie[$k+4] !
foreach ($arrayCaddie as $k=>$v) if (0<$k && $k%5==0) {
$sql=" $arrayCaddie[$k] ... $arrayCaddie[$k+1] ... $arrayCaddie[$k+2] ... $arrayCaddie[$k+3] ... $arrayCaddie[$k+4]";