Conversion d'un tableau php en déclaration de tableau javascript

Soyez le premier à donner votre avis sur cette source.

Snippet vu 27 976 fois - Téléchargée 27 fois

Contenu du snippet

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 / Exemple :


// 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é...

A voir également

Ajouter un commentaire

Commentaires

psylo6b
Messages postés
2
Date d'inscription
jeudi 21 juin 2007
Statut
Membre
Dernière intervention
28 novembre 2007
-
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
psylo6b
Messages postés
2
Date d'inscription
jeudi 21 juin 2007
Statut
Membre
Dernière intervention
28 novembre 2007
-
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 :)
Evangun
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5 -
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')
Evangun
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5 -
Vraiment nickel, même avec des tableaux compliqués... bravo
juniorberry
Messages postés
2
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
1 juin 2006
-
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...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.