foreach non reconuu

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

25 août 2006, 10:35

Cool, il faut rester cool.

Un peu de logique résoud le problème :
1. en rappellant la session, un panier pourrait exister
2. si le panier n'existe pas : le déclarer vide
3. et dans les deux cas s'il y a demande d'ajout dans le panier : ajouter

Le code :
<?php
//Rappeller la session
session_start();  

//si aucun panier, le déclarer vide
if(!isset($_SESSION['panier'])) $_SESSION['panier']=array(); 

//si ajout demandé : ajouter dans le panier
$prix=$_GET['prix'];  
$ref=$_GET['ref'];  
if ($ref && $prix) {
   $_SESSION['panier'][]= array('ref' => '$ref','prix' => $prix,'qte'=>1);  
}

?>
Pour la question du foreach, la variable utilisé doit être un tableau :
Le code:
<?php

//Parcours du panier
if ( $_SESSION['panier'] && is_array($_SESSION['panier']) )
    foreach ( $_SESSION['panier'] as $index=>$contenu ) {
        //traitement
    }
?>
Modifié en dernier par sadeq le 25 août 2006, 10:40, modifié 1 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Mammouth du PHP | 1776 Messages

25 août 2006, 10:40

Certes j'étais peut être ennervé, mais tu peux aussi trouver toi même les réponses à tes erreurs...
Après une brève recherche sur google, http://www.developpez.net/forums/archiv ... 33867.html
Ce n'est pas que l'on ne veut pas aider, mais il faut aussi rechercher par toi même le pkoi du comment (cela s'appelle debugguer). :wink:

Invité
Invité n'ayant pas de compte PHPfrance

25 août 2006, 11:04

Je vais tester et reviens vous informer.

Merci de votre aide.

Invité
Invité n'ayant pas de compte PHPfrance

25 août 2006, 22:22

De retour !

Voici le code testé :
<?PHP session_start();

$designation=$_GET['designation'];
$ref=$_GET['ref'];


if(!isset($_SESSION['panier'])){$_SESSION['panier']=array();}

if($ref){
$_SESSION['panier'][]= array('ref' => $ref,'designation' => $designation);
}
?>
La première mise au panier se passe bien. Pour la suivante j'ai le message suivant :

Fatal error: [] operator not supported for strings in /home.2/laboi/www/panier_ajout.php on line 15

Mammouth du PHP | 1776 Messages

25 août 2006, 23:11

done nous le code entier stp en y mentionnant la ligne 15. A première vue, rien d'anormal dans ton code.

Change tout de même quelque chose:
<?php
session_start(); 

$designation=$_GET['designation']; 
$ref=$_GET['ref']; 

if(!is_array($_SESSION['panier'])
{
     $_SESSION['panier'] = array();
} 

if($ref)
{ 
     $_SESSION['panier'][] = array('ref' => $ref,'designation' => $designation); 
} 
?> 
En effet, il se peut que tu écrase dans un autre sctript ton tableau, ce qui fait que la variable existe, mais n'est plus un tableau, d'où le message...

Invité
Invité n'ayant pas de compte PHPfrance

26 août 2006, 11:01

J'ai trouvé !

Et c'est de ma faute bien sûr : une variable $panier trainait dans un bout de code d'essai et que j'avais oublié de retirer. Et donc cette variable (qui n'était pas une variable de session) interférait avec la variable de session panier.

Ouf...

Merci à tous de votre aide, tout a l'air de bien tourner !

Mammouth du PHP | 1776 Messages

26 août 2006, 12:22

[RESOLU] alors :wink: