Page 1 sur 1

php et javascript

Posté : 04 nov. 2005, 16:07
par donatello
Bonjour à tous,
J'ai un javascript dans l'entête d'une page html, codé de manière conventionnelle:
<html>
<head>
<SCRIPT language=JavaScript>
<!--- fonction js -->
</SCRIPT>
</head>
J'ai un autre script php qui retourne un tableau javascript.
La fonction javascript entre <head> et </head> a besoin de ce tableau pour fonctionner.
2 questions:
1-Est ce que ça pose un pb de mettre du php entre <head> et </head>?
2-Si ça ne pose pas de pb, le code php doit il être mis avant <SCRIPT language=JavaScript> ou après?

Merci pour vos réponses.

Re: php et javascript

Posté : 04 nov. 2005, 16:11
par nicolas
Bonjour à tous,
J'ai un javascript dans l'entête d'une page html, codé de manière conventionnelle:
Si tu veux le faire de manière correcte plutôt que conventionelle la syntaxe est:
<script type="text/javascript">...</script>
J'ai un autre script php qui retourne un tableau javascript.
La fonction javascript entre <head> et </head> a besoin de ce tableau pour fonctionner.
2 questions:
1-Est ce que ça pose un pb de mettre du php entre <head> et </head>?
2-Si ça ne pose pas de pb, le code php doit il être mis avant <SCRIPT language=JavaScript> ou après?
Tu peux mettre le php où tu veux à partir du moment où le code php est inclus entre <?php et ?>. Il faut bien sûr que le fichier porte l'extension php.

Posté : 04 nov. 2005, 17:00
par donatello
voici la fonction que j'utilise pour convertir un tableau php en tableau js
$tableau= array('janvier', 'fevrier', 'mars', 'avril'); // tableau php
$nomjs= test; //nom du tableau js retouné

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"); 
        } 
    } 
} 
elle marche bien mais le pb est que le tableau js retouné est écrit dans la page.
Que dois-je modifier pour que le tableau js soit retourné en sortie sans écrire dans la page?
(j'ai essayé quelques return mais je maîtrise pas assez!)

Posté : 04 nov. 2005, 17:20
par nicolas
> Que dois-je modifier pour que le tableau js soit retourné en sortie sans écrire dans la page?

Que veux-tu dire ? Je ne comprends pas.

Posté : 04 nov. 2005, 18:16
par Invité
Que veux-tu dire ? Je ne comprends pas.
La fonction crée bien un tableau js, donc pas de pb. mais ce tableau est affiché dans le navigateur. en gros si tu exécutes cette fonction, tu obtiendras l'affichage suivant:
var test = new Array(4); test[0] = 'janvier'; test[1] = 'fevrier'; test[2] = 'mars'; test[3] = 'avril';
la fonction n'est pas de moi, mais je veux l'intégrer dans un site web.
Donc il ne faut pas que l'utilisateur puisse voir le résulat de l'exécution de la fonction....il faut juste que je récupère "var test" pour effectuer d'autres traitement.
Le pb c'est que suis pas très bon et j'arrive pas à modifier la fonction pour qu'il n'y ait plus d'affichage, mais juste var test en sortie.

Posté : 04 nov. 2005, 18:30
par VaN
C'est peut etre à cause de cette ligne là nan ?
echo($nomjs." = ".$tableau.";\n");
genre la changer en
$nomjs = $tableau;
je tente d'apporter mon aide, si ça se trouve ç'est pas du tout ça.

Posté : 04 nov. 2005, 18:37
par Invité
si ça peut aider à mieux comprendre la fonction, le script original est ici
, avec les commentaires.

Posté : 04 nov. 2005, 19:11
par Invité
ok, je crois que j'avais mal compris le fonctionnement de la fonction...
le code que je veux supprimer
var test = new Array(4); test[0] = 'janvier'; test[1] = 'fevrier'; test[2] = 'mars'; test[3] = 'avril';

Code : Tout sélectionner

est celui qui déclare la fonction en js. je pensais que la fonction devait retourner un tableau contenu dans une variable.

Posté : 04 nov. 2005, 20:39
par Truc
Salut, tu n'a rien a modifier tu dois juste mettre cette fonction tel quelle dans ton fichier ensuite lors de l'appel de ta fonction javascript tu dois faire ceci:
<?
$tableau= array('janvier', 'fevrier', 'mars', 'avril'); // tableau php
$nomjs= "test"; //nom du tableau js retouné /!\ mettre des guillemets

function conv_tabjs($tableau, $nomjs, $prempass=true) 
{
...// toute la fonction
}
?>
<HEAD>
<script type="text/javascript">
function tab(<? conv_tabjs($tableau,$nomjs) ?>)
{
.. //code de la fonction js
}
</script> 
</HEAD>
et ça devrai marcher :wink: