Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PHP TO JS - CONVERSION D'UNE VARIABLE EN PHP VERS JAVASCRIPT


Information sur la source

Catégorie :Javascript / DHTML Niveau : Débutant Date de création : 21/04/2003 Date de mise à jour : 21/04/2003 17:41:19 Vu : 21 519

Note :
7,5 / 10 - par 2 personnes
7,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note

Description

string php2js (mixed var)

la fonction va convertir la variable passée en paramètre en une chaine qui correspond au code JavaScript de la variable.

[Exemple]
<?php
  $tab = array(1, 2, array(3, 4), 5, "salut", True);
  $js = php2js($tab); // [1,2,[3,4],5,'salut',true]
?>
<script language="JavaScript">
  var tab = <?php echo $js; ?>;
  alert(tab);
</script>
 

Source

  • function php2js ($var) {
  • if (is_array($var)) {
  • $res = "[";
  • $array = array();
  • foreach ($var as $a_var) {
  • $array[] = php2js($a_var);
  • }
  • return "[" . join(",", $array) . "]";
  • }
  • elseif (is_bool($var)) {
  • return $var ? "true" : "false";
  • }
  • elseif (is_int($var) || is_integer($var) || is_double($var) || is_float($var)) {
  • return $var;
  • }
  • elseif (is_string($var)) {
  • return "\"" . addslashes(stripslashes($var)) . "\"";
  • }
  • // autres cas: objets, on ne les gère pas
  • return FALSE;
  • }
function php2js ($var) {
    if (is_array($var)) {
        $res = "[";
        $array = array();
        foreach ($var as $a_var) {
            $array[] = php2js($a_var);
        }
        return "[" . join(",", $array) . "]";
    }
    elseif (is_bool($var)) {
        return $var ? "true" : "false";
    }
    elseif (is_int($var) || is_integer($var) || is_double($var) || is_float($var)) {
        return $var;
    }
    elseif (is_string($var)) {
        return "\"" . addslashes(stripslashes($var)) . "\"";
    }
    // autres cas: objets, on ne les gère pas
    return FALSE;
} 

Commentaires et avis

signaler à un administrateur
Commentaire de phvr le 23/06/2003 14:19:01

Excellent code qui fonctionne très bien, de plus l'exemple (pour une fois ;-) ) est très clair.

signaler à un administrateur
Commentaire de bob3000 le 05/07/2003 02:43:59

super bon!! bravo!

signaler à un administrateur
Commentaire de [GANDALF le 27/04/2004 12:17:12

Excellent code ! Excellent code ! Et encore excellent code ! C'est tout con, mais je n'avais jamais pensé à

var variable = "<?echo $variable?>"

pour récupérer une variable php en javascript. Depuis le temps que je cherchais comment faire...

signaler à un administrateur
Commentaire de atlahack le 16/06/2004 16:03:33

Bonjour a tous
Merci pour ce code => super.
J'ai malgré tout une petite question, peu t'on faire l'inverse, et si oui, comment?
Merci d'avance.

signaler à un administrateur
Commentaire de naholyr le 16/06/2004 19:18:24

L'inverse est un non-sens puisque PHP travaille en amont de javascript. Envoyer des données à PHP nécessite l'appel d'une page, et donc se fera via une relocation (document.location.href="script.php?var=valeur" par exemple).

signaler à un administrateur
Commentaire de engy11 le 02/11/2004 13:41:46

Bonjour,
J'ai à peu près compris le code mais l'exemple me parait encore flou (je suis un débutant de JS). Je voudrais savoir l'appel de la fonction se fait comment e dans quel type de fichier : php ou .. js? Merci

signaler à un administrateur
Commentaire de naholyr le 02/11/2004 14:49:56

C'est PHP qui va générer du Javascript.
Exactement comme quand tu ecris:
<script> <?php echo "document.write('salut');"; ?> </script>

signaler à un administrateur
Commentaire de beladel le 15/02/2006 19:46:28

ça me sauuuuuuuuuuuuuuuve, en fin.

BRAVO!
     _  _  _
|\/||_ |_||  | |||
|  ||_ | \|_ | ...

signaler à un administrateur
Commentaire de boudouya le 17/03/2006 10:37:03

bravo un porceau de code trés utile et de secours

signaler à un administrateur
Commentaire de tomboul le 15/09/2006 16:41:34

bravo pour ce code !!!

etant autodidacte et ne developpant qu'en PHP (pour l'instant) j'ai été perturbé par les codes &gt; et &lt;

en lisant j'ai compris que cela équivalait aux entrées et sorties de balise '<' et '>'

ainsi le code de l'exemple donne :

<code>
<?php
$tab = array(1, 2, array(3, 4), 5, "salut", True);
$js = php2js($tab); // [1,2,[3,4],5,'salut',true]
?>
<script language="JavaScript">;
var tab = <?php echo $js; ?>;
alert(tab);
</script>;
</code>

signaler à un administrateur
Commentaire de g_fuck le 23/04/2007 11:16:20

si je comprend bien cette fonction est a maitre dans les balises php???
et une autre question : pourquoi une fois passe une variable de php a javascript on ne peut pas l'incrementer dans un boucle du genre for(....) ?? je veux dire que a chaque fois que la boucle tourne la variable reprend sa valeur initiale qu'elle avait dans les balises php !!!!

signaler à un administrateur
Commentaire de planete80 le 09/06/2007 17:41:11

salut,
heu @¿@ comment il s'integre ce script et dois tu l'enregistrer en .js ou autrement ?


Merci de votre indulgence

signaler à un administrateur
Commentaire de g_fuck le 11/06/2007 08:56:12

si je me rapelle bien c'est dans des balises
<?php function php2js ($var) {..... ?> que tu dois integrer cette function ... et en suite faire apelle a cette function de la sorte :

<SCRIPT>
var myVar = <?php php2js(taVAR) ?>

</SCRIPT>

signaler à un administrateur
Commentaire de jnff le 06/09/2008 21:06:34

Bonjour à tous, je suis débutant ds la programmation php et je voudrais déjà savoir ou mettre la fontion php2js() exactement (ds le header, ds le body, ds un autre fichier).

Est ce que ce script peut faire ce que je veux, cad:

j'ai une page php (eleve_traitement.php) qui traite un formulaire. A la fin du traitement, je voudrais me rediriger sur une autre page mais en transferant une variable php ds l'adresse. la fonction qui me permet de me rediriger est une fonction en javascript est cet redirection s'effectu après un décompte.

pour la redirection j'utilise cela:

<script type="text/javascript">
window.onload = Init;
var waitTime = 5; // Temps d'attente en secondes.
var url = <?php echo $adresse_retour; ?>; // Lien de destination.
var x = 1000;

function Init()
{
window.document.getElementById('compteur').innerHTML = waitTime;
x = window.setInterval('Decompte()', 1000);
}

function Decompte()
{
((waitTime > 0)) ? (window.document.getElementById('compteur').innerHTML = --waitTime) : (window.clearInterval(x));
if (waitTime == 0)
{
window.location = url;
}
}
</script>




Dans le body, à la fin du traitement des données recues par le formulaire, j'ai déclaré une variable php qui contient l'adresse de la page que je veut afficher après :

$adresse_retour = 'eleve_consultation.php?classe=' . $classe_eleve;

sachant que la variable $classe_eleve est la variable que je veux récupérer sur la page eleve_consultation.php



Lorsque j'execute ma page de traitement, à la fin du décompte, je suis redirigé sur la page d'accueil (index.php) du site comme s'il n'avait pas tenu compte du "var url = <?php echo $adresse_retour; ?>;".


Pouriez vous m'aider, car autant je me débrouille un peu avec php et mysql, qu'avec javascript je ne fais que recopier les fonctions trouvées sur le net.

Merci d'avance à qui m'aidera.

signaler à un administrateur
Commentaire de rius_ngatcha le 12/09/2008 20:19:31

2008 bravo pour le code que tu as écris car en plus d'être simple il est très simple

signaler à un administrateur
Commentaire de dpantillon le 17/09/2008 17:13:43

Salut JNFF;
Je tombe par hasard sur ta question.
Comment récupères-tu ta variable $classe_eleve avant de l'utiliser dans:

$adresse_retour = 'eleve_consultation.php?classe=' . $classe_eleve;

Je pense que tu la passes par POST. Tu dois donc la récupérer:

if (isset($_POST[classe_eleve]))
    $classe=$_POST[classe_eleve];
else $classe=0;

Pour la tester, tu n'as qu'à faire un:
echo " jnff : ".$classe_eleve;

signaler à un administrateur
Commentaire de dpantillon le 17/09/2008 17:15:06

Correction:

if (isset($_POST[classe_eleve]))
    $classe_eleve=$_POST[classe_eleve];
else $classe_eleve=0;

signaler à un administrateur
Commentaire de jnff le 20/09/2008 13:03:30

Merci de vos réponses @ tous.
rius_ngatcha: Je n'ai aucun mérite pour le code étant donné que je l'ai récupérer sur le net mais c'est clair que la fonction de redirection après un décompte est assez simple d'utilisation.

dpantillon: Effectivement je fais un "$classe_eleve = mysql_real_escape_string(htmlspecialchars($_POST['classe_eleve']));" pour récuperer de mon formulaire la classe de l'élève, je n'ai pas de problème de ce côté là, par contre là ou cela coince c'est que je n'arrive pas à faire cela "var url = <?php echo $adresse_retour; ?>;" dans la fonction de redirection, sachant que ma variable $adresse_retour contient bien l'adresse de la page que je veux afficher après le décompte (ex: "eleve_consultation.php?classe=1C_PROE"), la fonction en javascript ne prend pas en compte le contenu de la variable php $adresse_retour. C'est pour cela que je me retrouve sur la page d'accueil de mon site étant donner qu'il n'a pas exécuter le "var url = <?php echo $adresse_retour; ?>;", la variable JS reste "vide". D'où vient le problème?

signaler à un administrateur
Commentaire de dpantillon le 20/09/2008 16:39:27

Et avec ce bout de code:
<script type="text/javascript">
window.opener.location.href="<?php echo $adresse_retour; ?>";
setTimeout("window.close()",1000);
</script>
Et si cela en fonctionne pas, teste de la manière suivante:
echo " jnff : ".$classe_eleve; // pour être certain que tu récupères bien la page
et si ça ne marche toutjours pas, essaie de mettre l'adresse en hard:
<script type="text/javascript">
window.opener.location.href="eleve_consultation.php?classe=1C_PROE";
setTimeout("window.close()",1000);
</script>
A+

signaler à un administrateur
Commentaire de jnff le 12/10/2008 16:44:31

Merci @ tous pour vos réponses.

J'ai trouvé la solution, je ne récupérais pas l'adresse de redirection ou il le fallait. Il suffit juste d'affecter la variable "url" pendant la traitement en php en non pas dans la fonction javascript placée dans le "head". J'avais oublié que le php est éxecuté côté serveur et non pas côté utilisateur. Du coup je voulais traiter une variable php qui n'existe plus côté utilisateur.

Voila mon problème est résolu.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.