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

E-Commerce Discussion :

Questions à propos de tuto création panier


Sujet :

E-Commerce

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Par défaut Questions à propos de tuto création panier
    Zut ! a priori de je me suis trompé de forum... j'aurai dû poster ici :
    http://www.developpez.net/forums/f36...ts/e-commerce/
    Comment faire pour changer ???


    Bonjour à tous,

    Je suis nouveau sur ce forum, je m'appelle "jcoutsit", j'ai un petit projet de site web et j'ai besoin de vos lumières...

    J'ai suivi ce tuto à la lettre : http://jcrozier.developpez.com/articles/web/panier/

    Le panier fonctionne très bien pas de problèmes, j'aimerai par contre le modifier afin de l'adapter à ma situation en transmettant les variables par POST, ajouter des informations dans le panier...etc

    Une première question m'interpelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $l = preg_replace('#\v#', '', $_GET['l']);
    $q = intval($_GET['q']);
    $p = floatval($_GET['p']);
    
    ou
    
    $l = preg_replace('#\v#', '',$_POST['l']);
    $p = floatval($_POST['p']);
    $QteArticle = array();
    (entre parenthèse, le regex de la variable "l" me supprime les "V" contenus dans les noms de mes fichiers mais celà n'a pas vraiment d'importance pour l'instant)

    Dans ce script et tel qu'il est, les variables "l", "p" et "q" sont transmises en GET à la page "panier.php". Dans la page panier.php et au niveau de l'affichage du contenu du panier, les variables sont $_SESSION['libelleProduit'],
    $_SESSION['prixProduit'], $_SESSION['quantiteProduit'].

    Je suis peut être passé à côté, mais à aucun moment, ni dans la page panier.php ni dans la page fonctions_panier.php je ne vois qu'est déclaré que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $l=$_SESSION['libelleProduit'];
    $p=$_SESSION['prixProduit'];
    $q=$_SESSION['quantiteProduit'];
    Comment PHP le sait ?

    Merci pour vos éclaircissement.

    jcoutsit

  2. #2
    Membre émérite Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Par défaut
    Si je lis correctement panier.php, il y a cette partie :
    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
    if ($erreur==false){
     switch($action){
      Case "ajout":
        ajouterArticle($l,$q,$p);
        break;
      Case "suppression":
        supprimerArticle($l);
        break;
      Case "refresh" :
        for ($i = 0 ; $i < count($QteArticle) ; $i++)
        {
          modifierQTeArticle($_SESSION['panier']['libelleProduit'][$i],round($QteArticle[$i]));
        }
        break;
      Default:
        break;
     }
    }
    Les fonctions de fonctions-panier.php sont donc appelées avec les valeurs passées par le GET ou le POST et ces fonctions mettent les valeurs passées en paramètres dans le tableau SESSION.

    Je suis clair ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Par défaut
    Merci Spoutnik de ta réponse.

    C'est presque clair :

    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
    
    ---------------PAGE FONCTIONS_PANIER.PHP--------------
    function ajouterArticle($libelleProduit,$qteProduit,$prixProduit){
    if (creationPanier())
    {
    $positionProduit = array_search($libelleProduit, $_SESSION['panier']['libelleProduit']);
    
    if ($positionProduit !== false)
    {
    $_SESSION['panier']['qteProduit'][$positionProduit] += $qteProduit ;
    }
    else
    {
    array_push( $_SESSION['panier']['libelleProduit'],$libelleProduit);
    array_push( $_SESSION['panier']['qteProduit'],$qteProduit);
    array_push( $_SESSION['panier']['prixProduit'],$prixProduit);
    }
    }
    -------------page PANIER.PHP--------------
    if ($erreur==false){switch($action){
    Case "ajout":
    ajouterArticle($l,$q,$p);
    break;
    La correspondance des variables ($l=$_SESSION['libelleProduit']) se fait dans l'ordre d'écriture ? Si j'inverse l'ordre des variables q et p, q deviendra $prixProduit et vice versa ?

  4. #4
    Membre émérite Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Par défaut
    Citation Envoyé par jcoutsit Voir le message
    La correspondance des variables ($l=$_SESSION['libelleProduit']) se fait dans l'ordre d'écriture ?
    Je suis pas sûr de comprendre. Il n'y a pas de "$l=$_SESSION['libelleProduit']".

    1. panier.php reçoit une requête du type :
      panier.php?action=suppression&l=val1&p=val2&q=val3
    2. On extrait les différents champs de cette requête (ici en GET, mais en POST ca revient au même).
      on a les variables $l, $p, $q
    3. on appele les fonctions de fonctions-panier.php avec ces valeurs ($l,$p,$q).
    4. les fonctions font leur boulot : mettre à jour les variables de sessions à partir des paramètres des fonctions, eux même renseignés par les variables $l, $p, $q du fichier panier.php
    5. on affiche les infos du panier à partir des infos contenues dans les variables de session.


    Citation Envoyé par jcoutsit Voir le message
    Si j'inverse l'ordre des variables q et p, q deviendra $prixProduit et vice versa ?
    Inverser l'ordre à quel endroit ? je ne comprend pas.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Par défaut
    Oui ce n'est pas très explicite tout ça...

    Autre version :

    Affichage du contenu du panier dans page panier.php :
    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
    35
    36
    37
    38
    39
    <?php
    if (creationPanier())
    {
    $nbArticles=count($_SESSION['panier']['libelleProduit']);
    $_SESSION['panier']['nbArticles']=$nbArticles;
    if ($nbArticles <= 0)
    echo "<tr><td class=\"class1\" colspan=\"6\">Votre panier est vide </ td></tr>";
    else
    {
    for ($j=0 ;$j < $nbArticles ; $j++)
    {
    echo "<tr>";
    echo '<td class=class1>' . $_SESSION['panier']['libelleProduit'][$j] . '</ td>';
    echo '<input type=hidden name=l
    value=' . $_SESSION['panier']['libelleProduit'][$j]. ' />';
    echo "<td class=class1></ td>";
    echo "<td class=class1></ td>";
    echo '<td class=class1>' . $_SESSION['panier']['prixProduit'][$j] . '</td>';
    echo '<input type=hidden name=p
    value=' . $_SESSION['panier']['prixProduit'][$j]. ' />';
    echo '<td class=class1><input type=text size=4 name=QteArticle[]
    value=' . $_SESSION['panier']['qteProduit'][$j]. ' /></td>';
    $total_prod=$_SESSION['panier']['prixProduit'][$j]*$_SESSION['panier']['qteProduit'][$j];
    echo '<td class=class1>' . $total_prod . '</ td>';?>
    <td class="class1"><a href="temp_panier.php?action=suppression&amp;l=<? echo ''. $_SESSION['panier']['libelleProduit'][$j].''?>&amp;p=<? echo ''. $_SESSION['panier']['prixProduit'][$j].''?>&amp;q=<? echo ''. $_SESSION['panier']['qteProduit'][$j].''?>" class="class5" title="Supprimer ce produit du panier">Supprimer</a></td>
    <?
    echo "</tr>";
    }
    echo "<tr></tr><tr></tr><tr></tr><tr><td colspan=\"3\" class=\"class8\">Montant total pour : $nbArticles articles</td>";
    echo "<td colspan=\"4\" class=\"class1\">";
    echo '' . MontantGlobal() . '';
    echo "</td></tr>";
    echo "<tr></tr><tr></tr><tr></tr><tr><td colspan=\"6\" class=\"class6\">";
    echo "<input type=\"submit\" value=\"Rafra&icirc;chir le panier\"/>";
    echo "<input type=\"hidden\" name=\"action\" value=\"refresh\"/>";
    echo "</td></tr>";
    }
    }
    ?>
    Ma question :

    Comment PHP sait que les variables transmises en GET :"l", "q", et "p" correspondent à "$_SESSION['libelleProduit'] pour "l"... ?

    Grâce à ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($erreur==false){
     switch($action){
      Case "ajout":
        ajouterArticle($l,$q,$p);
        break;

  6. #6
    Membre émérite Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Par défaut
    Citation Envoyé par jcoutsit Voir le message
    Ma question :

    Comment PHP sait que les variables transmises en GET :"l", "q", et "p" correspondent à "$_SESSION['libelleProduit'] pour "l"... ?

    Grâce à ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($erreur==false){
     switch($action){
      Case "ajout":
        ajouterArticle($l,$q,$p);
        break;
    les paramètres passé en GET sont extrait et servent à remplir les variables via ces commandes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     $l = preg_replace('#\v#', '', $_GET['l']);
    	
     $q = intval($_GET['q']);
    
     $p = floatval($_GET['p']);
    je change une peu les les nom pour être (peut être) plus clair :

    la requète suivante arrive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    panier.php?action=suppression&paramLibelle=val1&paramPrice=val2&paramQuantity=val3
    le code suivant extrait les paramètres pour affecter les variables php qui correspondent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     $l = preg_replace('#\v#', '', $_GET['paramLibelle']);
    	
     $q = intval($_GET['paramQuantity']);
    
     $p = floatval($_GET['paramPrice']);
    Ces variables servent dans les fonctions telles que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajouterArticle($l,$q,$p);
    Cette fonction met à jour les informations de session :

    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
       
    function ajouterArticle($libelleProduit,$qteProduit,$prixProduit){
    
    if (creationPanier())
    {
    $positionProduit = array_search($libelleProduit,  $_SESSION['panier']['libelleProduit']);
    	
      if ($positionProduit !== false)
      {
       $_SESSION['panier']['qteProduit'][$positionProduit] += $qteProduit ;
      }
      else
      {
       array_push( $_SESSION['panier']['libelleProduit'],$libelleProduit);
       array_push( $_SESSION['panier']['qteProduit'],$qteProduit); 
       array_push( $_SESSION['panier']['prixProduit'],$prixProduit);
      }
    
    }
    ...
    Là tu as le cheminement de la valeur depuis la requète jusqu'à la mise à jour de la variable de session

Discussions similaires

  1. [WS 2008] Question à propos la création d'un sous domaine dans server 2008
    Par L'aigle de Carthage dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 26/11/2010, 20h57
  2. Question à propos de la création d'un jeu de gestion
    Par gilang dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 19/05/2010, 13h53
  3. Tuto création d'un panier : erreurs
    Par mikael2235 dans le forum E-Commerce
    Réponses: 0
    Dernier message: 20/07/2009, 14h51
  4. Question sur le tuto "Création et lecture de flux RSS 2.0 en PHP"
    Par Invité dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/05/2009, 15h51
  5. Réponses: 3
    Dernier message: 20/08/2008, 12h05

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