Variable PHP dans code Javascript

Fermé
Heryu Messages postés 567 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 28 juin 2016 - Modifié par Heryu le 12/10/2011 à 17:34
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 17 oct. 2011 à 09:58
Bonsoir,

J'ai un petit problème avec mon code javascript. En effet, par exemple, j'ai crée une variable PHP dans une fonction Javascript dans <head>, et plus bas, dans le <body>, j'ai fait un echo en php de cette variable.

La logique voudrait donc que la variable ne s'affiche pas dans l'echo sachant que je n'appelle pas la fonction javascript, et pourtant, elle s'affiche quand même...

Pour imager :

<head> 

 <script type="text/css"> 
  function test() { 
   <?php 
    $test_php="ok" 
   ?> 
  } 
 </script> 

</head> 


<body> 

 <?php 
  echo $test_php;  
 ?> 
  
</body>


Je prends cette exemple car, dans mon cas réel, j'aimerait activer une session PHP avec une fonction javascript, et du coup, la session se lance automatiquement dès le chargement de la page...

Quelqu'un aurait une idée ?


Merci d'avance ^^

A voir également:

5 réponses

Bonjour

Si, c'est parfaitement logique que la valeur de ta variable s'affiche avant l'appel à ta fonction test.
Car cette variable est évaluée dans le serveur, au moment ou ta page est envoyée, et pas du tout au moment où tu appelles ta fonction.
Ne jamais oublier : le php s'exécute dans le serveur, le serveur chez le client. Quand le javascript s'exécute, le php n'existe plus.
Si tu veux appeler du php à partir du javascript, car c'est possible, il faut utiliser ajax. La façon la plus simple de l'aborder est sans doute d'utiliser jquery. Tu trouveras un tas d'articles là-dessus sur le web
1
Heryu Messages postés 567 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 28 juin 2016 62
Modifié par Heryu le 12/10/2011 à 18:25
Merci de ta réponse !

J'utilise justement Jquery, le vrai code que j'utilise actuellement est le suivant :

function session_connect() { 
   
  var badpwd = 0; 
  $("#login").val(''); 
  $("#password").val(''); 
  $("#span_error").remove(); 
   
  $("#dialog").dialog( 
   { 
    height:210, 
    width:300, 
    modal:true, 
    resizable:false, 
    draggable:false, 
    buttons: {"Connexion":  
     function() { 
      if ($("#login").val()=='Ryudo' && $("#password").val()=='Cvm66b') { 
       
       <?php  
        $_SESSION["connection"]="ok"; 
       ?> 
        
       $(this).dialog("close"); 
       window.location.reload(true); 
        
      }else{ 
        
       if (badpwd==0) { 
        $("#password").after('<br /><span id="span_error"><p style="color:red">Mauvais identifiants</p></span>'); 
        badpwd++; 
       } 
       
      } 
     } 
    } 
   } 
  ); 
   
 } 


Et donc, comme tu disais, le code PHP $_SESSION["connection"]="ok"; se lance automatiquement...
0
Heryu Messages postés 567 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 28 juin 2016 62
12 oct. 2011 à 19:33
Je viens de chercher des docs sur Ajax mais ça ma parait complexe... Quel serait le moyen le plus simple en Ajax pour changer cette valeur de session ?

Merci !
0
Heryu Messages postés 567 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 28 juin 2016 62
16 oct. 2011 à 19:28
Petit up !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 17/10/2011 à 09:59
voilà une methode avec Ajax:

<script type="text/javascript"> 
  ///////AJAX 
//fonction de base de creation de la request ------------------------------------------ 
function creerRequest(){ 
 var request = false; 
  //créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs 
        if (window.XMLHttpRequest) { // Mozilla, Safari,... 
            request = new XMLHttpRequest(); 
            if (request.overrideMimeType) { 
                request.overrideMimeType('text/xml'); 
            } 
        } else if (window.ActiveXObject) { // IE 
            try { 
                request = new ActiveXObject("Msxml2.XMLHTTP"); 
            } catch (e) { 
                try { 
                    request = new ActiveXObject("Microsoft.XMLHTTP"); 
                } catch (e) {} 
            } 
        } 
        if (!request) { 
            alert('Abandon :( Impossible de créer une instance XMLHTTP'); 
            return false; 
        } 
 return request;   
} 
/////// -------------------------------------------------------------------------- 

function makeRequest(url,valeur_a_passer){  
  
 var http_request = false; 
  http_request = creerRequest(); //on cree la requette Ajax 
   
  http_request.onreadystatechange = function() { traitementReponse(http_request); } //affectation fonction appelée qd on recevra la reponse 
  // lancement de la requete 
  http_request.open('POST', url, true); 
  //changer le type MIME de la requête pour envoyer les données avec la méthode POST ,  
  http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
   
  data="valeur="+valeur_a_passer; //la on envoie la valeur au script php 
    //alert("Data envoyees:  "+data); 
   http_request.send(data); 
} 

//traitement de la reponse 
function traitementReponse(http_request){ 
   
 if (http_request.readyState == 4) { 
  if (http_request.status == 200) { 
      
   var reponse=http_request.responseText; 
   //la tu peux faire ce que tu veux c'est du javascript 
   //une boite de dialogue 
   alert("Reponse a la requette Ajax: "+reponse);  
             //ou ecrire dans un div  dans ta page  
    //document.getElementById('id_du_div').innerHTML=reponse; 
    //ou ne rien faire du tout 
     
  }else { 
           alert('Un problème est survenu avec la requête enregistrement.'); 
       } 
    } 

} 

</script> 

et la page php appelee nommée par exemple scriptPhpAjax.php 

<?php 
session_start(); //si tu veux atteindre les variables de session 
//recup valeur envoyée par Ajax 

$valeur=$_POST['valeur']; //voir plus haut data ="... 
//tu en fait ce que tu veux, puis réponse de la bonne exécution 
$_SESSION['connection']=$valeur; 
//on verifie 
if($_SESSION['connection']==$valeur){ 
 $reponse="valeur de session modifiée !"; 
}else{ 
 $reponse="Pb valeur de session pas modifiée !"; 
} 

//on envoie la reponse à Ajax 
echo $reponse; 

?> 

et dans ta page le lancement de tout ça: (exemple) 

<a href="javascript:makeRequest('scriptPhpAjax.php','oui');"> connection OUI</a><br /> 
<a href="javascript:makeRequest('scriptPhpAjax.php','non');"> connection NON</a><br /> 

<!-- attention mettre le chemin relatif complet du scriptPhpAjax.php par rapport à ta page -->
0