IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Mail] Récupération d'un caddie


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 13
    Points : 16
    Points
    16
    Par défaut [Mail] Récupération d'un caddie
    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 informations 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 cette forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $caddie="Politesse:M%Prenom:William%Nom:Esteen%Etablissement:Aucun%Adresse:Rue_du_Cer cle_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_30 00%
    Reference_2:98%Qte_2:1%PrixHTByRow_2:18%TauxTva_2:0.196%MontantTaxesByRow_2:3.528%PrixUnit TTC_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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    $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...



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //$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>";
    Configuration: Windows XP

  2. #2
    Membre confirmé Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Points : 576
    Points
    576
    Par défaut Salut
    N'as tu pas un pb concernant t indices.
    Genre tu commence ton tableau a [1] alors que ton $i commence a 0?

    Sinon precise l'erreur, quand est ce qu'elle intervient.

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 13
    Points : 16
    Points
    16
    Par défaut Pas un problème d'indice
    Non, ce n'est pas un problème d'indice...
    En fait, c'est la création d'une variable incrémentée dans la boucle qui est refusée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for($i=0;$i<$champs_produits;$i++){
    $caddie_produit_$i = explode(":",$caddie_produit[$i]); 
    }
    Si je le réalise, pour valeur de test, en affectant moi-même les variables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $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]);
    Mes variables sont correctement remplies et je peux en récupérer le contenu:

    par exemple: echo "Nom : ". $caddie_produit_0[1];

    Mais le but du jeu, puisque j'ignorerai conbien de lignes de produits différents sont passées par le client dans son caddie, c'est bien de faire une boucle et d'incrémenter automatiquement...
    Mais ça me revoie une erreur de parsing et je ne parviens pas à la résoudre...

  4. #4
    Membre confirmé Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Points : 576
    Points
    576
    Par défaut
    oki,
    Alors j'avais ete confronte au meme probleme...
    Effectivement tu ne peut pas ou du moins je ne penses pâs que tu puisse faire quelque chose comme
    $ma_variable.$mon_autre_variable. Elles seront interpretees.

    Par contre tu peux tres bien faire un tableau a 2 dimensions

    $mon_caddie[$produit][$caddie_produit]

    la ca marche et tu peux automatiser....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for($i=0;$i<sizeof($mon_caddie);$i++)
        $mon_caddie[$i][$caddie_produit];


    Enfin un truc du genre....

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 13
    Points : 16
    Points
    16
    Par défaut Toujours pas résolu
    Veuillez m'excuser, mais je ne parviens toujours pas à franchir cette étape.
    Passent les heures, comme dit la chanson...
    Il s'agit pour moi de récupérer et chaîner de manière à les exploiter dans un tableau, les variables d'un caddie.
    Juste pour l'exemple, un caddie type tel qu'il est transmis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $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%";
    La première partie se passe sans problème, je récupère et j'affiche tous les champs d'information sur le client.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    $caddie = explode("%",$caddie);
    echo $total_champs = count($caddie)."<br>";
    $client_info_1=$caddie[0];
    $client_info_2=$caddie[1];
    $client_info_3=$caddie[2];
    $client_info_4=$caddie[3];
    $client_info_5=$caddie[4];
    $client_info_6=$caddie[5];
    $client_info_7=$caddie[6];
    $client_info_8=$caddie[7];
     
    $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>";
    Là où la bât blesse toujours, c'est pour récupérer un tableau cohérent et utilisable du contenu du caddie_produit, au delà d'un print_r...
    Les variables concernées apparaissent au point 8 du tableau.
    Mon nouveau tableau $caddie_produit se présente ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $caddie_produit=array_slice($caddie,9);
    et si je fais un print_r($caddie_produit),
    j'affiche correctement les données.
    Reste qu'il me faut en faire un tableau associatif de sorte de pouvoir récupérer la valeur des variables.
    J'ai essayé de passer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    echo $nbr_it = sizeof($caddie_produit)."<br>";
     
     
    for($i=0;$i<$nbr_it;$i++){
     
        $mon_caddie[$i]=explode(":",$caddie_produit[$i]);
     
    }
    mais je n'obtiens rien sinon un tableau plus encore 'profond' et inutilisable:

    Array ( [0] => Array ( [0] => NomArticle_0 [1] => SERVI ) [1] => Array ( [0] => Reference_0 [1] => 67 ) [2] => Array ( [0] => Qte_0 [1] => 1 ) [3] => Array ( [0] => PrixHTByRow_0 [1] => 36.5 ) [4] => Array ( [0] => TauxTva_0 [1] => 0.196 ) [5] => Array ( [0] => MontantTaxesByRow_0 [1] => 7.154 ) [6] => Array ( [0] => PrixUnitTTC_0 [1] => 43.65 ) [7] => Array ( [0] => PrixTotalByRow_0 [1] => 43.65 ) [8] => Array ( [0] => NomArticle_1 [1] => ECO-SED ) [9] => Array ( [0] => Reference_1 [1] => 97 ) [10] => Array ( [0] => Qte_1 [1] => 1 ) [11] => Array ( [0] => PrixHTByRow_1 [1] => 12.5 ) [12] => Array ( [0] => TauxTva_1 [1] => 0.196 ) [13] => Array ( [0] => MontantTaxesByRow_1 [1] => 2.45 ) [14] => Array ( [0] => PrixUnitTTC_1 [1] => 14.95 ) [15] => Array ( [0] => PrixTotalByRow_1 [1] => 14.95 ) [16] => Array ( [0] => NomArticle_2 [1] => GELION_3000 ) [17] => Array ( [0] => Reference_2 [1] => 98 ) [18] => Array ( [0] => Qte_2 [1] => 1 ) [19] => Array ( [0] => PrixHTByRow_2 [1] => 18 ) [20] => Array ( [0] => TauxTva_2 [1] => 0.196 ) [21] => Array ( [0] => MontantTaxesByRow_2 [1] => 3.528 ) [22] => Array ( [0] => PrixUnitTTC_2 [1] => 21.53 ) [23] => Array ( [0] => PrixTotalByRow_2 [1] => 21.53 ) [24] => Array ( [0] => ) )
    J'ai déjà réalisé une grand nombre de fois des affichages itératifs, ec des tableaux dans des pages, mais là j'avoue avoir essayé tout ce que je pouvais...
    Si j'utilise array_walk ainsi,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function test_print ($item2, $key) {
        $item2= explode(":",$item2);
    	echo "$item2[1] - ";
    }
    array_walk ($caddie_produit, 'test_print');
    j'obtiens bien un tableau mais les couples "clé/valeur" demeurent inaccessibles.
    Et puis de toute façon, mon objectif est de pouvoir récupérer une valeur sous la forme $caddie_produit[n] ou $caddie_produit[n][n1];
    Fichiers attachés Fichiers attachés

  6. #6
    Membre confirmé Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Points : 576
    Points
    576
    Par défaut
    pour un affiche correct tu dois mettre des indices a ton tableau...
    $mon_caddie[$i]."<br/>

    for (variable nb de produit)
    while(info sur produit)
    echo $mon_caddie[$i]."<br/>


    non?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] mail/récupération données formulaire
    Par maxime393 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 17/07/2013, 16h22
  2. Réception de Mail : Récupération des Dest. CC et CM
    Par mduval dans le forum VBA Outlook
    Réponses: 7
    Dernier message: 28/05/2013, 16h01
  3. [Mail] Récupération et traitement automatique d'un mail
    Par scorpiwolf dans le forum Réseau
    Réponses: 0
    Dernier message: 11/03/2009, 19h58
  4. [Mail] récupération de l'entete et du corp d'un email
    Par sansouna24 dans le forum Langage
    Réponses: 1
    Dernier message: 07/03/2006, 20h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo