Ma variable de $_Session ne marche pas

Fermé
Bonjour,

je suis débutant en PHP et j'ai un gros problème.
Voila, j'ai un gros projet à réaliser donc je préfère le diviser en plein de petites parties pour être sur que les parties ne se gène pas l'une l'autre.

Je suis arrivé à la partie où je dois créer une variable de session appelé $_session['page'] qu'on peut manipuler avec trois boutons :
-Un premier qui va incrémenter la variable $_session['page']
-Un deuxième qui va décrémenter la variable $_session['page']
-Et un dernier composé d'une alerte pour savoir à tout moment la page à la quel la personne se trouve(celui la je compte pas le garder c'est juste pour les test)

voila donc la bête noir :


<?php
session_start();
?>

<html>
<body>

<?php

if (!isset($_SESSION['page']))
{
$_SESSION['page'] = 100;
}

?>

<input type='button' value='page' id="Btn33" onclick="<?php echo "alert('".$_SESSION['page']."')" ?>"/>
<input type='button' value='-' id="Btn22" onclick="<?php $_SESSION['page'] = $_SESSION['page']-1 ?>"/>
<input type='button' value='+'id="Btn27" onclick="<?php $_SESSION['page'] = $_SESSION['page']+1 ?>"/>
</body>
</html>

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour

    Ton code ne modifie en rien $_SESSION['page'] car cette variable se trouve dans le serveur et tes "onclick" n'agissent que localement, chez le client. Regarde le code source généré par ta page, celui que tu vois avec Ctrl-U : il n'y a aucun $_SESSION['page'] dedans.

    Si tu veux vraiment modifier cette variable, il faut que le serveur soit invoqué d'une manière ou d'une autre quand tu cliques sur tes boutons, en utilisant la méthode Window.location et en faisant ton incrémentation en PHP. Tu peux aussi le faire en Ajax.

    Si tu veux simplement incrémenter un nombre, utilise une variable Javascript et le PHP n'a plus rien à faire là-dedans.
    1. Merci beaucoup a tout les deux et merci pour ces explications super précises je m'y met tout de suite.
  2. Salut,

    Tu n'oublierais pas quelques points-virgules avec echo, par hasard ?
    1. Salut et merci de ton aide,

      C'est vrai que mon code manquait de point virgule dans les balises PHP, je les ai rajoutés ais ca ne marche toujours pas malheureusement
      Quand je clique sur le bouton "echo" tout se passe bien et on me renvoi l'alerte mais quand je clique sur le bouton d'incrémentation ou de décrémentation rien ne se passe et la variable $_session['page'] n'est pas modifiée... :/
    2. Non toujours rien, ça ne marche pas c'est toujours pareil écho fonctionne mais pas l'incrémentation ou la décrémentation.

      (voilà le nouveau code, j'ai peut-être commis une erreur )

      <?php
       session_start();
      ?>
      
      <html>
      <body>
      
      <?php
      
      if (!isset($GLOBALS['page']))
      {
       $GLOBALS['page'] = 100;
      }
      
      ?>
      
      <input type='button' value='page' id="Btn33" onclick="<?php echo "alert('".$GLOBALS['page']."')"; ?>"/>
      <input type='button' value='-'  id="Btn22" onclick="<?php --$_SESSION['page'] ; ?>"/>
      <input type='button' value='+'id="Btn27" onclick="<?php  ++$_SESSION['page'] ; ?>"/>
      </body>
      </html>
      
      1. Ah oui, excuse-moi.

        Regardes la source de ta page sur ton navigateur et tu vas comprendre le soucis ;)
    3. Euh... je suis pas sure de comprendre désolé ^^'

      Je faisais des recherches en même temps et j'avais essayé la modification des $_sessions $globals c'est de ca que tu me parlais ?

      voila mon VRAI code mais le problème reste exactement le même malheureusement


      <?php
      session_start();
      ?>

      <html>
      <body>

      <?php

      if (!isset($_SESSION['page']))
      {
      $_SESSION['page'] = 100;
      }

      ?>

      <input type='button' value='page' id="Btn33" onclick="<?php echo "alert('".$_SESSION['page']."')"; ?>"/>
      <input type='button' value='-' id="Btn22" onclick="<?php --$_SESSION['page'] ; ?>"/>
      <input type='button' value='+'id="Btn27" onclick="<?php ++$_SESSION['page'] ; ?>"/>
      </body>
      </html>
      1. Quand tu visionnes ta page sur le navigateur internet (Firefox, Explorer, Chrome, etc).
        Tu fais clique-droit -> Code source de la page.

        Tu verras que le code PHP disparaît, c'est à dire qu'il a été interprété avant que le navigateur ne l'affiche. Et donc, dans le onclick, au lieu d'incrémenter, il ne se passera rien car c'est vide. Il faut lui mettre un lien vers une autre page PHP qui sera chargée d'incrémenter/décrémenter la variable.

        Si tu as du mal à comprendre ça, arrêtes tout de suite et ré-étudies le PHP et le Javascript.
    4. Non non t'inquiète pas, je comprend ce que tu dis ^^
      je ne comprend pas POURQUOI ça me fait ça en revanche mais bon je connais le problème maintenant au moins ^^
      merci beaucoup à toi