Transfert d'info entre php et javascript [Résolu]

Signaler
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
-
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
-
Bonjour,

Je ne suis pas du tout un spécialiste du dév web, mais je dois apporter des évolutions à un site intranet.

Mon but est d'afficher une treeview avec des checkbox à chaque noeud.
J'ai trouvé un code sur le Net en javascript (blueshoes.org).
Les infos qui vont permettre de créer l'arbre sont dans une BDD MySQL.

Je pensais donc créer un tableau en php et le transférer dans le code javascript.
Mais j'ai l'impression d'un tableau php n'est pas un tableau javascript.
J'ai ce code de test :
<?php
$ab = array();
$ab[0] = array();
$ab[0]['caption']          = "1er noeud";
echo "<script language="javascript">alert($ab[0]['caption'] );</script>";
?>
L'alert me retourne undefine.

Est-il possible de transférer des tableaux ? Sachant que le code php et js sont dans la même page.
Est-il plus simple (plus propre) de passer par un fichier temporaire xml (je n'ai pas encore regardé ajax).

Merci

7 réponses

Messages postés
20
Date d'inscription
jeudi 18 septembre 2003
Statut
Membre
Dernière intervention
26 septembre 2008

Bonjour,

Effectivement si tu veux uniquement que transmettre une valeur à javascript, il te suffit de la concaténer dans ta chaine envoyée à ton client, comme la expliqué extraman1.

Cependant, si tu désires exploiter comme tu veux ton tableau php en javascript, le plus simple reste pour toi d'utiliser le format de notation objet de javascript (=JSON).
Pour ce faire, rien de plus simple, modifie ton fichier comme ceci :

echo '<script type="text/javascript">var monTableauJS = eval("'.addslashes(json_encode($ab)).'");
alert(monTableauJS[0]['caption']);
</script>';

Petite explication :

Depuis php5.2.0, la fonction json_encode est en native dans php. Elle permet de convertir un tableau php en une chaine de caractère que javascript comprend et interprete via la fonction "eval". Le résultat retourné par cette fonction peut alors être utilisé comme s'il s'agissait du tableau initial php (bien sur, il ne s'agit que d'une copie en javascript).
Cette notation JSON est souvent utilisé en Ajax, plutot que d'utiliser l'xml (en réponse à ta phrase : Est-il plus simple (plus propre) de passer par un fichier temporaire xml (je n'ai pas encore regardé ajax).).

En espérant avoir été clair ^^.

Roland Dufour,
http://www.multiprog.net
Visitez mon portfolio : >> http://portfolio.multiprog.net <<
Messages postés
103
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
26 décembre 2009
1
Salut,

Celui-là c'est bon j'ai testé :

echo "<script language="javascript">alert(" ".$ab[0]['caption']." ");</script>";

A++ extraman1
Messages postés
103
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
26 décembre 2009
1
Salut,

Et si tu tapes ça :

echo '<script language="javascript">alert(" '.$ab[0]['caption'].' ");</script>";

A++ extraman1
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
Bonjour,

Merci pour ces infos. J'ai encore un peu de mal avec la syntaxe de ce langage.

L'exemple d'extraman1 m'afficher "Array['caption']" et pas "1er noeud".

Je vais investiguer vers json.

merci
Messages postés
20
Date d'inscription
jeudi 18 septembre 2003
Statut
Membre
Dernière intervention
26 septembre 2008

Pour info extraman1, ta seule erreur dans le précédent code était que tu avais oublié de fermer ta simple quote (=') juste après </script>.
Après mon code lui permet de gérer tout son tableau en javascript. Tout dépend après de l'utilisation exacte qu'il désire en faire. :p

Roland Dufour,
http://www.multiprog.net
Visitez mon portfolio : >> http://portfolio.multiprog.net
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
tu peux passer simplement par un json_encode !

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
Merci pour votre aide. Ca m'a aider aussi a mieux appréhender la syntaxe. :)