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 :

panier php jcrozier propriété


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 9
    Points : 5
    Points
    5
    Par défaut panier php jcrozier propriété
    Bonjour, j'ai pris le panier réalisé et expliqué pour l'intégrer au site de mon travail (un petit projet avecmon patron :p). Tout marche bien, j'ai stylisé le panier etc.. etc... Mais hier, en voulant ajouter une propriété de plus, impossible de l'afficher dans la boucle, elle est vide, pourtant je pense bien avoir fait les choses.

    Donc en gros j'ai essayé de rajouter une propriété référence, en copiant/collant/remplaçant tout simplement les lignes qu'il faut. Pourriez-vous m'aider ? Je vous donnerai les lignes de codes selon vos instructions. Cordialement.

  2. #2
    Membre régulier Avatar de DezMax
    Homme Profil pro
    Licence Informatique
    Inscrit en
    Décembre 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Licence Informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 89
    Points : 115
    Points
    115
    Par défaut
    Je veux tenter de t'aider mais il me faut le code de la page en question
    --//CODE//--

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 9
    Points : 5
    Points
    5
    Par défaut panier php
    Salut dezmax et merci pour ta réponse. http://jcrozier.developpez.com/articles/web/panier/. Les codes terminés se trouvent tout en bas de page. Comme les lignes sont assez longue je préfère renvoyer vers la page source ^^. Si tu préfères que je mette les miens ici, pas de sushi ^^.

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu veux ajouter une propriété aux articles (en plus de quantité, libellé et prix) c'est bien ça ?
    Citation Envoyé par over- Voir le message
    Si tu préfères que je mette les miens ici, pas de sushi ^^.
    ça serait une bonne idée, parce que on peut espérer que le code du tuto fonctionne...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Ok, voilà le code du panier :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    <form method="post" action="">
    <table style="width: 700px">
    <div id="div_titre_panier">
    </div>
    <tr>
    <td class="titre_td">Image</td>
    <td class="titre_td">Libellé</td>
    <td class="titre_td">Quantité</td>
    <td class="titre_td">Prix Unitaire</td>
    <td class="titre_td">Réferences</td>
    <td class="titre_td">Action</td>
    </tr>
    <?php
    if (creationPanier())
    	{
    	   $nbArticles=count($_SESSION['panier']['libelleProduit']);
    	   if ($nbArticles <= 0)
    	   echo "<tr><td style=\"border:none;\">Votre panier est vide </ td></tr>";
    	   else
    	   {
    	      for ($i=0 ;$i < $nbArticles ; $i++)
    	      {	 
    			 echo "<tr style=\"height: 10px;\">";
    			 echo "</tr>";
    	         echo "<tr style=\"padding-top: 20px;\">";
    			 echo "<td style=\"border: none\">".($_SESSION['panier']['imageProduit'][$i])."</td>";
    	         echo "<td style=\"border: none\">".htmlspecialchars($_SESSION['panier']['libelleProduit'][$i])."</td>";
    ?> <td style="border: none; text-align: center;">
    <div><a onClick="substract('quantite');"><img src="/images/moins.png" width="25" height="25"></a></div> 
    <div><input type="text" name="q[]" value="<?php echo ($_SESSION['panier']['qteProduit'][$i]) ?>" id="quantite" size="2" maxlength="4" onkeypress="return isNumberKey(event);"></div> 
    <div><a onClick="add('quantite');" ><img src="/images/plus.png" width="25" height="25"></a></div>  
     
    </td> <?php 
    	         echo "<td style=\"border: none; text-align: center\">".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])." €</td>";
    			  echo "<td style=\"border: none; text-align: center\">".htmlspecialchars($_SESSION['panier']['referencesProduit'][$i])." €</td>";
    	         echo "<td style=\"border: none; text-align: center\"><a href=\"".htmlspecialchars("panier?action=suppression&l=".rawurlencode($_SESSION['panier']['libelleProduit'][$i]))."\"><img src=\"/images/corbeille.png\" width=\"20\" height=\"20\"></a></td>";
    			 echo "</tr>";
    			echo "<tr style=\"border: none; margin-bottom: 20px;\"><td style=\"border: none;\" colspan=\"1\"> </td>";
    	      echo "<td colspan=\"4\">";
    	      echo "Extension";
    	      echo "</td></tr>";
    		   echo "<tr style=\"height: 50px;\">";
    			 echo "</tr>";
    	      }
     
    	      echo "<tr><td colspan=\"2\"> </td>";
    	      echo "<td colspan=\"3\">";
    	      echo "<span style=\"color:#a63232;\">Total de mes articles : ".MontantGlobal();
    	      echo " €</span></td></tr>";
    	   }
    	}
    ?>
    </table>
    <div style="margin-top: 20px; position: relative;">
    <input type="image" src="/images/refresh.png" value="Rafraichir"/>
    <input type="hidden" name="action" value="refresh"/>
     
    <a>
    <div id="valider_achat">
    </div>
    </a>
    <a>
    <div id="continuer_achat">
    </div>
    </a>
    </div>
    <div style="height: 40px;">
    </div>
    </form>
    </div>
    <?php get_footer(); ?>
     
     
    <?php
    $erreur = false;
    $action = (isset($_POST['action'])? $_POST['action']: (isset($_GET['action'])? $_GET['action']:null
    )) ;
    if($action !== null)
    {
    if(!in_array($action,array('ajout', 'suppression', 'refresh')))
    $erreur=true;
    //récuperation des variables en POST ou GET
    $s = $_SESSION['$image_article2'];
    $l = (isset($_POST['l'])? $_POST['l']: (isset($_GET['l'])? $_GET['l']:null )) ;
    $p = (isset($_POST['pr'])? $_POST['pr']: (isset($_GET['pr'])? $_GET['pr']:null )) ;
    $q = (isset($_POST['q'])? $_POST['q']: (isset($_GET['q'])? $_GET['q']:null )) ;
    $n = (isset($_POST['n'])? $_POST['n']: (isset($_GET['n'])? $_GET['n']:null )) ;
    $ref = (isset($_POST['ref'])? $_POST['ref']: (isset($_GET['ref'])? $_GET['ref']:null )) ;
    //Suppression des espaces verticaux
    $l = preg_replace('#\v#', '',$l);
    //On verifie que $p soit un float
    $p = floatval($p);
    $n = floatval($n);
    //On traite $q qui peut etre un entier simple ou un tableau d'entier
    if (is_array($q)){
    $QteArticle = array();
    $i=0;
    foreach ($q as $contenu){
    $QteArticle[$i++] = intval($contenu);
    }
    }
    else
    $q = intval($q);
    }
    if (!$erreur){
    switch($action){
    Case "ajout":
    ajouterArticle($s,$l,$q,$p,$n,$ref);
    break;
    Case "suppression":
    supprimerArticle($l);
    break;
    Case "refresh" :
    for ($i = 0 ; $i < count($QteArticle) ; $i++)
    {
    modifierQTeArticle($_SESSION['panier']['libelleProduit'][$i],round($QteArticle[$i]));
    }
    header("Location: Panier");
    break;
    Default:
    break;
    }
    }
     
    ?>
    Et là le code des fonctions du panier :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    <?php
    //-----------------------------------Création de panier
     
    function creationPanier(){
       if (!isset($_SESSION['panier'])){
          $_SESSION['panier'] = array();
    	  $_SESSION['panier']['imageProduit'] = array();
          $_SESSION['panier']['libelleProduit'] = array();
          $_SESSION['panier']['qteProduit'] = array();
          $_SESSION['panier']['prixProduit'] = array();
    	  $_SESSION['panier']['referencesProduit'] = array();
          $_SESSION['panier']['verrou'] = false;
       }
       return true;
    }
     
    //----------------------------------- Ajout Article dans le panier
     
    function ajouterArticle($imageProduit,$libelleProduit,$qteProduit,$prixProduit,$referencesProduit){
     
       //Si le panier existe
       if (creationPanier() && !isVerrouille())
       {
          //Si le produit existe déjà on ajoute seulement la quantité
          $positionProduit = array_search($libelleProduit,  $_SESSION['panier']['libelleProduit']);
     
          if ($positionProduit !== false)
          {
             $_SESSION['panier']['qteProduit'][$positionProduit] += $qteProduit ;
          }
          else
          {
             //Sinon on ajoute le produit
    		 array_push( $_SESSION['panier']['imageProduit'],$imageProduit);
             array_push( $_SESSION['panier']['libelleProduit'],$libelleProduit);
             array_push( $_SESSION['panier']['qteProduit'],$qteProduit);
             array_push( $_SESSION['panier']['prixProduit'],$prixProduit);
    		 array_push( $_SESSION['panier']['referencesProduit'],$referencesProduit);
          }
    	header("Location: panier");	  
       }
       else
       echo "Un problème est survenu veuillez contacter l'administrateur du site.";
    }
     
    //----------------------------------- Suppression Article
     
    function supprimerArticle($libelleProduit){
       //Si le panier existe
       if (creationPanier() && !isVerrouille())
       {
          //Nous allons passer par un panier temporaire
          $tmp=array();
    	  $tmp['imageProduit'] = array();
          $tmp['libelleProduit'] = array();
          $tmp['qteProduit'] = array();
          $tmp['prixProduit'] = array();
    	  $tmp['referencesProduit'] = array();
          $tmp['verrou'] = $_SESSION['panier']['verrou'];
     
          for($i = 0; $i < count($_SESSION['panier']['libelleProduit']); $i++)
          {
             if ($_SESSION['panier']['libelleProduit'][$i] !== $libelleProduit)
             {
    			array_push( $tmp['imageProduit'],$_SESSION['panier']['imageProduit'][$i]);
                array_push( $tmp['libelleProduit'],$_SESSION['panier']['libelleProduit'][$i]);
                array_push( $tmp['qteProduit'],$_SESSION['panier']['qteProduit'][$i]);
                array_push( $tmp['prixProduit'],$_SESSION['panier']['prixProduit'][$i]);
    			array_push( $tmp['referencesProduit'],$_SESSION['panier']['referencesProduit'][$i]);
             }
     
          }
          //On remplace le panier en session par notre panier temporaire à jour
          $_SESSION['panier'] =  $tmp;
          //On efface notre panier temporaire
          unset($tmp);
    	  header("Location: Panier");
       }
       else
       echo "Un problème est survenu veuillez contacter l'administrateur du site.";
    }
     
    //-----------------------------------  Modifier Article
     
    function modifierQTeArticle($libelleProduit,$qteProduit){
       //Si le panier éxiste
       if (creationPanier() && !isVerrouille())
       {
          //Si la quantité est positive on modifie sinon on supprime l'article
          if ($qteProduit > 0)
          {
             //Recharche du produit dans le panier
             $positionProduit = array_search($libelleProduit,  $_SESSION['panier']['libelleProduit']);
     
             if ($positionProduit !== false)
             {
                $_SESSION['panier']['qteProduit'][$positionProduit] = $qteProduit ;
             }
          }
          else
          supprimerArticle($libelleProduit);
       }
       else
       echo "Un problème est survenu veuillez contacter l'administrateur du site.";
    }
     
    //-----------------------------------  Mantant du Panier
     
    function MontantGlobal(){
       $total=0;
       for($i = 0; $i < count($_SESSION['panier']['libelleProduit']); $i++)
       {
          $total += $_SESSION['panier']['qteProduit'][$i] * $_SESSION['panier']['prixProduit'][$i];
       }
       return $total;
    }
     
    //-----------------------------------  Fonctions Utiles
     
    function isVerrouille(){
       if (isset($_SESSION['panier']) && $_SESSION['panier']['verrou'])
       return true;
       else
       return false;
    }
     
    function compterArticles()
    {
       if (isset($_SESSION['panier']))
       return count($_SESSION['panier']['libelleProduit']);
       else
       return 0;
     
    }
     
    function supprimePanier(){
       unset($_SESSION['panier']);
    }
    ?>
    Voilà, donc en gros la références n'est pas retourné, mais tout le reste marche, comme si htmlspecialchars($_SESSION['panier']['referencesProduit'][$i]) ne valait rien :/.

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Le code a l'air bien.
    Est-ce que tu as bien ajouté ta nouvelle propriété aux liens du catalogue ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 9
    Points : 5
    Points
    5
    Par défaut panier php
    Oui, j'ai bien rajouté la variable dans le lien d'ajout du panier, ça me parait complètement fou cette histoire, je sais vraiment pas d'où ça peut venir ^^. J'avais réussi à ajouter une propriété pour l'image, mais là.. nada :/.

  8. #8
    Membre régulier Avatar de Le Néophyte
    Homme Profil pro
    Développeur débutant...
    Inscrit en
    Mars 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur débutant...

    Informations forums :
    Inscription : Mars 2013
    Messages : 60
    Points : 82
    Points
    82
    Par défaut
    Salut, j'ai déjà utilisé ce code...

    J'ai essayé de trouvé ta faille mais sans succès...

    Le code pour les articles resemble à ceci ?
    (J'ai pris un exemple de mon code perso)

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <strong>- Veau marengo</strong> <span class="prix">4.50€</span>*<a href="panier.php?action=ajout&amp;l=Veau marengo&amp;q=1&amp;p=4.5" class="ajouter" onclick="window.open(this.href, '', 
    'toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=yes, copyhistory=no, fullscreen,scrollbars'); return false;"><img src="/images/caddie2.png" width="15" height="17" border="0" align="absmiddle" /></a>

    C'est peut-être de la que viens le problème ?!
    Aussi des fois je devais effacer mes cookies dans le navigateur pour mes test...

  9. #9
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Bonjour,

    J'ai regardé un peu le code et le seul truc qui me chiffonne c'est justement le lien d'ajout. On ne voit nul par la référence :/.
    panier.php?action=ajout&amp;l=Veau marengo&amp;q=1&amp;p=4.5On a bien le libellé (l), la quantité (q) et le prix (p) mais il n'y a rien qui ressemble à une référence (ref).

    De plus tu appelle la méthode de cette façon :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ajouterArticle($s,$l,$q,$p,$n,$ref);

    Mais ta fonction demande seulement 4 paramètres et la référence est le 4ème. Le paramètre "n" est en trop selon la définition actuelle de la fonction (et n'est d'ailleurs pas non plus présent dans le lien d'ajout )

  10. #10
    Membre régulier Avatar de Le Néophyte
    Homme Profil pro
    Développeur débutant...
    Inscrit en
    Mars 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur débutant...

    Informations forums :
    Inscription : Mars 2013
    Messages : 60
    Points : 82
    Points
    82
    Par défaut
    En fait moi je ne suis pas le demandeur, j'essaie de venir en aide à @over, le code que j'ai mis n'a rien à voir à celui utilisé par @over mais je voudrais justement voir le sien, celui la viens d'un de mes sites !!
    Bonne nuit à tous !!

  11. #11
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Oups la boulette , désolé il était tard et je n'avais pas fait le lien entre les pseudos.

    Donc si je ne prend que le code de "over" il y a toujours ce problème de nombre de paramètre . L'appel prend 6 paramètre dont "ref" en dernier et la définition de la variables en prend 5 (et non pas 4 comme je l'ai dit précédemment ). La référence ce trouve en 5ème position dans la définition.

Discussions similaires

  1. [eCommerce] Demande aide pour modifier 1 ligne dans panier.php
    Par patriciaprovence dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 07/10/2008, 10h06
  2. Panier PHP et quantités
    Par Armagnak dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 19/08/2008, 16h59
  3. [eCommerce] Avec script panier.php
    Par midnnight dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 18/05/2008, 17h35
  4. [Mail] panier php à envoyer par mail
    Par bijouxenbois dans le forum Langage
    Réponses: 19
    Dernier message: 11/04/2008, 23h38
  5. Gestion panier PHP - Explorer/Firefox
    Par len73 dans le forum Langage
    Réponses: 6
    Dernier message: 13/05/2007, 19h52

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