Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 11 sur 11
  1. #1
    Invité de passage
    Profil pro Assuka
    Inscrit en
    janvier 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Nom : Assuka

    Informations forums :
    Inscription : janvier 2010
    Messages : 9
    Points : 1
    Points
    1

    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 du Club Avatar de DezMax
    Homme Profil pro
    Terminale STI2D-SIN
    Inscrit en
    décembre 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France

    Informations professionnelles :
    Activité : Terminale STI2D-SIN

    Informations forums :
    Inscription : décembre 2012
    Messages : 87
    Points : 68
    Points
    68

    Par défaut

    Je veux tenter de t'aider mais il me faut le code de la page en question

  3. #3
    Invité de passage
    Profil pro Assuka
    Inscrit en
    janvier 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Nom : Assuka

    Informations forums :
    Inscription : janvier 2010
    Messages : 9
    Points : 1
    Points
    1

    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
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France

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

    Informations forums :
    Inscription : avril 2007
    Messages : 5 197
    Points : 10 009
    Points
    10 009

    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)

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

  5. #5
    Invité de passage
    Profil pro Assuka
    Inscrit en
    janvier 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Nom : Assuka

    Informations forums :
    Inscription : janvier 2010
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Ok, voilà le code du panier :

    Code :
    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 :
    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
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France

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

    Informations forums :
    Inscription : avril 2007
    Messages : 5 197
    Points : 10 009
    Points
    10 009

    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)

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

  7. #7
    Invité de passage
    Profil pro Assuka
    Inscrit en
    janvier 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Nom : Assuka

    Informations forums :
    Inscription : janvier 2010
    Messages : 9
    Points : 1
    Points
    1

    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 du Club Avatar de Le Néophyte
    Homme Profil pro
    Développeur débutant...
    Inscrit en
    mars 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : mars 2013
    Messages : 34
    Points : 40
    Points
    40

    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 :
    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 actif
    Homme Profil pro Terra
    Ingénieur développement logiciels
    Inscrit en
    juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Nom : Homme Terra
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : juin 2004
    Messages : 108
    Points : 171
    Points
    171

    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 :
    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 du Club Avatar de Le Néophyte
    Homme Profil pro
    Développeur débutant...
    Inscrit en
    mars 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : mars 2013
    Messages : 34
    Points : 40
    Points
    40

    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 actif
    Homme Profil pro Terra
    Ingénieur développement logiciels
    Inscrit en
    juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Nom : Homme Terra
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : juin 2004
    Messages : 108
    Points : 171
    Points
    171

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •