[résolu]Incrémentation variable à chaque rechargement de la page

Incrémentation variable à chaque rechargement de la page [résolu] - PHP - Programmation

Marsh Posté le 03-04-2008 à 16:29:51    

Bonjour,
j'aurais besoin de savoir comment fait-on pour incrémenter une variable à chaque fois que ma page index.php est rechargée (avec le bouton F5 par exemple).
 
J'ai crée une fonction avec à l'intérieur une variable en "static" comme dans cet exemple :
 

Code :
  1. function test()
  2. {   
  3. static $a = 0;     
  4. $a++;
  5. }


 
Si on appele la fonction test() plusieurs fois dans la même page à la suite, ça s'incrémente normalement.
 
Mais ce que je voudrais ici, c'est qu'elle s'incrémente uniquement à chaque fois qu'on appele la page, ce qui n'est pas le cas ici.
Quelqu'un saurait-il comment faire ?  :)


Message édité par tostiere le 04-04-2008 à 09:46:02
Reply

Marsh Posté le 03-04-2008 à 16:29:51   

Reply

Marsh Posté le 03-04-2008 à 16:35:44    

et si tu fais un :

Code :
  1. function test()
  2. {
  3. b = 0;
  4. if (b == 0) { static $a = 0; $a++; b = 1; }
  5. }


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 03-04-2008 à 16:55:53    

tostiere> [:prozac] ...
Quel est à ton avis la durée de vie de ta variable $a ???
Que vaudra-t-elle la prochaine fois que ta page index sera appelé?

 
babasss a écrit :

Code :
  1. function test()
  2. {
  3. b = 0;
  4. if (b == 0) { static $a = 0; $a++; b = 1; }
  5. }


[:prozac] c'est juste n'importe quoi ce que tu as écrit...
En dehors de pas faire ce qu'il demande (enfin ce que j'ai compris de sa demande) et des erreurs de syntaxe, ton code  revient à:

Code :
  1. function test(){ static $a = 1; }

Message cité 1 fois
Message édité par anapajari le 03-04-2008 à 16:58:37

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 03-04-2008 à 16:57:16    

Je viens d'essayer mais malheureusement ça ne marche pas plus :(
Merci pour ton aide en tout cas.
 
D'ailleurs tu m'as donné une idée et j'ai essayé ça :
 

Code :
  1. function test()
  2. {
  3.  static $a = 0;
  4.  if ($a == 0)
  5.   $a++;
  6.  echo $a;
  7. }


 
Mais ça ne marche pas non plus.
 
D'autres idées ? :)

Reply

Marsh Posté le 03-04-2008 à 17:00:45    

anapajari > normalement vu que la variable $a est statique, sa durée de vie devrait être égale à la durée de vie de l'instance non ?
 
Bien-sûr à chaque rechargement de la page on détruit l'ancienne instance et on crée une nouvelle, ce qui me ramène au topic initial... et donc mis à part passer par un fichier ou la base de données, y a t-il une solution ?
 
:)

Reply

Marsh Posté le 03-04-2008 à 17:01:23    

anapajari a écrit :

[:prozac] c'est juste n'importe quoi ce que tu as écrit...
En dehors de pas faire ce qu'il demande (enfin ce que j'ai compris de sa demande) et des erreurs de syntaxe, ton code  revient à:

Code :
  1. function test(){ static $a = 1; }



Je dis pas le contraire, je ne connaissais pas "static" mais je partais du principe que son code marchait lors d'un rafraichissement de la page.... la question qu'il posait le laisser entendre....
 [:nicoozz]  


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 03-04-2008 à 17:40:48    

tostiere a écrit :

Bien-sûr à chaque rechargement de la page on détruit l'ancienne instance et on crée une nouvelle, ce qui me ramène au topic initial... et donc mis à part passer par un fichier ou la base de données, y a t-il une solution ?
:)


non mais ça a l'air vachement moins con quand tu poses la question comme ça...


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 03-04-2008 à 21:59:51    

Lol... ok merci quand même, je vais regarder s'il y a moyen de faire ça avec une session comme dernier recours et je vous tiens au courant si y en a que ça intéresse...

Reply

Marsh Posté le 03-04-2008 à 22:47:26    

tostiere a écrit :

Lol... ok merci quand même, je vais regarder s'il y a moyen de faire ça avec une session comme dernier recours et je vous tiens au courant si y en a que ça intéresse...


c'est faisable avec des trucs un peu sioux genre l'extension APC, sinon...mais bon si l'extension est pas installée je suis pas sur que c'est la solution la plus simple!:D
http://fr.php.net/manual/fr/function.apc-store.php


Message édité par skeye le 03-04-2008 à 22:47:48

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 04-04-2008 à 09:45:13    

merci skeye je vais également regarder de ton côté :)
 
Sinon j'ai résolu mon problème avec une variable de session :
 
A la page d'accueil je mets
$_SESSION['incrementation'] = 0;
 
Puis ensuite à la page qui m'intéresse :
$_SESSION['incrementation'] = $_SESSION['incrementation'] + 1;
 
Je ne sais pas quelle est la pertinence de cette solution mais cela fonctionne :)

Reply

Marsh Posté le 04-04-2008 à 09:45:13   

Reply

Marsh Posté le 04-04-2008 à 09:49:04    

tostiere a écrit :

merci skeye je vais également regarder de ton côté :)
 
Sinon j'ai résolu mon problème avec une variable de session :
 
A la page d'accueil je mets
$_SESSION['incrementation'] = 0;
 
Puis ensuite à la page qui m'intéresse :
$_SESSION['incrementation'] = $_SESSION['incrementation'] + 1;
 
Je ne sais pas quelle est la pertinence de cette solution mais cela fonctionne :)


 
 
Cette solution fonctionne pour un utilisateur unique.
Il faut voir si tu veux une variable commune à tous tes utilisateurs ou pas.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 04-04-2008 à 11:19:07    

Salut,
non non je n'avais pas precisé mais je n'ai besoin de cette variable que pour un seul utilisateur.
 
En fait le problème de départ est tout bête, il faut pouvoir trier une colonne avec des informations, en cliquant sur son titre. Un clic ordre ascendant, un deuxième clic ordre descendant.
 
Avec une variable d'incrémentation (la variable de session donc), il m'a suffi de faire un modulo pour voir si c'est un nombre pair ou impair, et après le tour est joué.
 
Il doit sûrement y avoir de meilleurs solutions, dans ce cas... prière de me les indiquer :)

Reply

Marsh Posté le 04-04-2008 à 11:20:53    

Oui, il y a plus facile.:D
Tu passes le sens de tri via une variable GET.:D


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 04-04-2008 à 13:57:40    

Ah ? J'aimerais bien que tu m'expliques comment tu ferais dans ce cas-là :)
 
J'ai beau refléchir à ce que tu dis, mais le problème reste exactement le même que celui du départ :/

Reply

Marsh Posté le 04-04-2008 à 14:09:20    

tu as ton titre avec une url et des variables en paramètre (supposition!!!) du style :
<a href=mapage.php?var1=value1&val2=value2>Titre</a>

 

tu rajoutes un paramètre tri que tu gères comme ca :

Code :
  1. if(@$_GET['tri'] == 'asc') {$tri = 'dsc'; } else { $tri = 'asc'; }
  2. echo "<a href=mapage.php?var1=value1&val2=value2&tri=$tri>Titre</a>";



Message édité par babasss le 04-04-2008 à 14:09:32

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 04-04-2008 à 14:51:42    

Merci babass pour ton attention, cependant il y a quelque chose que je ne comprends pas dans ton exemple : comment tu fais pour savoir si tu dois transmettre une variable tri ou pas ?
 
Dans le code ci-dessus j'ai l'impression que la condition (@$_GET['tri'] == 'asc') va être toujours verifiée. Il faut bien une autre condition pour savoir quand il faut transmettre et quand il ne faut pas.
 
Merci de m'eclaircir :)
 
EDIT  : ha ben non j'ai rien dit j'avais mal lu la deuxième ligne, je vais essayer pour voir si ça fonctionne :)
 
EDIT2 : effectivement ça marche bien, je vais donc essayer de me décider sur quelle methode choisir.
 
Merci encore :)


Message édité par tostiere le 04-04-2008 à 14:59:16
Reply

Sujets relatifs:

Leave a Replay

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