Passage variabkle caddie

forwad11 Messages postés 42 Statut Membre -  
 nspace1999 -
Bonjour,

Je termine l'implémentation d'un paiement en ligne pour un client dans le cadre de cyberplus (AtosOrigin).
Le client souhaite que des emails contenant un récapitulatif de la commande soit directement adressé via un mail à l'administrateur des ventes, plutôt que de passer par la gestion via l'interface dans la base de données que j'ai créée, un peu en vain d'ailleurs.
Il m'a fallu passer donc le contenu du panier dans un champ prévu à cet effet dans le dispositif assez contraignant qui transite par le serveur de la banque.
Le tableau qui contient les nformations ne passant pas, j'ai sérialisé une variable $caddie et je l'a récupère une fois la transaction validée dans la page adéquate sous cete forme:

$caddie="Politesse:M%Prenom:William%Nom:Esteen%Etablissement:Aucun%Adresse:Rue_du_Cercle_Rouge%Ville:Béziers%
Cp:34500%Telephone:0661234567%Nombre_articles:3%NomArticle_0:SERVI%Reference_0:67%Qte_0:1%PrixHTByRow_0:36.5%
TauxTva_0:0.196%MontantTaxesByRow_0:7.154%PrixUnitTTC_0:43.65%PrixTotalByRow_0:43.65%
NomArticle_1:ECO-SED%Reference_1:97%Qte_1:1%PrixHTByRow_1:12.5%TauxTva_1:0.196%
MontantTaxesByRow_1:2.45%PrixUnitTTC_1:14.95%PrixTotalByRow_1:14.95%NomArticle_2:GELION_3000%
Reference_2:98%Qte_2:1%PrixHTByRow_2:18%TauxTva_2:0.196%MontantTaxesByRow_2:3.528%PrixUnitTTC_2:21.53%
PrixTotalByRow_2:21.53%";

Précision : L'API de cyberplus ne supporte pas d'espace ni un autre séparateur que %.

Dans un premier temps, je récupére les données clients:

$caddie = explode("%",$caddie);
$politesse = explode(":",$client_info_1);
$prenom = explode(":",$client_info_2);
$nom = explode(":",$client_info_3);
$etablissement = explode(":",$client_info_4);
$adresse = explode(":",$client_info_5);
$adresse=str_replace("_"," ",$adresse);
$ville = explode(":",$client_info_6);
$cp = explode(":",$client_info_7);
$tel = explode(":",$client_info_8);

echo "<br>";
echo "Politesse : ".$politesse[1]."<br>";
echo "Prénom : ".$prenom[1]."<br>";
echo "Nom : ".$nom[1]."<br>";
echo "Etablissement : ". $etablissement[1]."<br>";
echo "Adresse : ".$adresse[1]."<br>";
echo "Ville : ".$ville[1]."<br>";
echo "Code postal : ".$cp[1]."<br>";
echo "Téléphone : ".$tel[1]."<br>";

//ici tout se passe bien
//Ensuite, je m'occupe des données du panier produit
//Je passe lçà toutes les valeurs (om produit, reference, prix unitaire ht, taux tva, montant tva, prix tc unitaire, prix ttc par ligne de //produit, et prix total de la commande).
//Rien ne sera recalculé.
//Je supprime les valeurs utilisées du tableau
$caddie_produit=array_slice($caddie,9);

//Contrôle du tableau
print_r($caddie_produit);
//Récupération du nombre d'articles différents
echo $nbrItems[1]."<br>";
echo $champs_produits= count($caddie_produit);
echo "<br>";

Voilà où se trouve mon problème:
Si je réalise la récupération manuellement, ça marche, mais c'est évidemment insatisfaisant.
Par contre, si je fais une boucle pour créer et incrémenter les variables, j'ai un message
"Parse error: syntax error, unexpected T_VARIABLE"...
J'ai essayé avec un . à la place de l'underscore... sans effet.
Si quelqu'un (une) a une idée pour résoudre cette question. Depuis hier, je planche dessus...
Merci d'avance...



//$caddie_produit=explode(":",$caddie[$i]);
for($i=0;$i<$champs_produits;$i++){
$caddie_produit_$i = explode(":",$caddie_produit[$i]);
/*$caddie_produit_1 = explode(":",$caddie_produit[1]);
$caddie_produit_2 = explode(":",$caddie_produit[2]);
$caddie_produit_3 = explode(":",$caddie_produit[3]);
$caddie_produit_4 = explode(":",$caddie_produit[4]);
$caddie_produit_5 = explode(":",$caddie_produit[5]);
$caddie_produit_6 = explode(":",$caddie_produit[6]);
$caddie_produit_7 = explode(":",$caddie_produit[7]);*/
}
echo "<br>Nom".$i.": ".$caddie_produit_0[1]." Reférence: ". $caddie_produit_1[1]. " Qte ".$caddie_produit_2[1] ." prix HT : ".$caddie_produit_3[1]." € "." TVA ". $caddie_produit_4[1]*100 . " % " ." Prix TTC : ".$caddie_produit_7[1]." € "." dont Taxes : ".round($caddie_produit_5[1],2)." € ". "<br>";
A voir également:

7 réponses

Dalida Messages postés 7114 Statut Contributeur 923
 
salut,

GRRRRRRRRR !!!

en même temps des fois vous cherchez la m***e !…

ton code est tout collé, il est illisible, normal que tu ne t'y retrouves pas !
en plus tu ne l'as pas mis en forme, tu ne nous simplifie pas la vie et toi tu risque de ne pas avoir de réponse, penses y pour la prochaine fois !
-;o)

et tu ne lis pas le message d'erreur en entier car il doit contenir le numéro de la ligne de l'erreur…
pour le message lui même, repère le bien, c'est un classique : une erreur de syntaxe, le serveur tombe sur un caractère qui n'est pas à sa place. souvent c'est les parenthèses mal fermées.

et avec un bon éditeur de code tu vois vite que tu as collé deux variables sans concaténation, ça doit venir de là.
$caddie_produit_$i = explode( ":", $caddie_produit[$i] );

0
forwad11 Messages postés 42 Statut Membre 1
 
Bonjour,
J'ai bien compris ton message notamment sur la forme.
Merci d'avoir attiré mon attention là dessus.

Mon problème subsiste pourtant si je concatène le numéro :
$caddie_produit_.$i = explode(':',$caddie_produit[$i]);

La je n'ai pas d'erreur, ce qui est un mieux apparemment, mais si je récupère la contenu du tableau
$caddie_produit_0[1]

pour la première valeur passée, par exemple,
"echo $caddie_produit_0[1]

mais c'est valable pour le reste,
mon retour est vide.
Pourtant,pour la chaîne suivante:
Array ( [0] => NomArticle_0:SERVI [1] => Reference_0:67 [2] => Qte_0:1 [3] => PrixHTByRow_0:36.5 [4] => TauxTva_0:0.196 [5] => MontantTaxesByRow_0:7.154 [6] => PrixUnitTTC_0:43.65 [7] => PrixTotalByRow_0:43.65 [8] => NomArticle_1:ECO-SED [9] => Reference_1:97 [10] => Qte_1:1 [11] => PrixHTByRow_1:12.5 [12] => TauxTva_1:0.196 [13] => MontantTaxesByRow_1:2.45 [14] => PrixUnitTTC_1:14.95 [15] => PrixTotalByRow_1:14.95 [16] => NomArticle_2:GELION_3000 [17] => Reference_2:98 [18] => Qte_2:1 [19] => PrixHTByRow_2:18 [20] => TauxTva_2:0.196 [21] => MontantTaxesByRow_2:3.528 [22] => PrixUnitTTC_2:21.53 [23] => PrixTotalByRow_2:21.53 [24] => ) 

le traitement devrait me renvoyer pour
"echo $caddie_produit_0[1]

SERVI...
Enfin, c'est ce que j'attends du traitement...
0
Dalida Messages postés 7114 Statut Contributeur 923
 
on passe à côté d'un truc là !
de toute façon, concatainer les deux variables, ça peut rien donner.

faudrait remplir un deuxième tableau avec "l'explosion" du premier.

je vais regarder si on aurait pas une ch'tite fonction de derrière le clavier pour faire ça en une seule passe.
0
Dalida Messages postés 7114 Statut Contributeur 923
 
avec ça, ce sera déjà plus simple.
function explodeArray( $item )
{
	explode( ":", $item );
}

$result = array_map( 'explodeArray', $caddie_produit );

il y une autre fonction ('array_walk') mais qui travaille par référence, c'est plus chaud.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
forwad11 Messages postés 42 Statut Membre 1
 
Tu es une perle, si tu permets.
0
Dalida Messages postés 7114 Statut Contributeur 923
 
Tu es une perle, si tu permets.
tout dépend de comment tu l'entends !!!
-:oDDD
0
forwad11 Messages postés 42 Statut Membre 1
 
Simply avec sobriété, pour rendre hommage à ta pertinence et à ton dévouement.
0
Dalida Messages postés 7114 Statut Contributeur 923
 
<flood>
LOL !
en tout cas merci du compliment.

tu as beaucoup utilisé mootools ?
</flood>
0
forwad11 Messages postés 42 Statut Membre 1
 
Un peu... Découvert récemment et je dois dire qu'il m'a rendu, notamment sur les requêtes Ajax, de bons services.
Idem sur le contrôle des données de formulaire.
Le seul problème que j'ai eu - en pratique - c'est sur le widget calendrier. Et c'est vraiment tout c.., car le bug c'est que si tu sélectione le 18/12 par exemple, il renvoie le 17/12... Mais même en regardant le code javascript - utilie pour traduire les jours semaine et les mois, je n'ai pas trouvé où se trouvait la bug... D'ailleurs, il se trouve même sur le site:

https://www.cnet.com/

Si tu ne connais pas, découvres le... Entre parenthèse, son coeur sert notamment pour Joomla!
0
nspace1999
 
hello

Comment tu as fait pour serialiser ta variable caddie parce que quand je passe la var serialisée dans

$parm="$parm caddie

J'ai une erreur appel request
0