ça n'incremente pas!!

ça n'incremente pas!! - PHP - Programmation

Marsh Posté le 09-06-2006 à 23:14:20    

Bonsoir!!
 
Voilà, j'ai ce code là! donc j'ouvre une session, je test pour savoir si elle contient déjà des données, auquel cas je charge ces données dans un tableau!!
puis j'incrémente une valeur de ce tableau avec la fonction: ajouterPizzas
 
Le problème est que lorsque je clique donc sur le lien pour recharger, ça n'incremente pas! lorsque la session n'existe pas, ça passe bien de 0 à 1, mais après ça n'augmente plus, ça reste à 1... je comprends pas vraiment!
 
Si quelqu'un voit qu'est-ce qui cloche?!
 
Merci!
 
 
<?php
$client = new Commande('test');
if (isset ($_SESSION[0])){
 for ($i=0; $i!=1; $id++){
  $client->listePizzas[$i]=$_SESSION[$i];
 }
}
else{
  $_SESSION=array(0,0);
 }
$nbr= 1;
$client->ajouterRoyale($nbr);
echo 'le nombre de pizza est:'.$client->listePizzas[0];  //pour verifier.
$client->afficherCommande();
for ($i=0; $i!=1; $i++){
 $_SESSION[$i]=$client->listePizzas[$i];
 }
 
 
et la fonction ajouterPizzas est comme ça:
 
    function ajouterRoyale($nombre) {
        $this->listePizzas[0] += $nombre;
}
 
 

Reply

Marsh Posté le 09-06-2006 à 23:14:20   

Reply

Marsh Posté le 10-06-2006 à 02:48:50    

il y a une petite faute sur la ligne :

for ($i=0; $i!=1; $id++){

Il faut incrémenter $i au lieu de $id.

Reply

Marsh Posté le 10-06-2006 à 12:14:25    

Effectivement, mais en fait, c'est parce que avant le nom de la variable était "id", et j'avais changer en "i" pour être sur que ça ne venait pas de là!! et ça ne fonctionnait pas!  
 
J'ai mit "i" là, et ça ne fonctionne toujours pas!
 
Donc hier soir j'ai continué à essayer de trouvé une solution, et il y en a une, au lieu d'assigner les valeurs du tableau de $_SESSION , avec des index numérotés, j'ai mit des index "alphanumériques" et j'ai utilisé des boucles foreach pour les parcourir.
 
Donc, est-il impossible d'assigner des valeurs à $_SESSION via cette méthode: $_SESSION[0]=1;  ??

Reply

Marsh Posté le 10-06-2006 à 13:26:54    

Le nom de la variable de session doit respecter les mêmes règles que les noms de variable. Donc le premier caractère ne doit pas être un chiffre, déjà.


Message édité par sielfried le 10-06-2006 à 13:27:08

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 10-06-2006 à 13:57:18    

Euh, la variable de session c'est bien $_SESSION non?

Reply

Marsh Posté le 10-06-2006 à 14:12:34    

$_SESSION c'est un tableau, ce que j'appelle nom de la variable de session, c'est ce que tu mets $_SESSION['là'];


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 10-06-2006 à 14:41:04    

mmmh, mais pour un tableau: cette fonction:
 
function ajouterRoyale($nombre) {  
        $this->listePizzas[0] += $nombre;  
 
fonctionne très bien! pourtant j'utilise bien l'index 0 pour assigner une valeur.
 
et je viens d'essaye ceci:
 
<?php
session_start();
?>
<html>
<body>
<?php
$_SESSION[0]=5;
echo $_SESSION[0];
?>
</body>
</html>
 
et ça m'affiche bien 5...
 
Donc je vois pas trop bien!

Reply

Marsh Posté le 10-06-2006 à 15:10:55    

for ($i=0; $i!=1; $i++){  
...
}
 
Combien de tours de boucle tu fais avec ça?   :heink:
Et dans le code de ton 1er message, tu fais bien un "session_start()" en début de fichier?

Message cité 1 fois
Message édité par remi-san le 10-06-2006 à 15:21:28
Reply

Marsh Posté le 10-06-2006 à 15:42:15    

listePizzas[0]++
?

Reply

Marsh Posté le 10-06-2006 à 15:45:52    

remi-san a écrit :

for ($i=0; $i!=1; $i++){  
...
}
 
Combien de tours de boucle tu fais avec ça?   :heink:
Et dans le code de ton 1er message, tu fais bien un "session_start()" en début de fichier?


 
 
Ben je fais au moins un tour, vu que la valeur qui change est dans le premier index, ça pose pas trop de problème...
Sinon, oui j'ai bien fait un session_start();

Reply

Marsh Posté le 10-06-2006 à 15:45:52   

Reply

Marsh Posté le 10-06-2006 à 15:51:38    

OhAime971 a écrit :

mmmh, mais pour un tableau: cette fonction:
 
function ajouterRoyale($nombre) {  
        $this->listePizzas[0] += $nombre;  
 
fonctionne très bien! pourtant j'utilise bien l'index 0 pour assigner une valeur.


 
J'ai bien dit "nom d'une variable de session" (ou d'une variable POST ou GET, d'ailleurs, c'est la même chose). [:spamafote]  
 

Citation :


et je viens d'essaye ceci:
 
<?php
session_start();
?>
<html>
<body>
<?php
$_SESSION[0]=5;
echo $_SESSION[0];
?>
</body>
</html>
 
et ça m'affiche bien 5...
 
Donc je vois pas trop bien!


 
Ca t'affiche 5 mais ça ne sauvegardera (a priori) pas la session, car le nom est invalide.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 10-06-2006 à 15:59:28    

Ah ok! donc pour que ça sauvegarde, il faut forcement que je sauvegarde en mettant du texte en index?!

Reply

Marsh Posté le 10-06-2006 à 16:04:59    

Citation :


Un nom de variable valide doit commencer par une lettre ou un souligné (_), suivi de lettres, chiffres ou soulignés.


 
(php.net)


Message édité par sielfried le 10-06-2006 à 16:05:18

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 10-06-2006 à 16:25:43    

mais ça c'est pour le nom de variable, pas pour l'index d'un tableau??

Reply

Marsh Posté le 10-06-2006 à 16:40:14    

Arf. [:pingouino]  
 
On résume :
- un nom de variable valide doit commencer par une lettre ou un souligné (_), suivi de lettres, chiffres ou soulignés ;
- $_SESSION (tout comme $_GET, $_POST et tous les tableaux globaux) est un tableau dont l'indice est un nom de variable.
 
Donc l'indice de $_SESSION doit commencer par une lettre ou un souligné (_), suivi de lettres, chiffres ou soulignés. :o  
 
Je peux pas faire plus clair.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 11-06-2006 à 12:50:18    

Ok! donc j'utilise les lettres!
 
Merci!!!
 
a+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed