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 :

Utilisation des variables de session, incohérence


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut Utilisation des variables de session, incohérence
    Bonjour à tous !

    Je suis sur un projet de site pour mon BTS et j'ai besoin du PHP alors que je n'y connais presque rien.

    C'est un site marchand.

    Je ne me suis pas encore attelée à la page du panier mais j'ai une icône de panier dans mon menu et je voudrais y ajouter une variable qui s'incrémenterait à chaque clique sur le "ajouter au panier" d'un article.

    J'ai pensais à une variable de session. Ma session s'ouvre bien et persiste entre les page pas de soucis.

    Mon header se présente comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <header>
     
        <?php
     
            // Le formulaire de connexion a été soumis : chargement du bon menu
            if (isset($_SESSION['login'])&& isset($_SESSION["pswd"])){
     
                include "menuConnect.php";
            }
            else{
                include "menuNonConnect.php";
            }
    ?>
    Et voici un exemple d'article :

    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
     
    <article>
     
          <div class="cachee">
                <article class="zoom">
                       <a href = "catalogue1.php"> <img id="close" src="../images/close.png"></a>
                       <p><img width="370px" src="../images/1.png"></p>
                       <div class="zoomInfo">
                           <h1>************************</h1>
                           <p>********************************************************************************************************</p>
                      </div>
                </article>
          </div>
     
          <div class="cacheeSizoom">
     
               <div><img class="bouquet" width="200px" src="../images/1.png"></div>
               <div class="info">
                    <div><a href="#" id="loupe" class="loupe"><img width="30px" src="../images/loupe.png"></a></div>
     
                   <p>42,80€</p>
                   <div><a class='panier' href="catalogue1.php?var=<?php echo $var?>&action=incr"><img width='30px' src='../images/panier.png'"?></a></div>
     
               </div>
         </div>
     </article>
    Donc comme vous voyez j'ai tenté de récupérer le click sur mon panier avec un GET sur l'url.

    Du coup j'ai testé ceci dans mon script "menuConnect.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
    40
    41
    42
    43
    44
     
    <?php
     
    if(!isset($_GET['var'])){
        $var=0;
        $_SESSION["compteurPanier"]=0;
    }
    else{
        $var=$_GET['var'];
        $_SESSION["compteurPanier"]=$var;
     
    }
    if(isset($_GET['action'])){
        if($_GET['action'] == 'incr'){
            $_SESSION["compteurPanier"]++;
     
        }
    }
     
     
    ?>
    <div id="bandeau">
        <div>
            <img src="../../images/logo.png"/>
        </div>
        <div class="elmt">
            <nav class="navFlex">
                <ul id="menu1">
                    <li class="flexMenu"><span id="ajout" >Article ajouté ! </span><a name="panierTotal" id="panierTotal" href="panier.php">Panier <?php echo $_SESSION["compteurPanier"] ?> </a><img src="../images/panier.png" width= "35px"></li>
                    <li class="flexMenu"><a href="#"><?php echo $_SESSION["login"] ?></a><img src="../images/pictouser.png" width= "35px">
                        <ul>
                            <li><a href="#" id= "monCompte">Mon Compte</a></li>
                            <li><a href="#" id="infoPerso">Mes informations personnelles</a> </li>
                            <li><a href="#" id="mesCommandes">Mes commandes</a></li>
                            <li><a href="deco.php" id="deconnexion">Se déconnecter</a></li>
                        </ul>
                    </li>
                    <li class="flexMenu">
                        <a id="contact" href="contact.php">Contact</a><img src="../images/contact4.png" width= "35px">
                    </li>
                </ul>
            </nav>
        </div>
    </div>
    Le compteur marche tant que je suis sur ma page "catalogue" où sont mes articles. Mais dès que je change de page, le compteur repasse à 0.

    Ça fait une plomb que je suis là dessus, j'ai cherché sur internet et testé plusieurs solutions mais rien y fait...

    Une idée ?

  2. #2
    Invité
    Invité(e)

  3. #3
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    déjà il y a un problème de logique au début de "menuConnect.php" : si vous êtes sur une page qui n'est pas appelé avec l'argument "var", vous effacez la variable de session.
    ensuite, si vous avez plusieurs produits, ce qui se fait habituellement est de stocker en session les produits choisis. regardez le lien que jreaux62 vous a indiqué.

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    Ok merci je vais regarder ça.
    Je reviens vers vous si je m'en sors pas.

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    Salut !

    Bon du coup je reviens vers vous car j'ai deux petits soucis !

    1- Dans le tuto http://jcrozier.developpez.com/articles/web/panier/ que j'ai suivi pour créer mon panier, il y a une fonction pour compter les articles qui donne par exemple : Article A * 2 + Article B *1 + Article C * 3 = 3 articles différents.
    J'aimerais avoir une fonction qui me donnerais 6 articles au total (toujours pour mon histoire de compteur !)

    2- Mon deuxième problème c'est que lorsque j'ajoute un article au panier et que j'actualise la page, l'article en question est de nouveau ajouté au panier ! Comment puis-je éviter ça ?

    3- Et enfin, mon compteur et le prix total qui sont dans le menu de chaque page ne se met à jour que si j’actualise ou que je change de page et je ne comprends pas pourquoi !

    Je vous remets le code actuel concerné:

    herder.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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <header>
     
        <?php
     
            // Le formulaire de connexion a été soumis : chargement du bon menu
            if (isset($_SESSION['login'])&& isset($_SESSION["pswd"])){
     
                include "menuConnect.php";
            }
            else{
                include "menuNonConnect.php";
            }		
     
     
            // on crée un array contenant : URL / libellé des pages / id :
           $pages = [
                [
                    "url" => "index.php",
                    "libelle" => "Accueil",
     
                ],
                [
                    "url" => "catalogue1.php",
                    "libelle" => "Catalogue",
                ],
                [
                    "url" => "evenement.php",
                    "libelle" => "Évènements",
                ],
                [
                    "url" => "atelier.php",
                    "libelle" => "Ateliers Floraux",
                ],
                [
                    "url" => "abonnement.php",
                    "libelle" => "Abonnements",
                ],
     
            ];
     
            //On crée le menu :
        ?>
     
     
        <nav id="menu">
            <ul>
                <?php   foreach ($pages as $p) { ?>
                    <li
                    <?php if( strpos( $_SERVER['REQUEST_URI'], $p['url']) ){ echo ' class="active"'; } // on ajoute la classe "active" au menu en cours ?>>
                        <a href="<?php echo htmlspecialchars($p['url']);?>"><?php echo htmlspecialchars($p['libelle']);?></a>
                    </li>
                <?php   } ?>
            </ul>
        </nav>
     
    </header>
    menuConnect.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
    40
    41
    <?php 
    include_once("fonctionsPanier.php");
     
    ?>
    <div id="bandeau">
    	<div>
    		<img src="../../images/logo.png"/>
    	</div>
    	<div class="elmt">
    		<nav class="navFlex">
    			<ul id="menu1">
    				<li class="flexMenu"><span id="ajout" >Article ajouté ! </span><a name="panierTotal" id="panierTotal" href="panier.php">Panier 
    					<?php
    					if(creationPanier()){
    						if(compterArticles() < 2) {
    							echo compterArticles()." article"; echo '<p>Total '.montantGlobal()."€</p>"; 
    						}
    						else{
    							echo compterArticles()." articles"; echo "<p>Total ".montantGlobal()."€</p>"; 
    						}
    					}
    					?> 
     
    					</a><img src="../images/panier.png" width= "35px"></li>
     
    				<li class="flexMenu"><a href="#"><?php echo "Bonjour ".$_SESSION["login"] ?></a><img src="../images/pictouser.png" width= "35px">
     
    					<ul id="connecte">
    						<li><a href="#" id= "monCompte">Mon Compte</a></li>
    						<li><a href="#" id="infoPerso">Mes informations personnelles</a> </li>
    						<li><a href="#" id="mesCommandes">Mes commandes</a></li>
    						<li><a href="deco.php" id="deconnexion">Se déconnecter</a></li>
    					</ul>
    				</li>
    				<li class="flexMenu">
    					<a id="contact" href="contact.php">Contact</a><img src="../images/contact4.png" width= "35px">
    				</li>
    			</ul>	
    		</nav>
    	</div>
    </div>
    panier.php (quasiment identique au tuto pour le moment afin d'éviter les erreurs) :

    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 
    session_start();
    include_once("fonctionsPanier.php");
     
    echo '<?xml version="1.0" encoding="utf-8"?>';
     
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
     
    	<head>
     
    		<link rel="stylesheet" type="text/css" href="../css/styleHeader.css">
    		<link rel="stylesheet" type="text/css" href="../css/stylePanier.css">
     
    		<title>Votre panier</title>
     
    	</head>
     
    	<body>
     
     
    		<?php
    			include "phpConnexion.php";
    			include 'header.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
    		   $l = (isset($_POST['l'])? $_POST['l']:  (isset($_GET['l'])? $_GET['l']:null )) ;
    		   $p = (isset($_POST['p'])? $_POST['p']:  (isset($_GET['p'])? $_GET['p']:null )) ;
    		   $q = (isset($_POST['q'])? $_POST['q']:  (isset($_GET['q'])? $_GET['q']:null )) ;
     
    		   //Suppression des espaces verticaux
    		   $l = preg_replace('#\v#', '',$l);
    		   //On verifie que $p soit un float
    		   $p = floatval($p);
     
    		   //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($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;
    		   }
    		}
    		?>
     
    		<form id="formElmt" method="post" action="panier.php">
    		<table width="1000px">
    			<tr>
    				<td class="titre" height="80px" colspan="5">Votre panier</td>
    			</tr>
    			<tr height="80px">
    				<td class="nomColonnes" id="libelleTitre">Article</td>
    				<td class="nomColonnes">Quantité</td>
    				<td class="nomColonnes">Prix Unitaire</td>
    				<td class="nomColonnes">Action</td>
    			</tr>
     
     
    			<?php
    			if (creationPanier())
    			{
    				$nbArticles=count($_SESSION['panier']['libelleProduit']);
    				if ($nbArticles <= 0)
    					echo "<tr class='vide'><td>Votre panier est vide </ td></tr>";
    				else
    				{
    					for ($i=0 ;$i < $nbArticles ; $i++)
    					{
    						echo "<tr class='article'>";
     
    						echo "<td class='libelle'><img class='bouquet' width='50px' src='../images/1.png'><p>".htmlspecialchars($_SESSION['panier']['libelleProduit'][$i])."</p></ td>";
     
    						echo "<td><input type=\"text\" size=\"4\" name=\"q[]\" value=\"".htmlspecialchars($_SESSION['panier']['qteProduit'][$i])."\"/></td>";
     
    						echo "<td>".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])."€</td>";
     
    						echo "<td><a href=\"".htmlspecialchars("panier.php?action=suppression&l=".rawurlencode($_SESSION['panier']['libelleProduit'][$i]))."\">Suppr</a></td>";
    						echo "</tr>";
    					}
     
    					echo "<tr><td rowspan = '4' colspan=\"3\"> </td>";
    					echo "<td colspan=\"2\">";
    					echo "Total : ".MontantGlobal()."€";
    					echo "</td></tr>";
     
    					echo "<tr><td colspan=\"3\">";
    					echo "<input type=\"submit\" value=\"Rafraichir\"/>";
    					echo "<input type=\"hidden\" name=\"action\" value=\"refresh\"/>";
     
    					echo "</td></tr>";
    				}
    			}
    			?>
    		</table>
    		</form>
     
     
     
     
    	<script src="../js/menuDeroulant.js"></script>
    	</body>
     
    </html>
    fonctionsPanier.php (identique au tuto vu que je n'arrive pas à coder celle dont j'ai besoin en plus) :

    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
    <?php
     
    	function creationPanier(){
    	   if (!isset($_SESSION['panier'])){
    	      $_SESSION['panier']=array();
    	      $_SESSION['panier']['libelleProduit'] = array();
    	      $_SESSION['panier']['qteProduit'] = array();
    	      $_SESSION['panier']['prixProduit'] = array();
    	      $_SESSION['panier']['verrou'] = false;
    	   }
    	   return true;
    	}
     
     
    	function ajouterArticle($libelleProduit,$qteProduit,$prixProduit){
     
    	   //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']['libelleProduit'],$libelleProduit);
    	         array_push( $_SESSION['panier']['qteProduit'],$qteProduit);
    	         array_push( $_SESSION['panier']['prixProduit'],$prixProduit);
    	      }
    	   }
    	   else
    	   echo "Un problème est survenu veuillez contacter l'administrateur du site.";
    	}
     
     
    	function supprimerArticle($libelleProduit){
       //Si le panier existe
    	   if (creationPanier() && !isVerrouille())
    	   {
    	      //Nous allons passer par un panier temporaire
    	      $tmp=array();
    	      $tmp['libelleProduit'] = array();
    	      $tmp['qteProduit'] = array();
    	      $tmp['prixProduit'] = array();
    	      $tmp['verrou'] = $_SESSION['panier']['verrou'];
     
    	      for($i = 0; $i < count($_SESSION['panier']['libelleProduit']); $i++)
    	      {
    	         if ($_SESSION['panier']['libelleProduit'][$i] !== $libelleProduit)
    	         {
    	            array_push( $tmp['libelleProduit'],$_SESSION['panier']['libelleProduit'][$i]);
    	            array_push( $tmp['qteProduit'],$_SESSION['panier']['qteProduit'][$i]);
    	            array_push( $tmp['prixProduit'],$_SESSION['panier']['prixProduit'][$i]);
    	         }
     
    	      }
    	      //On remplace le panier en session par notre panier temporaire à jour
    	      $_SESSION['panier'] =  $tmp;
    	      //On efface notre panier temporaire
    	      unset($tmp);
    	   }
    	   else
    	   echo "Un problème est survenu veuillez contacter l'administrateur du site.";
    	}
     
    	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.";
    	}
     
    	function MontantGlobal(){
    	   $total=0;
    	   for($i = 0; $i < count($_SESSION['panier']['libelleProduit']); $i++)
    	   {
    	      $total += $_SESSION['panier']['qteProduit'][$i] * $_SESSION['panier']['prixProduit'][$i];
    	   }
    	   return $total;
    	}
     
     
     
     
    	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']);
    	}
     
    ?>
    et enfin je récupère les données de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a class='panier' href='panier.php?action=ajout&l=Esterelle et son vase offert&q=1&p=42.80'><img width='30px' src='../images/panier.png'?></a>
    Pouvez-vous me filer un petit coup de main ? Je n'ai plus beaucoup de temps pour finir et je me suis donnée des objectifs un peu élevés étant donnée que je ne connais pas le php !

    Merci d'avance pour vos réponses !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    A moins de croire à la magie, ça va être difficile de tout régler en 2 minutes...
    Et d'autre part, ce tuto date déjà un peu (certaines fonctions peuvent être améliorées, mais bon. Ce n'est pas/plus le moment...)

    1- (Article A * 2 + Article B *1 + Article C * 3) = 6
    OK. Il faut comptabiliser les quantités de chaque produit.
    Base-toi sur la fonction "Montant du panier" :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function MontantGlobal(){
       $total=0;
       // for($i = 0; $i < count($_SESSION['panier']['libelleProduit']); $i++) // cette ligne peut être remplacée par la suivante :
       foreach( $_SESSION['panier']['libelleProduit'] as $i => $libelleProduit )
       {
          $total += $_SESSION['panier']['qteProduit'][$i] * $_SESSION['panier']['prixProduit'][$i];
       }
       return $total;
    }

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function CompterProduits(){
       $total=0;
       foreach( $_SESSION['panier']['libelleProduit'] as $i => $libelleProduit )
       {
          $total += $_SESSION['panier']['qteProduit'][$i];
       }
       return $total;
    }

    2- "et que j'actualise la page"...
    Ben... Faut pas l'faire !

    En pratique, on peut rajouter un input hidden dans le formulaire, et le comparer à une variable de SESSION.
    C'est expliqué ici.

    3- "...Et enfin, mon compteur et le prix total qui sont dans le menu de chaque page..."
    Il faudrait savoir ! La page s'actualise ou pas à chaque modification du panier ??

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    2- "et que j'actualise la page"...
    Ben... Faut pas l'faire !
    Ben j'évite ^^ mais je me mets à la place de l'utilisateur qui actualise sa page pour x raison et qui se retrouve avec un article en double dans le panier


    En pratique, on peut rajouter un input hidden dans le formulaire, et le comparer à une variable de SESSION.
    C'est expliqué ici.
    Ok merci je vais regarder ça !

    3- "...Et enfin, mon compteur et le prix total qui sont dans le menu de chaque page..."
    Il faudrait savoir ! La page s'actualise ou pas à chaque modification du panier ??
    En fait, j'utilise mes variable à deux endroits : la page du panier et dans mon menu pour avoir un aperçu de la commande en cours (juste le nb d'articles et le prix total).
    Dans le panier mes articles s'ajoute aussitôt pas de soucis mis à part en cas d'actualisation.
    Mais dans mon menu qui se retrouve sur chaque page, le compteur ne se met à jour qu'en cas d'actualisation ou de changement de page. Pourtant, j'utilise la même variable pour le menu et ma page panier, alors je ne vois pas ce qui cloche...

  8. #8
    Invité
    Invité(e)
    Par défaut
    "Dans le panier mes articles s'ajoute aussitôt"
    2 possibilités :

    • Tu utilises Ajax (sans rechargement de page) ?

    • A moins que le traitement du panier se fasse APRES l'affichage du menu.
      Regarde dans quel ordre tu traites/affiches les données.

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    Euh si il y a quand même un chargement, quand j'ajoute un article au panier, il y a une redirection vers la page panier. Mais l'aperçu panier de mon menu (qui est dans le header donc affiché avant) ne suit pas.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Il faut faire le traitement avant l'affichage du menu.

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Points : 55
    Points
    55
    Par défaut
    Il faut faire le traitement avant l'affichage du menu.
    J'ai l'impression que c'est le cas pourtant, vu que je traite les donnée dans mon menuConnect.php et que celui ci est inclut(ou pas) dans le header et que le header est inclut dans chacune de mes page.
    Ou alors j'ai mal compris ce que tu veux dire ?

    Mes codes actuels sont dans un de mes derniers message. J'ai juste modifier compterArticle(), par compterproduitsTotal().
    Ta fonction marche nickel d'ailleurs merci beaucoup !

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    		<?php
    			include "phpConnexion.php";
    			include 'header.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')))
    ....
    Ton menu est dans header.php.
    Or, tu vois bien que tu inclus header.php AVANT le traitement du panier !

    -> Mets include 'header.php'; APRES le traitement du panier.

    En fait, mets TOUT le traitement du panier juste APRES include_once("fonctionsPanier.php"); !
    (tu peux même le mettre dans un fichier traiterPanier.php, à inclure !)

    N.B. Quant à phpConnexion.php, il suffit de le mettre une fois pour toutes en haut de script.
    Dernière modification par Invité ; 21/03/2018 à 15h00.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/11/2011, 20h36
  2. [MySQL] Variable de session pour une identification
    Par salty dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/10/2009, 15h57
  3. [Tableaux] Incrémentation d'une variable de session
    Par fab76000 dans le forum Langage
    Réponses: 6
    Dernier message: 17/01/2008, 10h20
  4. Réponses: 6
    Dernier message: 09/04/2007, 16h53
  5. Création d'une variable de session avec un ID
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 18/10/2004, 10h28

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