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 :

[Tableaux] Modifier une variable dans un tableau de sessions


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut [Tableaux] Modifier une variable dans un tableau de sessions
    Bonjour,
    Je dois faire un site de vente en ligne avec une base de données, le problème est que ne trouve pas la solution our que quan on clique 2 fois sur le meme produit il y a juste une modification de la quantite du produit et pas de l'avoir 2 fois dans le panier.
    J ai essayé de nombreux codes mais ca devient une usine à gaz!!
    Si quelqu'un pourrait me donner des pistes ???
    Merci de m aider !!

    Voici le code sans la gestion de la quantite!!
    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
    <? $code=$_GET['code'];    
     
     
    if (isset($_SESSION['client'])) //verifie si un client est identifié
      { 
      if (isset($_GET['code']))  //vérifie si un code est présent
      {
     
    $qteart= $_POST['f_qte'];
    $code = $_GET['code'];
    $_SESSION['panier'][]=array("code"=>$code, "qte"=>$qteart); 
     
      }
     
    //print_r($_SESSION);
    echo "Votre article a été ajouté à votre panier";
    ?> <a href="/pages/php/panier/panier.php">Voir votre panier</a>
    <?
     }
     
      else 
      { echo "Vous ne pouvez pas commander car vos n'êtes pas identifié "; 
      ?>
      <br/>
    			<p>Vous êtes déja client : <a href="/pages/php/connection/frmconnec.php" > Connectez vous à votre compte</a><br />
    Nouveau client :<a href="/pages/connection/frmajoutclient.php">Créez un compte</a></p>
     
      <?
      }?>

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    le plus simple est de lire ton array() Panier, et de vérifier si l'item s'y trouve déjà...

    si c'est le cas, $qte++ ;-)

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    j avais deja essaye mais ca ne marche pas enfin je pense que ca vient de mon code !! J ai essaye ca :

    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
    if (isset($_SESSION['client']))
      { 
    	if (isset($_GET['code']))
    		{
    		if(is_array($_SESSION['panier']))
    		{
    				//print_r($_SESSION);
    					foreach ($_SESSION['panier'] as $p)
    						{
    						if ($_GET['code']==$p['code'])
    								{
     
    								$quantite=$p['qte']+$_POST['f_qte'];
    								$_SESSION['panier'][]['code']=("qte"=>$quantite);
    								}
    						else 
    								{
    								$qteart= $_POST['f_qte'];
    								$code = $_GET['code'];
    								$_SESSION['panier'][]=array("code"=>$code, "qte"=>$qteart);
    								//print_r($_SESSION);
    								echo "Votre article a été ajouté à votre panier";
    								?> <a href="/pages/php/panier/panier.php">Voir votre panier</a><?					
    								}	
    						}
    			}
    			else
    			{
    					$qteart= $_POST['f_qte'];
    					$code = $_GET['code'];
    					$_SESSION['panier'][]=array("code"=>$code, "qte"=>$qteart);
    					//print_r($_SESSION);
    					echo "Votre article a été ajouté à votre panier";
    					?> <a href="/pages/php/panier/panier.php">Voir votre panier</a><?
    			}
    			}
    }	
    else 
     { 																																echo "Vous ne pouvez pas commander car vos n'êtes pas identifié "; ?>
      <br/>
    	<p>Vous êtes déja client : <a href="/pages/php/connection/frmconnec.php" > Connectez vous à votre compte</a><br />
    Nouveau client :<a href="/pages/connection/frmajoutclient.php">Créez un compte</a></p> <?
    }?>

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Ben j ai trouve une solution mais maintenant le problème est que les quantité s'ajoute mais en créant une nouvelle ligne donc cela fait que j ai 2 fois mon article voici le code :

    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
    $existe=0;
     
    if (isset($_SESSION['client']))
      { 
    	if (isset($_GET['code']))
    		{
    		if (isset($_SESSION['panier']))
    			{
    				print_r($_SESSION);
    					foreach ($_SESSION['panier'] as $p)
    						{
    						if ($_GET['code']==$p['code'] && is_array($_SESSION['panier']))
    								{
    								$existe=1;
     
    								$e_code=$p['code'];
    								$e_qte=$p['qte'];
    								}
    						}
    			}
     
    			if ($existe==1)
    					{$quantite=$e_qte+$_POST['f_qte'];
    					$_SESSION['panier'][]=array("code"=>$e_code, "qte"=>$quantite);	
    						echo "Votre article a déjà été commandé, la quantite est ajouté";
    						?> <a href="/pages/php/panier/panier.php">Voir votre panier</a><?
    						}
    			else
    			{
    					$qteart= $_POST['f_qte'];
    					$code = $_GET['code'];
    					$_SESSION['panier'][]=array("code"=>$code, "qte"=>$qteart);
    					//print_r($_SESSION);
    					echo "Votre article a été ajouté à votre panier";
    					?> <a href="/pages/php/panier/panier.php">Voir votre panier</a><?
    			}
    			}
    }	
    else 
     { 																																echo "Vous ne pouvez pas commander car vos n'êtes pas identifié "; ?>
      <br/>
    	<p>Vous êtes déja client : <a href="/pages/php/connection/frmconnec.php" > Connectez vous à votre compte</a><br />
    Nouveau client :<a href="/pages/connection/frmajoutclient.php">Créez un compte</a></p> <?
    }?>
    Comment peut on faire pour supprimer une ligne de mon tableau de session

    merci de m aider

  5. #5
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    Pour supprimer un élément d'un tableau, il faut connaître l'index de cet élément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    unset($monTableau[10]);
    unset($monTableau['panier'][20]); // Pour un tableau multi-dimensionel
    Sinon ton erreur de doublon provient de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['panier'][]['code']=("qte"=>$quantite);
    Ca va te créer un nouvel élément à chaque fois : []

    Voici une possible correction que je ne peux tester :
    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
    // Vu que c'est un tableau constitués de tableaux ($p)
    foreach ($_SESSION['panier'] as $index => $p) {
        if ($_GET['code']==$p['code']) {
            $quantite=$p['qte']+$_POST['f_qte'];
            $_SESSION['panier'][$index]['qte'] = $quantite;
        }
        else {
    	$qteart = $_POST['f_qte'];
            $code = $_GET['code'];
     
            $_SESSION['panier'][] = array("code"=>$code, "qte"=>$qteart);
    	echo "Votre article a été ajouté à votre panier";
            ?> <a href="/pages/php/panier/panier.php">Voir votre panier</a><?	
        }
    }

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut solution
    c est bon j ai trouvé
    merci à celui qui m a aidé

    voici le code s'il peut servir à quelqu'un

    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
    $existe=0;
    $i=0;
    if (isset($_SESSION['client']))  //verifie si un client est identifié
      { 
    	if (isset($_GET['code']))  //verifie si un code est present
    		{
    		if (isset($_SESSION['panier']))  //verifie s'il y a un panier
    			{
    				//print_r($_SESSION);
    					foreach ($_SESSION['panier'] as $p) //parcours le tableau de sessions
    						{
    						if ($_GET['code']==$p['code']) 
    								{
    								$existe=1;
    								$num=$i;  //recuperation de l'indice du tableau de session
    								$e_code=$p['code'];
    								$e_qte=$p['qte'];
    								}
    								$i++;
    						}
    			}
     
    			if ($existe==1) 
    					{
    					$quantite=$e_qte+$_POST['f_qte'];
    					$_SESSION['panier'][$num]=array("code"=>$e_code, "qte"=>$quantite);	 //modifie la quantite de la session existante
    						echo "Votre article a déjà été commandé, la quantite est ajouté";
    						?> <a href="/pages/php/panier/panier.php">Voir votre panier</a><?
    						}
    			else
    			{
    					$qteart= $_POST['f_qte'];
    					$code = $_GET['code'];
    					$_SESSION['panier'][]=array("code"=>$code, "qte"=>$qteart);  //ajoute dans le tableau de session
    					//print_r($_SESSION);
    					echo "Votre article a été ajouté à votre panier";
    					?> <a href="/pages/php/panier/panier.php">Voir votre panier</a><?
    			}
    			}
    }	
    else 
     { 																																echo "Vous ne pouvez pas commander car vos n'êtes pas identifié "; ?>
      <br/>
    	<p>Vous êtes déja client : <a href="/pages/php/connection/frmconnec.php" > Connectez vous à votre compte</a><br />
    Nouveau client :<a href="/pages/connection/frmajoutclient.php">Créez un compte</a></p> <?
    }?>

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/02/2008, 21h45
  2. Réponses: 3
    Dernier message: 22/03/2007, 13h09
  3. [Tableaux] Effacer une ligne dans un tableau
    Par gpsevasion dans le forum Langage
    Réponses: 8
    Dernier message: 22/01/2007, 16h38
  4. [Tableaux] Modifier une variable passée en get
    Par akito dans le forum Langage
    Réponses: 10
    Dernier message: 20/08/2006, 18h58
  5. modifier une variable dans un fichier
    Par Guismay dans le forum Langage
    Réponses: 7
    Dernier message: 11/09/2005, 19h46

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