Passage variabkle caddie
forwad11
Messages postés
42
Statut
Membre
-
nspace1999 -
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>";
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:
- Passage variabkle caddie
- Passage qwerty azerty - Guide
- Passage windows 10 à 11 gratuit - Guide
- Test passage windows 11 - Guide
- Choisir passage sonnerie samsung - Guide
- Passage windows 7 à 10 - Accueil - Mise à jour
7 réponses
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à.
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] );
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 :
La je n'ai pas d'erreur, ce qui est un mieux apparemment, mais si je récupère la contenu du tableau
pour la première valeur passée, par exemple,
mais c'est valable pour le reste,
mon retour est vide.
Pourtant,pour la chaîne suivante:
le traitement devrait me renvoyer pour
SERVI...
Enfin, c'est ce que j'attends du traitement...
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...
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.
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.
avec ça, ce sera déjà plus simple.
il y une autre fonction ('array_walk') mais qui travaille par référence, c'est plus chaud.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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!
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!