gestion d'un tableau en session

bernard
Invité n'ayant pas de compte PHPfrance

25 oct. 2005, 15:07

Je souhaite entrer des variables dans un tableau, puis en retirer en fonction de critères (un panier par exemple)

Création du tableau (on arrive ici avec une variable "ajouter" en mode GET)
$_SESSION[panier][] = array( 'article' => $_GET['article'],'prix' => $_GET['prix'])
Je voudrais maintenent retirer un article (on arrive ici avec une variable Retrait en mode GET):
 for ($i=0; $i < taille du tableau....; $i++)
    {
    if ($_SESSION['panier'][$i]['article'] == $_GET['article'] )
      {
      unset($_SESSION['panier'][$i]);
Mai ca marche pas....

Je suis pas sur du tout du code.

Merci si vous pouvez m'aider un peu....

Eléphant du PHP | 153 Messages

25 oct. 2005, 15:51

Pourquoi tu n'extrais pas ton panier de ta variable session
$panier=$_SESSION['Panier'];
Puis tu fais tes traitements sur $panier et apres tu redéclares ton nouveau panier en variable de session
$_SESSION['Panier']=$panier;

Bernard
Invité n'ayant pas de compte PHPfrance

25 oct. 2005, 16:01

Je pense que c'est l'idée. Il faut que je planche sur les tableaux associatifs (stockées ensuite en variable de session).


Faut il obligatoirement indicer ce tableau ?

Merci de ton aide

Eléphant du PHP | 153 Messages

26 oct. 2005, 10:44

qu'entends tu par indicer le tableau

à chaque fois que tu ajoutes un couple dans ton tableau avec panier[]=x
il passe à l'indice suivant.

Et au lieu de faire ta boucle avec i=0 à taille du tableau il existe une fonction foreach cela donnerait
foreach ($panier as $cle=>$indice){
if ($panier[$indice]['article']==$_GET['article'])
    {
        ....
     }
}

Et ca devrait fonctionner de cette façon

Invité
Invité n'ayant pas de compte PHPfrance

26 oct. 2005, 11:31

J'en suis là :

Fichier d'ajout d'un article :
<?session_start();
$refex=$_GET['refex'];
$_SESSION['tableau'][]= array( 'ref' => $refex);
header("Location:fiche_produit_pro.php?refex=$refex");
?>
-----------------------------------------
Fichier de lecture du panier :
<?session_start();
$tableau=$_SESSION['tableau'];
foreach ($tableau as $v)
echo $v['ref'].'<br>';
?>
-----------------------------------------------------------------
Le problème que je rencontre est que je ne peux ajouter q'un même article.

Je peux par exemple ajouter 15 fois l'article pommes. Mais si je veux ajouter des poires, j'ajoute les poires mais je supprime les pommes. en tous cas elles ne s'affichent plus...


Si vous avez une idée ..

Merci à tous

Eléphant du PHP | 153 Messages

26 oct. 2005, 14:11

essaie de faire ca
<?session_start(); 
$refex=$_GET['refex']; 
$tableau=$_SESSION['tableau'];
$tableau[]= array( 'ref' => $refex); 
$_SESSION['tableau']=$tableau;
header("Location:fiche_produit_pro.php?refex=$refex"); 
?> 
Et je pense que ca devrait aller

PS: essaie de placer ton code PHP entre les balises [ php ] et [ /php ] que tu peux obtenir en cliquant sur les boutons au dessus du message que tu écris.Ton message sera plus lisible. Merci

Invité
Invité n'ayant pas de compte PHPfrance

26 oct. 2005, 15:08

Non toujours pas. Je craques. Le code me parait bon. Le tableau est bien en session. Mais il ne cumule pas les valeurs....

Eléphant du PHP | 153 Messages

26 oct. 2005, 15:32

voila en fait tu as oublié une chose
<?session_start(); 
$tableau=$_SESSION['tableau']; 
foreach ($tableau as $v => $article) {
echo $article['ref'].'<br>'; }
?> 


Invité
Invité n'ayant pas de compte PHPfrance

26 oct. 2005, 15:47

Je galère bien.....


Voilà où j'en suis :


1. l'ajout d'articles
<?session_start();
$refex=$_GET['refex']; 
$_SESSION['tableau'][]= array( 'ref' => $refex); 
header("Location:fiche_produit_pro.php?refex=$refex"); 
?> 




2. lecture du panier
<?session_start();
$tableau=$_SESSION['tableau']; 
foreach ($tableau as $v => $article) 
echo $article['ref'].'<br>'; 
?> 
Mais je ne peux toujours commender q'une référence !!!


[/php]

Eléphant du PHP | 153 Messages

26 oct. 2005, 15:50

ca fait trois fois que je te dis d'essayer d'extraire ta variable de session pourquoi ne le fais tu pas???
<?session_start(); 
$refex=$_GET['refex']; 
$tableau=$_SESSION['tableau']; 
$tableau[]= array( 'ref' => $refex); 
$_SESSION['tableau']=$tableau; 
header("Location:fiche_produit_pro.php?refex=$refex"); 
?> 

Bernard
Invité n'ayant pas de compte PHPfrance

26 oct. 2005, 16:24

Je l'ai fait sans succès mais je vais recommencer.

On m'a communiqué un bout de code qui marche (j'ai remplacé les POST parGET) :
<?php

session_start();
if ( isset($_POST['element']) ) {
$_SESSION['arr'][] = array( 'ref' => $_POST['element'] );
}

echo "<hr>";
foreach( $_SESSION['arr'] as $v ) {
echo $v['ref']."<br>";
}
echo "<hr>";

?>
<form method="post" action="test_session.php">
<input type="text" name="element">
<input type="submit">
</form>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 oct. 2005, 16:41

Modération : Bernard, quand tu poste un code PHP, pense à utiliser les balises
 et [CODE] qui sont au dessus de la zone de saisie du texte.

C'est plus joli et plus facile à lire ;)
Pour cette fois, je l'ai fait pour toi[/color]
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

26 oct. 2005, 22:23

Milles excuses