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

tonydbz Messages postés 3 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 10 juin 2004 - 3 mai 2004 à 14:57
psylo6b Messages postés 2 Date d'inscription jeudi 21 juin 2007 Statut Membre Dernière intervention 28 novembre 2007 - 28 nov. 2007 à 17:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22362-conversion-d-un-tableau-php-en-declaration-de-tableau-javascript

psylo6b Messages postés 2 Date d'inscription jeudi 21 juin 2007 Statut Membre Dernière intervention 28 novembre 2007
28 nov. 2007 à 17:20
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
28 nov. 2007 à 14:18
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 4
16 juin 2007 à 12:46
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 4
4 août 2006 à 00:55
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
1 juin 2006 à 10:51
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...
Rivenbis Messages postés 8 Date d'inscription mercredi 28 janvier 2004 Statut Membre Dernière intervention 20 janvier 2007
18 nov. 2005 à 12:45
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
trashcode Messages postés 1 Date d'inscription samedi 30 juillet 2005 Statut Membre Dernière intervention 17 novembre 2005
17 nov. 2005 à 17:41
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>


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


</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
Tipingouin Messages postés 14 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 12 juillet 2006
19 juil. 2005 à 09:03
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...
Rivenbis Messages postés 8 Date d'inscription mercredi 28 janvier 2004 Statut Membre Dernière intervention 20 janvier 2007
18 juil. 2005 à 16:03
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....
Tipingouin Messages postés 14 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 12 juillet 2006
18 juil. 2005 à 13: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...
cedricdric Messages postés 4 Date d'inscription jeudi 17 janvier 2002 Statut Membre Dernière intervention 3 février 2005
25 janv. 2005 à 00:57
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 ?
Bastide43 Messages postés 6 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 19 juillet 2013
10 juin 2004 à 17:17
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.



<?php

...

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

?>

<html>
<head>
<title>Test</title>

<script Language="Javascript">
//<!--

<?php

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

?>

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

//-->
</script>
</head>





</html>
Rivenbis Messages postés 8 Date d'inscription mercredi 28 janvier 2004 Statut Membre Dernière intervention 20 janvier 2007
10 juin 2004 à 16:49
perds pas de vue que c une fonction PHP, tu dois donc l'appeller dans un contexte PHP :

<script Language="Javascript">
//<!--

<?PHP

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

?>

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

//-->
</script>
Rivenbis Messages postés 8 Date d'inscription mercredi 28 janvier 2004 Statut Membre Dernière intervention 20 janvier 2007
10 juin 2004 à 16:44
perds pas de vue que c une fonction PHP, tu dois donc l'appeller dans un contexte PHP :

<script Language="Javascript">
//<!--

<?PHP

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

?>

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

//-->
</script>
Bastide43 Messages postés 6 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 19 juillet 2013
10 juin 2004 à 16:15
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) {..?}
....

<html>
<head>
<title>Test</title>



<script Language="Javascript">
<!--

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

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

//-->
</script>
</head>





</html>
tonydbz Messages postés 3 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 10 juin 2004
10 juin 2004 à 15:12
<script language="javascript">

fonction

</script>
Bastide43 Messages postés 6 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 19 juillet 2013
10 juin 2004 à 14:44
je ne sais pas comment faire pour que cette fonction soit interprêtée entre des balises <script language="javascript"></script>.

Merci
Rivenbis Messages postés 8 Date d'inscription mercredi 28 janvier 2004 Statut Membre Dernière intervention 20 janvier 2007
3 mai 2004 à 15:13
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à, @+
tonydbz Messages postés 3 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 10 juin 2004
3 mai 2004 à 14:57
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
Rejoignez-nous