[PHP] visibilité de variable

Fermé
cyril.eseo Messages postés 19 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 15 octobre 2007 - 31 juil. 2007 à 13:05
 Alain42 - 1 août 2007 à 09:13
Bonjour à tous,

Je dois récupérer une variable contenus dans un script javascript, pour cela je fais :
<?php
$action_type="<script type=\"text/javascript\">
  document.write(GetCookie())</script>";
?> 


Pour vérifier que tout ce passe bien je fais un echo un peu plus loin :

<?php echo $action_type?>


Aucun soucis, je récupère la bonne valeur, seulement quand je veux m'en servir un peu plus loin (la ligne du dessous) ça ne marche pas, il n'y a plus de valeur :

<IMG NAME = "zoom_in"
    onClick="f_switch(1)"
      SRC = <?php if($action_type==1) echo"pictures/zoomin_on.gif";
	              else echo "pictures/zoomin_off.gif"; ?>
      WIDTH = "30" HEIGHT = "30">


Je ne vois absolument pas le problème, donc si quelqu'un a une idée, ça serait gentil.
Merci

7 réponses

cyril.eseo Messages postés 19 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 15 octobre 2007 3
31 juil. 2007 à 13:51
Je crois que c'est plutot le type de la variable et le test qui ne va pas.
La variable provient de la fonction :

function GetCookie ()
{
var cookValue = "" ;
var cookName = "" ;
 
//position de "=" dans le cookie
var egal= document.cookie.indexOf( "=" ) ;
 
cookName = document.cookie.substring ( 0, egal ) ;
 
//on prend la sous-chaine comprise entre le "=" et le ";" donc sa valeur
cookValue = document.cookie.substring ( egal + 1 ) ;
return cookValue;
}


J'ai essayer different moyen de la tester comme:
if(strcmp($action_type,"1")==0)
                if($action_type, 1)


Mais rien a faire, pourtant le echo me donne 1 et sans espace !
1
if(!empty($action_type)){
...
}
0
Une chose me surprend, comment peux tu récuperer en php une valeur JS ?

php s'exécute sur le serveur avant le chargement de la page HTML, et JS s'exécute lorsque la page est chargée dans le navigateur.

- une solution c'est que JS écrive dans la page HTML par GetElementByID('id_a_ecrire').value ou GetElementByID('id_a_ecrire').innerHTML
et ensuite en php tu traite cette valeur à l'occasion d'un nouveau rechargement de la page;

On peut passer des valeurs de variables de php à JS mais pas l'inverse.

-ou en utilisant AJAX
0
cyril.eseo Messages postés 19 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 15 octobre 2007 3
31 juil. 2007 à 18:49
Je sais que php c'est coté serveur et js coté client.
Pour mieux comprendre, je vais expliquer ce que je fais:
Dans le cadre d'utilisation de mapserver, je dois pouvoir zoomer, scroller, ect sur ma carte.
Pour cela j'utilise js pour avoir des boutons enfonçables et qui le reste lorsque je change la page (d'ou l'utilisation de cookie). Et donc au moment du rechargement de la page (lorsque l'on clique sur la carte), mon code PHP vient récuperer par l'intermediaire d'une fonction js le bouton enfoncé.
Donc, oui Alain49 tu a raison ce n'est possible que parce que je recharge ma page. Mais dans mon cas c'est ce que je recherche et cela marche, je récupère bien la bonne valeur.

Mon problème et que ma variable $action_type qui quand je l'affiche, contient par exemple 1, ne veut pas subir de test.
A part celui qui teste si elle est vide, mais moi je veux une valeur.

Si quelqu'un a une petite idée.

Sinon je pense que je vais essayer de récuperer un cookie directement en PHP ou me tourner vers Ajax (mais ca ma l'air un peu compliqué vu ce que je veux en faire)

Merci
0

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

Posez votre question
zefoots Messages postés 146 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 septembre 2007 62
1 août 2007 à 00:12
Salut,

J'ai pas bien compris l'histoire de rechargement de la page, mais bon ...

Juste une idée en passant pour essayer de faire avancer le chmilblic: tu initialises

var cookValue = "";
dans ta fonction GetCookie() donc c'est une chaîne et non un nombre. Donc, ne faudrait-il pas écrire

if (trim($action_type) == "1") {
(avec des guillemets sur le "1") et non pas

if ($action_type == 1) {
?
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
1 août 2007 à 00:48
Bonjour,

Tu te trompes. Ta variables $actionType ne vaut jamais 1. Elle vaut, par contre, une chaine de caractères, qui est :
"<script type=\"text/javascript\">document.write(GetCookie())</script>"

Quand tu essaies de la tester en faisant un "echo", en fait, ça ne renvoit pas 1 : regarde le code source de la page plutôt que son affichage ! Ca renvoit cette chaine de caractère, qui, elle, va être lue par le navigateur comme un javascript, et le navigateur va donc afficher le contenu du cookie (1, par exemple).

MAIS POUR LE PHP, TA VARIABLE N'A JAMAIS EU LA VALEUR DU COOKIE.

Pour récupérer la valeur d'un cookie, je te conseille plutôt d'utiliser la variable globale $_COOKIE, qui fonctionne comme les variables $_GET et $_POST : si le cookie que tu veux s'appelle "toto", alors place la ligne suivante :
$actionType = $_COOKIE["toto"];

Volà, j'espère t'avoir aidé...

Xavier
0
Tu devrais essayer avec Ajax, moi j'y ai "gouté" et c'est de la balle!

Au début un peu difficile à comprendre et mettre en oeuvre, mais après c'est super car pas besoin de recharger la page, donc plus rapide, plus fluide.

vas voir les tutos sur le sujet sur google (ou autre)

le principe général:
- par exemple le onClick d'un bouton appelle la fonction Ajax makeRequest (en lui passant les parametres que tu veux)

- cette fct appelle un script php en arrière plan et lui envoie en post (ou get) les datas que tu veux

- ton script récupére ces datas, et peux lire dans une BD, faire des traitements etc et répond

- la fct Ajax traite la réponse et écrit dans la page HTML par la methode
getElementbyId('id_a_ecrire').innerHTML=texte reçu du script ou
getElementbyId('id_a_ecrire').value=texte reçu du script

essayes.

Si tu veux j'ai un exemple avec des listes liées.
0