Variable PHP dans Variable Javascript

Résolu/Fermé
Heryu Messages postés 567 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 28 juin 2016 - 13 sept. 2010 à 14:42
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 14 sept. 2010 à 12:33
Bonjour,

J'ai une page réservé pour les fonctions javascript de mon site en PHP.

J'aimerais qu'une de mes variables javascript ai la même valeur qu'une variable en PHP (session). J'ai écrit cela pour l'instant :

var session='<php echo $_SESSION['connection']; ?>';

Hélas cela ne marche pas... J'ai également testé avec une variable bidon style :

var session='<?php echo $test; ?>';


Avez-vous une solution à ça ?

Merci d'avance :)


14 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
13 sept. 2010 à 15:01
Bonjour,

Quelle est l'extension de ton fichier javascript ? Si c'est .js, alors il ne passe pas par l'interpréteur php (par défaut).

Deux solutions : soit modifier ton serveur web (apache ?) pour lui dire d'envoyer les .js à l'interpréteur php ; soit renommer ton fichier en truc.js.php, en modifiant son type MIME pour indiquer au navigateur qu'il s'agit bien d'un fichier javascript.
Pour ça, tu places tout en haut de ton fichier ce bout de code :
<?php
    header('Content-Type: text/javascript');
?>


Xavier
1
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
13 sept. 2010 à 15:19
entièrement d'accord avec Xavier.
Une autre solution consiste à avoir une page PHP sur laquelle tu passe le nom du paramète à récupérer. La page renvoies simplement la valeur contenue dans la variable.

Ensutie, en javascript (technologie AJAX), tu vas récupérer la valeur de la variable lors de l'execution du script (moins rapide d'execution que de faire un fichier .js.php dont tu changes le type mime), mais peut être que ca présente des avantages...
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
13 sept. 2010 à 15:36
Je fais un petit ajout pour dire que la technique de l'AJAX peut être utile si la variable va être modifiée en local sur l'ordi du gars et qu'elle doit etre mise à jour dans la session sur le serveur
0
Heryu Messages postés 567 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 28 juin 2016 62
13 sept. 2010 à 15:20
Merci pour ta réponse rapide, en effet c'est un .js.

Je me sert de ce site en localhost mais également en ligne, la première solution est donc plus difficile à concevoir...

La deuxième est plus interessante, je vais tester ce soir pour voir, si tu as d'autres solutions je suis toute ouïe :)

Merci !
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
13 sept. 2010 à 15:29
Une autre solution, moins élégante et moins puissante, serait d'initialiser la variable dans ton JS, du style : var session = "";

Et, dans le code ta page, qui elle est générée en php, tu mets :
<script type="text/javascript">session = '<php echo $_SESSION['connection']; ?>'; </script>

Pourvu que ce code apparaisse APRÈS l'appel au fichier JS, ta variable sera mise à jour.

C'est sans doute plus simple à mettre en oeuvre, mais c'est moche :p

Xavier
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
13 sept. 2010 à 17:46
une autre solution

si dans ta page tu as un formulaire par exemple, tu passes en php ta valeur de variable dans un champ
<input type="hidden id="session" value="<?php echo $_SESSION['connection']; ?>" />

et dans ta fonction javascript tu viens lire cette valeur par
var session=document.getElementById('session').value;
0
Heryu Messages postés 567 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 28 juin 2016 62
13 sept. 2010 à 18:28
Merci à tous pour vos réponses, j'ai gardé la solution de Xavier avec le .js.php qui fonctionne très bien !

Merci encore, bonne soirée !
0
Heryu Messages postés 567 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 28 juin 2016 62
13 sept. 2010 à 19:40
Au fait, autre petite question :

J'ai cette ligne de code

function backoffice() {
				
				$connectphp=$_SESSION['connection'];
				var connectjava=$connectphp;
				alert (connectjava);

				if(session=="ok") {
					
					document.getElementById('backoff').href='back-office.php';
				
				}else{
				
					session_open();
			
				}
	
			}


Quand je tape sur une page php
$connectphp=$_SESSION['connection'];
et que je fait un echo de la variable
$connectphp
, le resultat s'affiche normalement.

Quand j'écrit sur ma page .js.php,
$connectphp=5;
et que je fait
alert (connectjava);
, ca m'affiche bien une alert avec écrit 5.

Mais tel que le code est présenté, l'alert ne se lance pas ni ma redirection...

Avez-vous une idée ?

Merci ^^"
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
13 sept. 2010 à 20:02
C'est parce que tu mélanges JS et PHP !
Écris plutôt :
function backoffice() {
                
                <?php $connectphp=$_SESSION['connection']; ?>
                var connectjava=<?php echo $connectphp; ?>
                alert (connectjava);

                if(session=="ok") {
                    
                    document.getElementById('backoff').href='back-office.php';
                
                }else{
                
                    session_open();
            
                }
    
            }
0
Heryu Messages postés 567 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 28 juin 2016 62
13 sept. 2010 à 20:42
Ca ne fonctionne pas :s

C'est bizarre car comme ca :
function backoffice() {
				
				$connectphp=5;
                var connectjava=$connectphp;
				alert (connectjava);
				
				if(session=="ok") {
					
					document.getElementById('backoff').href='back-office.php';
				
				}else{
				
					session_open();
			
				}
	
			}


Je vois une alert m'affichant "5" mais en remplaçant
$connectphp=5;
par
$connectphp=$_SESSION['connection'];
, pas d'alert et pas de redirection...
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
14 sept. 2010 à 12:33
C'est normal, car comme tu ne lui dis pas que c'est du PHP, il gère tout comme du javascript.
Du coup, $connectphp devient une variable JAVASCRIPT valant 5.
Par contre, il ne connait pas $_SESSION['connection'], qui est purement PHP et n'a pas été déclarée en javascript. (Mais si tu le mets entre guillemets, ça devient une chaîne de caractère, donc pas de problème il te l'affiche).

Pour bien comprendre, ouvre ta page javascript dans ton navigateur, et fais « afficher la source ». Normalement, tu ne devrais y trouver AUCUN code PHP.

Xavier
0
Heryu Messages postés 567 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 28 juin 2016 62
13 sept. 2010 à 21:05
J'ai réussi à faire un alert qui me renvoi : $_SESSION['connection'

Avec ces lignes :

$connectphp="$_SESSION['connection']";
                var connectjava=$connectphp;
				alert (connectjava);


Mais moi c'est la valeur contenu dans cette foutu variable que je veux >.<
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 sept. 2010 à 22:47
tu mélanges alegrement les variables JS et PHP ça ne peut pas marcher, il faut mettre les tags php pour que php interprètes les variables php

$_SESSION['connection'] est une variable php

donc:

<?php
$connectphp="$_SESSION['connection']";
?>
                var connectjava=<?php echo $connectphp; ?>
                alert (connectjava);



et de plus if(session=="ok")

d'où sort cette variable session ??
0
Heryu Messages postés 567 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 28 juin 2016 62
14 sept. 2010 à 08:29
Merci de ta réponse Alain, mauvais copier coller la variable session !

Sinon, j'ai fait exactement ce que tu as écrit mais cela ne marche pas non plus...

Juste ça :

<php $connectphp="$_SESSION['connection']; ?>
var connectjava=<?php echo $connectphp; ?>
alert (connectjava);
}


Ca ne me déclenche pas l'alert...

Du moins chez moi...
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
14 sept. 2010 à 08:59
l'as tu bien mis dans la fonction ?

de plus des erreurs
tu as mis <php au lieu de
<?php


$connectphp="$_SESSION['connection'];

que fait ce " avant $_SESSION ??


function backoffice() {
                
<?php $connectphp=$_SESSION['connection']; ?>
        var connectjava=<?php echo $connectphp; ?>
        alert (connectjava);
}
0
Heryu Messages postés 567 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 28 juin 2016 62
14 sept. 2010 à 09:22
Je suis sur un autre PC donc obligé de re-écrire le code à la main donc j'ai pu faire des erreurs désolé ^^"

J'ai trouvé une alternative qui fonctionne en appelant la fonction JS sur mon fichier php :

backoffice('<?php echo $_SESSION['connection']; ?>'); 


et du coup dans le fichier javascript .js.php :

function backoffice(connectjava) {
alert (connectjava);


Merci encore pour votre aide très précieuse :)
0