Ajax et variables de sessions en temps réel [Résolu]

Messages postés
368
Date d'inscription
dimanche 24 juin 2001
Dernière intervention
7 décembre 2015
- - Dernière réponse : ICIoBRa
Messages postés
368
Date d'inscription
dimanche 24 juin 2001
Dernière intervention
7 décembre 2015
- 2 mars 2009 à 21:03
Salut à tous, je cherche à afficher sur une page, la valeur d'une variable de session en temps réel, sans recharger la page.
Voila un exemple, je voudrais que cela affiche 1, puis 2, puis 3 etc... à chaque clique :

<?php
session_start();
$page_name = basename( __FILE__ );
$_SESSION['s']=0;
?> <html>
<head>
<title>a</title>
<meta http-equiv ="Content-Type" content= "text/html; charset=iso-8859-1">
<script language="VBScript" type="text/javascript">
function httprequest()
{
 var xmlhttp =false;
 try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}
 catch (e){ 
  try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");  }
  catch (e) {xmlhttp = false ;}
 }
 if (!xmlhttp && typeof XMLHttpRequest! ='undefined') { xmlhttp = new XMLHttpRequest(); }
 return xmlhttp;
}
function exemple()
{
 var test = httprequest();
 test.open("GET","<?phpecho $page_name; ?>?var1= <?php echo$_SESSION['s']; ?>",true);
 test.onreadystatechange =function() {
  if (test.readyState = =4 )
  {
   if(test.status  == 200 ) {
   <?php
   if (isset($_GET['var1'])) {
   $_SESSION['s'] = intval($_GET['var1']);
         $_SESSION['s']++;
   }
         ?>
   }
  }
 }
 test.send(null);
document.getElementById('machin').innerHTML = '<?php if (isset($_SESSION['s'])) {echo $_SESSION['s']; }?>';
}
</script>
</head>




"machin">0

[javascript:; click]

</html>



Merci pour vos futures réponses, toutes les critiques intelligentes sont les bienvenues

ICIoBRa
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
3
Merci
Salut,

Oulà !! C'est un peu le bazard tout ça
Tout est mélangé et pas mal de chose ne me semble pas logiques, entres autres :
  Tu appelles la même page en get qui te renvoie donc la totalité du code alors qu'il ne te faudrait qu'un nombre.
  Tu ré exécutes à chaque fois $_SESSION['s']= 0;
  Tu mélanges php et javascript
  document.getElementById ( 'machin').innerHTML = '<?php if(isset($_SESSION['s']))  
{echo $_SESSION['s'];
= > ne fonctionnera jamais puisque qu'écrit une seule fois à l'appel de la page

... etc etc ...

Voilà comment je procéderai :
  - ton script actuel ("bidule.php") en virant tout le superflu
  - une autre page "tartanpion.php"

bidule.php
  les seules lignes php à conserver :
 
<?php
  session_start();
  $_SESSION['s']=0;
 ?>
 modifier le GET de la requête ajax pour qu'il pointe sur tartanpion.php
 
 document.getElementById('machin')...
  =>
 document.getElementById('machin').innerHTML = test.responseText;
   et le déplacer dans le bloc if (status == 200)

tartanpion.php :
session_start();
echo $_SESSION['s']++;

Voili voilou, en espèrant que ça puisse t'aider.

Cordialement,

Kohntark -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de kohntark
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
3
Merci
Hello,

ne pas oublier que PHP s'exécute AVANT javascript...TOUT le code php.
Donc une condition PHP dans le bloc d'une condition JS...déjà...
Je n'ai pas analysé ton code comme l'a fait Kohntark, ni sa réponse, mais je lui fais confiance.
En tous cas, avant de jouer avec des mélanges JS/PHP, il faut vraiment bien comprendre comment marche le web, et la différence entre un langage exécuté côté client, et un langage exécuté côté serveur, c'est vraiment la base.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de malalam
Messages postés
368
Date d'inscription
dimanche 24 juin 2001
Dernière intervention
7 décembre 2015
0
Merci
Salut a vous 2, et merci pour vos réponses, je comprend mieux comment fonctionne tout ça ! Je me suis trop inspiré de codes existants et en avait pas tout compris le code finalement, merci encore !

ICIoBRa
Commenter la réponse de ICIoBRa

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.