Page 1 sur 1

gestion d'un tableau en session

Posté : 25 oct. 2005, 15:07
par bernard
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....

Posté : 25 oct. 2005, 15:51
par pitt
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;

Posté : 25 oct. 2005, 16:01
par Bernard
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

Posté : 26 oct. 2005, 10:44
par pitt
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

Posté : 26 oct. 2005, 11:31
par Invité
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

Posté : 26 oct. 2005, 14:11
par pitt
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

Posté : 26 oct. 2005, 15:08
par Invité
Non toujours pas. Je craques. Le code me parait bon. Le tableau est bien en session. Mais il ne cumule pas les valeurs....

Posté : 26 oct. 2005, 15:32
par pitt
voila en fait tu as oublié une chose
<?session_start(); 
$tableau=$_SESSION['tableau']; 
foreach ($tableau as $v => $article) {
echo $article['ref'].'<br>'; }
?> 


Posté : 26 oct. 2005, 15:47
par Invité
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]

Posté : 26 oct. 2005, 15:50
par pitt
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"); 
?> 

Posté : 26 oct. 2005, 16:24
par Bernard
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>

Posté : 26 oct. 2005, 16:41
par zeus
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]

Posté : 26 oct. 2005, 22:23
par Invité
Milles excuses