foreach non reconuu

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : foreach non reconuu

par DocType » 26 août 2006, 12:22

[RESOLU] alors :wink:

par Invité » 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 !

par DocType » 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...

par Invité » 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

par Invité » 25 août 2006, 11:04

Je vais tester et reviens vous informer.

Merci de votre aide.

par DocType » 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:

par sadeq » 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
    }
?>

par Invité » 25 août 2006, 10:13

Nous sommes je crois dans la rubrique des "débutants" et c'est pourquoi je suis surpris par ton jugement plutôt sévère!

Mais c'est pas grave. Je vais chercher et sans doute trouver. Merci de votre aide.

par DocType » 25 août 2006, 07:58

Te rend-tu compte de l'absurdité de ton code ?
"si tu vas au restaurant ou que tu reste chez toi, tu vas payer l'addition" est à peu près le style de ton code. Faut réflechir avant de coder, pas se lancer dessus avec l'espoir que ça va fonctionner ou que l'on va lui fournir tout fait !
ton schema a faire:
on lance les sessions
on met en session les variabes issues des $_GET
on teste la variable panier dans les session
si la variable n'est pas créée
on définit la variable panier dans les sessions = tableau vide
on définit un tableau vide pour le tableau de la variable panier dans les sessions
on met à jour les données du panier dans les sessions

par Invité » 25 août 2006, 01:19

Je l'ai ajouté et ca passe. Mais la panier peut exister, auquel cas il ne fut pas l'initialiser :


<? session_start(); 

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


if(!isset($_session['panier'])){

$_SESSION['panier']=array();

$_SESSION['panier'][]= array('ref' => $ref,'prix' => $prix,'qte'=>'1'); 
}

if(isset($_SESSION['panier'])){

$_SESSION['panier'][]= array('ref' => $ref,'prix' => $prix,'qte'=>'1'); 
}

?> 
Et c'est alors dans le second cas (le panier existe déjà) qu'une erreur est renvoyée

par DocType » 25 août 2006, 00:50

et le $_SESSION['panier'] = array();
à la trappe ?

par Invité » 25 août 2006, 00:40

Pour ne pas compliquer et prendre trop de votre temps j'ai simplifié :

J'amène à mon fichier d'ajout au panier 2 variables en GET :

Code : Tout sélectionner

<? session_start(); $prix=$_GET['prix']; $ref=$_GET['ref']; $_SESSION['panier'][]= array('ref' => $ref,'prix' => $prix,'qte'=>'1'); ?>
Et j'ai l'erreur :
Fatal error: [] operator not supported for strings in /www/panier_ajout.php on line 10





[/code]

par DocType » 24 août 2006, 23:55

Que veux-tu faire apparaître ?
Que contiennent les variables ?
Expliques nous le but et nous verrons les bugs. Fournis uassi le reste de ton code stp ou un bref descriptif de l'ajout au panier au traitement actuel :wink:

par Invité » 24 août 2006, 23:47

Pour répondre à Truc :

Oui j'ai bien un session start. J'initie la varible de session comme ceci :
if(!isset($_SESSION['panier'])){$_SESSION['panier']=array();}
Merci

par Truc » 24 août 2006, 23:47

places le tout dans un autre tableau (par exemple):
$reference[] = $v['reference'];  
Mais ça ne change rien si la variable de session n'est pas un Tableau !