begin process at 2012 05 27 22:29:34
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Javascript / DHTML

 > CONVERSION D'UN TABLEAU PHP EN DÉCLARATION DE TABLEAU JAVASCRIPT

CONVERSION D'UN TABLEAU PHP EN DÉCLARATION DE TABLEAU JAVASCRIPT


 Information sur la source

Note :
9,25 / 10 - par 4 personnes
9,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Javascript / DHTML Niveau :Initié Date de création :28/04/2004 Date de mise à jour :10/06/2004 17:14:15 Vu :26 155

Auteur : Rivenbis

Ecrire un message privé
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 Description

C'est une fonction PHP qui au moment où elle est appellée fournit le code javascript correspondant au tableau php passé en paramètre.

conv_tabjs($tableau, $nomjs);

$tableau est le tableau php à convertir
$nomjs est une chaine de caractère contenant le nom de la variable javascript ciblée

Source

  • // Convertit un tableau PHP en déclaration d'un tableau javascript
  • // $tableau : variable tableau PHP à convertir
  • // $monjs : nom de la variable tableau en javascript
  • // $prempass : /!\ NE PAS UTILISER : sert à différentier le premier passage
  • // des passages récursifs, je n'ai pas déclaré une seconde fonction pour des
  • // raisons de portabilité...
  • //
  • // Utilisation commune : conv_tabjs($tableau, "nomJS");
  • //
  • function conv_tabjs($tableau, $nomjs, $prempass=true) {
  • if($prempass) {
  • $taille = count($tableau);
  • echo "var ".$nomjs." = new Array(".$taille.");\n";
  • foreach($tableau as $key => $val) {
  • if(is_string($key)) $key = "'".$key."'";
  • conv_tabjs($val, $nomjs."[".$key."]", false);
  • }
  • }
  • else {
  • if(is_array($tableau)) {
  • echo($nomjs." = new Array(".count($tableau).");\n");
  • foreach($tableau as $key => $val) {
  • if(is_string($key)) $key = "'".$key."'";
  • conv_tabjs($val, $nomjs."[".$key."]", false);
  • }
  • }
  • else {
  • if(is_string($tableau)) $tableau = "'".addcslashes($tableau,"'")."'";
  • echo($nomjs." = ".$tableau.";\n");
  • }
  • }
  • }
// Convertit un tableau PHP en déclaration d'un tableau javascript
// $tableau : variable tableau PHP à convertir
// $monjs : nom de la variable tableau en javascript
// $prempass : /!\ NE PAS UTILISER : sert à différentier le premier passage
// des passages récursifs, je n'ai pas déclaré une seconde fonction pour des
// raisons de portabilité...
//
// Utilisation commune : conv_tabjs($tableau, "nomJS");
//

function conv_tabjs($tableau, $nomjs, $prempass=true) {

	if($prempass) {
		$taille = count($tableau);
	
		echo "var ".$nomjs." = new Array(".$taille.");\n";
		foreach($tableau as $key => $val) {
			if(is_string($key)) $key = "'".$key."'";
			conv_tabjs($val, $nomjs."[".$key."]", false);
		}
	}
	else {
		if(is_array($tableau)) {
			echo($nomjs." = new Array(".count($tableau).");\n");
			foreach($tableau as $key => $val) {
				if(is_string($key)) $key = "'".$key."'";
				conv_tabjs($val, $nomjs."[".$key."]", false);
			}
		}
		else {
			if(is_string($tableau)) $tableau = "'".addcslashes($tableau,"'")."'";
			echo($nomjs." = ".$tableau.";\n");
		}
	}
}

 Conclusion

*** Attention : cette fonction écrit dans le document, et elle doit absolument être interprêtée entre des balises <script language="javascript"></script>
(ne pas oublier les balises PHP qd même lol : y en a qui ont essayé y ont eu des problèmes :-D ).

Elle fonctionne avec tous les types de tableau php, et déclare un tableau javascript qui en est l'exact clone.

J'espère vous avoir été utile, @+


10/06/2004 >> bug corrigé : la fonction convertissais toutes les valeurs numériques en chaines de caractères, dorénavant elle respecte le type autant pour la valeur que pour sa clé...


 Sources du même auteur

RECUPERATION DU RESULTAT D'UNE REQUETE MYSQL DANS UN TABLEAU...
RÉCUPÉRATION D'UNE TABLE MYSQL DANS UN TABLEAU PHP

 Sources de la même categorie

Source avec Zip Source avec une capture PHPJSVFORM : DES CLASSES PHP, DES JAVASCRIPTS POUR CRÉER FAC... par synanceia
BOUTON POUR SITE WEB PAYMENT par Tom56340
Source avec Zip Source avec une capture PETIT CLIENT + AJAX + PHP par kiki67100
Source avec Zip Source avec une capture BOÎTE À ONGLETS / MENUS ET SOUS-MENUS / JAVASCRIPT / PHP / D... par Heirem
Source avec Zip Source avec une capture JUKEBOX EN LIGNE par Flachy Joe

Commentaires et avis

Commentaire de tonydbz le 03/05/2004 14:57:13

Bonjour,

J'aurais juste voulu savoir si quand on modifie un des deux tableaux,la modification s'effectue automatiquement dans lautre tableau.

Par exemple, si on modifie le tableau javascript, est-ce que le tableau PHP sera aussi modifié de la même manière?

Merci

Commentaire de Rivenbis le 03/05/2004 15:13:48

Réponse à tonydbz :

Nan nan, en fait ce script, il génère le code javascript correspondant à un tableau identique à celui en php.

C'est à sens unique : le javascript est généré par le php, mais on peut pas modifier le tableau php depuis du javascript, c'est techniquement impossible, vu que le PHP est interprété côté serveur et le javascript côté client.

Si tu veux passer du javascript au php, y te faut passer par un envoi de données par mode post ou get....

voilà, @+

Commentaire de Bastide43 le 10/06/2004 14:44:15

je ne sais pas comment faire pour que cette fonction soit interprêtée entre des balises &lt;script language="javascript"&gt;&lt;/script&gt;.

Merci

Commentaire de tonydbz le 10/06/2004 15:12:06

&lt;script language="javascript"&gt;

fonction

&lt;/script&gt;

Commentaire de Bastide43 le 10/06/2004 16:15:26

Merci pour la reponse. Je dois etre bouché mais je n'arrive à rien. Help....

Voici un extrait de mon code. Merci beaucoup pour un coup de main.

while ($row[$x] = mysql_fetch_array($result)) {....}
...
function conv_tabjs ($tableau, $nomjs, $prempass=TRUE) {..?}
....

&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Test&lt;/title&gt;



&lt;script Language="Javascript"&gt;
&lt;!--

$tabjs = "tabjs";
conv_tabjs($row, $tabjs)

function affiche()
{
alert(tabjs[0][2]);
}

//--&gt;
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;input type="submit" name="OK"   onClick="affiche();" value="Afficher"&gt;

&lt;/body&gt;
&lt;/html&gt;

Commentaire de Rivenbis le 10/06/2004 16:44:07

perds pas de vue que c une fonction PHP, tu dois donc l'appeller dans un contexte PHP :

&lt;script Language="Javascript"&gt;
//&lt;!--

&lt;?PHP

$tabjs = "tabjs";
conv_tabjs($row, $tabjs)

?&gt;

function affiche()
{
alert(tabjs[0][2]);
}

//--&gt;
&lt;/script&gt;

Commentaire de Rivenbis le 10/06/2004 16:49:57

perds pas de vue que c une fonction PHP, tu dois donc l'appeller dans un contexte PHP :

&lt;script Language="Javascript"&gt;
//&lt;!--

&lt;?PHP

$tabjs = "tabjs";
conv_tabjs($row, $tabjs)

?&gt;

function affiche()
{
alert(tabjs[0][2]);
}

//--&gt;
&lt;/script&gt;

Commentaire de Bastide43 le 10/06/2004 17:17:47

Voici  un extrait de mon code suite à ta reponse. Je n'ai toujours aucun resultat.
Il y a un truc que je ne dois pas voir. Merci beaucoup.



&lt;?php

...

while ($row[$x] = mysql_fetch_array($result)) {....}
...
function conv_tabjs ($tableau, $nomjs, $prempass=TRUE) {...}
....

?&gt;

&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Test&lt;/title&gt;

&lt;script Language="Javascript"&gt;
//&lt;!--

&lt;?php

$tabjs = "tabjs";
conv_tabjs($row, $tabjs)

?&gt;

function affiche()
{
alert(tabjs[0][2]);     // cet appel est-il correct ?? Dans mon test mon tableau comporte 3 lignes
                            //  de 28 colonnes.
}

//--&gt;
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;input type="submit" name="OK" onClick="affiche();" value="Afficher"&gt;

&lt;/body&gt;
&lt;/html&gt;

Commentaire de cedricdric le 25/01/2005 00:57:12

salut,

juste un petit problème avec ce code:
le tableau recupère bien le contenu de celui php mais en tronquant le caractère '\' et aussi les nombres.
Je doit passer le chemin suivant c:\fichier\0001.jpg.

Pourrais tu m'aiguiller s'il te plait ?

Commentaire de Tipingouin le 18/07/2005 13:34:34

Salut...

Je voudrait poser une question... Est-ce que la taille du tableau que peut créer cette fonction est limitée?
Parce que quand j'ai un tableau de 2 ou 3 valeur sa marche, mais quand j'ai 3000 voir 4000 valeur dans mon tableau sa marche plus...

C'est normal ou c'est moi qui ait mal utilisé le script...

Merci...

Commentaire de Rivenbis le 18/07/2005 16:03:58

Ben écoutes, je sais aps trop, j'ai fait ce code y a longtemps et j'avouene pas avoir essayé avec 4000 valeurs lol :)

Mais je vois pas pkoi ça marcherait pas, ou alors ptetreune limitation du langage....

Commentaire de Tipingouin le 19/07/2005 09:03:56

Salut
merci pour la réponse ....
En fin de compte j'ai touvé c'était quoi l'erreur...
C'est pas le language mais un problème avec le format de mes données...
J'avait des retour à la ligne dans le tableau et il aimait pas sa...

Commentaire de trashcode le 17/11/2005 17:41:00

Bonjour,

J'ai cherché sur pas mal de forum a la recherche d'une fonction permettant de convertir un tableau php en tableau javascript.

J'ai essayé ce code mais cela m'indique une erreur javascript a l'affichage de la page.

la structure de ma page:

<html>
<head>
<title>mon titre</title>
<script language="JavaScript">
...
MesFonctions Javascripts dont :
function conv_tabjs($tableau, $nomjs, $prempass=true){...}

</script>
</head>
<body>

...
Ma page Html/php où j'appelle :
<?
conv_tabjs($row, $tabjs)
?>
...

</body>
</html>

Dans les commentaires précédents cela est dit que c'est une fonction php or c'est une syntaxe javascript...?
Je doute qu'il faille mettre des balises <? php ?> dans le code de la fonction

PS : J'utilise php 4.3.10

Y aurait il une structure précise de page HTML pour l'utilisation de cette fonction?

Merci par avance
Trashcode

Commentaire de Rivenbis le 18/11/2005 12:45:53

Donc déjà la fonction conv_tabjs($tableau, $nomjs, $prempass=true){...} EST UNE FONCTION PHP !!!

-> ce qui explique pkoi elle ne fonctionnera pas si tu la déclare avec tes fonctions javascript, il faut que tu la déclare en php, et que tu aies un tableau php à convertir.

conv_tabjs() est une fonction php qui renvoie dans le code de la page une déclaration de tableau javascript ...

Pour l'appeller, bien sur il faut mettre des balises <? ?> puisque c'est un appel php.
Par contre, il faut que cet appel php : <? conv_tabjs(...) ?> soit inclu dans des balises <script> </script> puisque c'est du javascript qu'il génère.


Exemple de structure de page :

<?php
--
votre code php déclarant qque part un tableau nommé $tabPhp (par exemple)
--
?>
<html>
<head>
<title>mon titre</title>
<script language="JavaScript">

<?
function conv_tabjs($tabPhp, $nomjs, $prempass=true){...}

($nomjs est une chaine de caractères contenant le nom du tableau javascript, "tableau2" par exemple, et pouvant etre différent du nom php)
?>

---
Vos autres fonctions Javascripts dans lesquelles vous pourrez utiliser le tableau "tableau2" préalablement déclaré.
---

</script>
</head>
<body>

(...)

</body>
</html>

En espérant que vous arriverez à faire tourner le script ;-)

Commentaire de juniorberry le 01/06/2006 10:51:19

Merci Rivenbis !! cette source est si je puis me permettre niquel chrome !

Utilisation simple et code compréhensible !

Pour ceux qui ont un peu de mal malgrès toutes les explications voici ma façon de l'utiliser.

<?php

function conv_tabjs($tabPhp, $nomjs, $prempass=true){...}

//une petite boucle pour incrementer un tableau php
$i=0;
while ($tab=mysql_fetch_array($req)){ //où $req est un select quelconque
     $tabphp[$i] = $tab["id"]; //par exemple
     $i++;
}
?>

<script language="javascript">
  <?php
     conv_tabjs($tabphp,"id")//où id est le nom de mon tableau javascript
  ?>
  //version je vérifie le premier enregistrement
  alert(id[0]);
  //version je boucle pour tout vérifier
  for (i=0;i<<?php echo $i;?>;i++){
     document.write (id[i]);
  }
</script>

Voilà j'espère que cette explication aidera en plus des autres commentaires...

Commentaire de Evangun le 04/08/2006 00:55:37

Vraiment nickel, même avec des tableaux compliqués... bravo

Commentaire de Evangun le 16/06/2007 12:46:37

Un petit défaut de cette fonction c'est qu'elle écrit le tableau javascript au moment où elle est appelée, au lieu de renvoyer une valeur qui peut stockée dans une variable.

Donc la modif qui s'impose :

function conv_tabjs($tableau, $nomjs, $ret = '', $prempass = true) {

global $ret;

if($prempass) {
$taille = count($tableau);

$ret = 'var '.$nomjs.' = new Array('.$taille.");\n";
foreach($tableau as $key => $val) {
if(is_string($key)) { $key = '\''.$key.'\''; }
conv_tabjs($val, $nomjs.'['.$key.']', $ret, false);
}
return $ret;
}
else {
if(is_array($tableau)) {
$ret .= $nomjs.' = new Array('.count($tableau).");\n";
foreach($tableau as $key => $val) {
if(is_string($key)){ $key = '\''.$key.'\''; }
conv_tabjs($val, $nomjs.'['.$key.']', $ret, false);
}
}
else {
if(is_string($tableau)) { $tableau = '\''.addcslashes($tableau,'\'').'\''; }
$ret .= $nomjs.' = '.$tableau.";\n";
}
}
}

Ainsi on peut écrire :

$tableaujavascript = conv_tabjs($tableauphp, 'montableau')

Commentaire de psylo6b le 28/11/2007 14:18:10 7/10

Bonjour,

je souhaiterai utiliser ce script mais j'ai besoin que les adresses des images proviennent de ma base de données mysql.

Je galère à passer mon tableau PHP vers JS, si quelqu'un pouvait me filer un coup de main je lui en serait très reconnaissant, ça fait plusieurs heures que je passe sur le problème et sans grand succès. :-/

Félicitation à l'auteur de ce script tout de même qui a du en dépanner pas mal :)

Commentaire de psylo6b le 28/11/2007 17:20:40

veuillez ne pas tenir compte de mon dernier message, il était destiné à un autre script (celui qui affiche mes images entre autre).

On ne peut pas éditer, donc j'en rajoute une couche :p

Merci tout de même à l'auteur de ce script

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales