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 :

mémoriser les articles d'un caddie dans une session


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Points : 190
    Points
    190
    Par défaut mémoriser les articles d'un caddie dans une session
    Bonsoir,
    j'ai un panier, avec des caractéristiques dans une variable de session de type tableau qui me renvoie une erreur sur internet mais fonctionne en local ?
    http://www.6tnline.com/index.php?page=produits&cat=1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <br /><?php
    if(isset($nomOption) && !empty($nomOption)):
         foreach ($_SESSION['proprieteOption'] as $cle => $varProprite):
              if($cle == $idclient) 
                   echo $nomOption.' : '.$varProprite;
         endforeach;
    endif;?>
    un test sur la variable semble bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var_dump($_SESSION['proprieteOption']);
    array(1) { [7]=>  string(4) "vert" } couleur : vert
    mais lorsque j'ai plusieurs valeurs sa me renvoie cette erreur, et sa se transforme en String ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string(0) ""
    Warning: Invalid argument supplied for foreach() in /home/web/6tnline.com/ftp/www/panier.php on line 68
    Apparament c'est quand j'ajoute plusieurs articles avec des caractéristiques que le bug survient mais pas en local
    Vous comprenez mon problème ?
    Merci

  2. #2
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Points : 190
    Points
    190
    Par défaut
    dans mon php.ini au niveau des sessions, la seule differente
    en local:
    session.save_path /var/lib/php5 /var/lib/php5
    en ligne:
    session.save_path /home/web/6tnline.com/sessions /var/lib/php5

  3. #3
    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
    Citation Envoyé par artotal Voir le message
    dans mon php.ini au niveau des sessions, la seule differente
    en local:
    session.save_path /var/lib/php5 /var/lib/php5
    en ligne:
    session.save_path /home/web/6tnline.com/sessions /var/lib/php5
    t'aurais pas aussi "error_reporting" et/ou "display_errors" qui n'auraient pas les memes valeurs ?

    Le message d'erreur que tu as signifie juste que $_SESSION['varName'] n'est pas un tableau
    Si tu arrives a créer la session sans message d'erreur, il me semble que récupérer les valeurs ne pose pas de problème

  4. #4
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Points : 190
    Points
    190
    Par défaut
    j'ai les mêùe valeur pour les deux phpinfo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    error_reporting	6135	6135
    display_errors	On	On
    au niveau de ma classe :
    dans mon constructeur je met les variables en type array()
    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
    public function __construct()
    	{
    		session_start();
    		// chargement du caddie
    		if (isset($_SESSION['caddie']))
    		{
    			$this->caddie = $_SESSION['caddie'];
    			$this->nomOption= $_SESSION['nomSession'];
    			$this->proprieteOption= $_SESSION['proprieteOption'];
    		}
    		else
    		{
    			$this->caddie=array();
    			$this->nomOption=array();
    			$this->proprieteOption=array();
    		}
    	}
    ensuite le traitement se fait ici :

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    	// ajoute un formulaire avec le nom et nombre d'article comme variable, grenade comme le fruit ;)
    	public function setFormulaireAjout($nombreGrenade, $grenade, $nomOption, $proprieteOption)
    	{
    		if (isset($_GET[$grenade]))
    		{
    			if(isset($_GET[$nombreGrenade]))
    			{
    				$this->caddie[$grenade]=0;
    				$this->caddie[$grenade]+=$_GET[$nombreGrenade];
    			}
    			else
    			{
    				$this->caddie[$grenade] +=$_GET[$nombreGrenade];
    			}
    			if (isset($_GET['nomOption']))
    			{
    				$this->nomOption[$grenade]=$_GET['nomOption'];
    				$this->proprieteOption[$grenade]=$_GET['proprieteOption'];
    				$_SESSION['nomOption']=$this->nomOption;
    				$_SESSION['proprieteOption']=$this->proprieteOption;
    			}
    			$_SESSION['caddie']=$this->caddie;
    		}?>
    		<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="get">
    			<div><input type="hidden" name="page" value="detailProduit" /></div>
    			<div><input type="hidden" name="idProduit" value="<?php echo $_GET['idProduit'];?>" /></div>
    			<div><input type="hidden" name="categorie" value="<?php echo $_SESSION['categorie'];?>" /></div>
    			<div style="">
    				<label>quantité</label>
          			<select name="<?php echo $nombreGrenade;?>">
          				<?php for($i=1; $i<=20; $i++)
          					echo '<option value="'.$i.'">'.$i.'</option>';?>
          			</select>
    			</div>
            	<?php 
            	if(isset($nomOption) && !empty($nomOption)):
            		$proprieteOption=explode(" ",$proprieteOption);?>
    	        	<div style="margin: -25px 0 0 132px; width: 200px;">
    	        		<div><input type="hidden" name="nomOption" value="<?php echo $nomOption;?>" /></div>
    	        		<label><?php echo $nomOption;?></label>
    	        		<select name="proprieteOption">
    	        		<?php foreach ($proprieteOption as $prop):
    	        			echo '<option value="'.$prop.'">'.$prop.'</option>';
    	        		endforeach;?>
    	        		</select>
    	        	</div><?php 
    	        endif;?>
    			<div><input type="hidden" name="<?php echo $grenade;?>" value="<?php echo $grenade;?>" /></div>
    			<div><input type="hidden" name="transfertUi" value="effet" /></div>
    			<div style="
    			<?php echo (!isset($nomOption) || empty($nomOption)) ? 'margin:-25px 0 0 130px;' :'margin:10px 0 0 0px; padding:0 10px;';?>">
    				<input type="submit" value="ajouter" />
    			</div>
    		</form><?php
    	}
    la variable caddir fonctionne parfaitement
    $_SESSION['caddie']=$this->caddie;

  5. #5
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Points : 190
    Points
    190
    Par défaut
    Puisque c'est au deuxième ajout que sa se tranforme en string.
    C'est ce code qui ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    			if (isset($_GET['nomOption']) && !empty($_GET['nomOption']))
    			{
    				$this->nomOption[$grenade]=$_GET['nomOption'];
    				$this->proprieteOption[$grenade]=$_GET['proprieteOption'];
    				$_SESSION['nomOption']=$this->nomOption;
    				$_SESSION['proprieteOption']=$this->proprieteOption;
    			}
    Pourtant assez clair ?

  6. #6
    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
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $proprieteOption=explode(" ",$proprieteOption);

    C'est moi où tu fais un explode() d'un array ?

    De plus, sous certaines conditions, $proprieteOption n'est pas initialisé

    essaye en écrivant

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    foreach( (array) $proprieteOption as $prop )

Discussions similaires

  1. Récupérer les valeur d'un énuméré dans une string
    Par Oliv_75 dans le forum SL & STL
    Réponses: 5
    Dernier message: 28/09/2005, 00h55
  2. Réponses: 10
    Dernier message: 19/09/2005, 22h24
  3. insérer les recordset d'un while dans une variable
    Par yoda_style dans le forum ASP
    Réponses: 4
    Dernier message: 31/03/2005, 10h01
  4. mettre les termes d'un string dans une struct
    Par grand's dans le forum SL & STL
    Réponses: 17
    Dernier message: 29/11/2004, 17h43
  5. [VBA-E]modifier les attributs d'un commentaire dans une cellule
    Par Olivier vb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/03/2004, 10h26

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