Tableau PHP en parametre fonction Javascript

Résolu
Rwick Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   -  
 salut -
Bonjour, jeune webmaster d'un site ecrit en Php/MySql, je souhaite agrémenter le site d'un menu en javascript que je ve renseigner via une requete sur la base MySql.
Seule problème le passage des deux variables ( tableau de chaine pour les deux ) dans la fonction javascript :

Dessine_Menu('.$Titre_Page.','.$Partie_Page.');

la fonction Dessine_Menu ne prend pa les valeurs des tableaux mais seulement les chaines "$Titre_Page" et "$Partie_Page".

Que puis-je faire pour passer les tableaux en parametres afin que javascript me les prennes comme des tableau de valeurs ( chaines ) et non des chaines ($Titre_Page et $Partie_Page ) ???

En espérant avoir été assez claire dans ma demande,
Merci d'avance :)
A voir également:

8 réponses

Rwick Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   9
 
Merci du coup de main ;)
cela ne me fais plus d'erreur sur l'appel de la fonction via php ( GG mek :p )
mais.. car il y a un mais... ( hélas oui :X )
j'ai un otre appel de cette fonction javascript entre les balise
<SCRIPT>
Dessine_Menu(".$Titre_Page.",".$Partie_Page.");
</SCRIPT>

pitite précision :
1)
J'ai un appel de cette fonction entre mes balise
<BODY>
//Creation du Menu Javascript
$Menu='<DIV ID=menu_java></DIV><script language=javascript>Dessine_Menu("'.$Titre_Page.'","'.$Partie_Page.'");</script>';
</BODY>
2)
Et un appel dans le javascript :
<script>
position_menu = -1;
function Dessine_Menu(onglet_menu,onglet_lien)
{

position_menu = -1;
affichage_menu = "<table width=130 height=30 border=0 cellpadding=0 cellspacing=0><TR><TD><TABLE BORDER=0 height=20 CELLPADDING=0 CELLSPACING=7 WIDTH=100%>";

for(a=0;a<onglet_menu.length;a++)
{
if(position_menu == a || !document.getElementById)
{
bgcolor = "#6699CC";
}
else
{
bgcolor = "#006699";
}
if(document.getElementById)
{
affichage_menu += "<TR><TD><A HREF=\"#\" onMouseOver=\"position_menu="+a+";Dessine_Menu()\" CLASS=menu>"+onglet_menu[a]+"</A></TD></TR>";
}
else
{
affichage_menu += "<TR><TD>"+onglet_menu[a]+"</TD></TR>"
}
if(position_menu == a || !document.getElementById)
{
affichage_menu += "<TR><TD>"+onglet_lien[a]+"</TD></TR>";
}
}

affichage_menu += "</TABLE></TD></TR></TABLE>";

if(document.getElementById)
{
document.getElementById("menu_java").innerHTML = affichage_menu;
}
else
{
document.write(affichage_menu);
}
}
/*Voici le deuxieme appel de la fonction qui pose encore Pb*/
Dessine_Menu("'.$Titre_Page.'","'.$Partie_Page.'");
</script>

Merci @ tous ceux qui pouorront m'eclairer (..vers le lumiere eternelle.. oopss..je m'egare ^^ xD )
2
salut
 
ne ecrivez pas $_post["gg"] entre " "
1
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Si tu souhaite appeller ta fonction javascript depuis php, voici la syntaxe :

<?php

echo '<script language="javascript">Dessine_Menu("'.$Titre_Page.'","'.$Partie_Page.'"); </script>';

?>


En théorie ca devrait être bon :)
0
Serge_La Messages postés 407 Date d'inscription   Statut Membre Dernière intervention   47
 
Bonjour,
Je ne suis pas certain de comprendre mais il est certain que mettre le nom de la variable entre guillemets comme tu fais:
Dessine_Menu("'.$Titre_Page.'","'.$Partie_Page.'"); 

dit au javascript de prendre la chaîne de caractères au lieu de la variable. Dans des cas semblables, il faut écrire différemment pour que javascript voit que $Titre_Page est une variable. Par exemple:
Dessine_Menu("+'.$Titre_Page.'+","+'.$Partie_Page.'+"); 

ou
Dessine_Menu($Titre_Page,$Partie_Page); 

ou encore avec l'aide de la fonction eval().
Ton probème semble être de transformer des valeurs MySql en variables javascript.
J'espère que ça t'aide.
Serge.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Rwick Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   9
 
Re-Bonjour et merci de ta participation serge.
Je n'est pas pu resoudre mon problème grace à ta solution et j'ai pencher pour un changement de facon de faire...Je ne passe plus de tableau ( php ) en parametre de ma fonction java, par contre je rempli des tableau java (via requete MySsql/PHP) les valeurs semble bien affecter a mes variables. mais une petite erreur doit subsister.

Voici le code pour lequel j'ai obter :
<HEAD>
<script>
onglet_menu= new Array();
onglet_lien= new Array();
<?
$i=0;
$Requete="Select P.Id_Page,P.Libelle_Page from page P";
$query=Query($Requete);
if (mysql_num_rows($query) > 0)
{
while ($data=mysql_fetch_array($query))
{
?>
onglet_menu[<?=$i;?>]=<?=$data['Libelle_Page'];?>;
<?
//Recherche des parties associées à cette page
$Requete2="SELECT PA.Id_Partie,PA.Titre_Partie,PA.Description_Partie
FROM partie PA,page_partie PP
WHERE PP.Id_Page=".$data['Id_Page']."
AND PP.Id_Partie=PA.Id_Partie";
$query2=Query($Requete2);
if (mysql_num_rows($query2) > 0)
{
$Lien="";
while ($data2=mysql_fetch_array($query2))
{
$TargetLien='page-'.$data['Id_Page'].'-'.$data2['Id_Partie'].'-'.$data2['Titre_Partie'].'.html';
$TitreLien=$data2['Titre_Partie'];
$Lien.="<A HREF='".$TargetLien."'CLASS=menu>".$TitreLien."</A><BR>";
}
?>
onglet_lien[<?=$i;?>]=<?=$Lien;?>;
<?
}
//incrementation du compteur
$i++;
}
}
//die ("Lien : ".$Lien);
?>
//alert("ONGLET menu : "+onglet_menu[0]+"ONGLET Lien : "+onglet_lien[0]);
position_menu = -1;
function Dessine_Menu()
{
//alert("ONGLET menu : "+onglet_menu[0]+"ONGLET Lien : "+onglet_lien[0]);
affichage_menu = "<table width=130 height=30 border=0 cellpadding=0 cellspacing=0><TR><TD><TABLE BORDER=0 height=20 CELLPADDING=0 CELLSPACING=7 WIDTH=100%>";

for(a=0;a<onglet_menu.length;a++)
{
if(position_menu == a || !document.getElementById)
{
bgcolor = "#6699CC";
}
else
{
bgcolor = "#006699";
}
if(document.getElementById)
{
affichage_menu += "<TR><TD><A HREF=\"#\" onMouseOver=\"position_menu="+a+";Dessine_Menu()\" CLASS=menu>"+onglet_menu[a]+"</A></TD></TR>";
}
else
{
affichage_menu += "<TR><TD>"+onglet_menu[a]+"</TD></TR>"
}
if(position_menu == a || !document.getElementById)
{
affichage_menu += "<TR><TD>"+onglet_lien[a]+"</TD></TR>";
}
}

affichage_menu += "</TABLE></TD></TR></TABLE>";

if(document.getElementById)
{
document.getElementById("menu_java").innerHTML = affichage_menu;
}
else
{
document.write(affichage_menu);
}
}
Dessine_Menu();
</SCRIPT>
</HEAD>

avec en plus mon eternelle rappel a cette fonction entre balise <BODY>
$Menu='<DIV ID=menu_java></DIV><script language=javascript>Dessine_Menu();</script>';
<?=$Menu;?>
</BODY>

Si quelqun pouvait me debloquer.. car je pense toucher au but :P (NEED A SOLUTION :X )

PS: lorsque je fait un die ("Lien : $Lien") , je voi egalement les valeur des tableau javascript (onglet_menu[0] et onglet_lien[0]) c pour sa que je sait qu'ils sont bien renseigné ;)
0
Rwick Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   9
 
Voici ce que me donne le die ("Lien : ".$Lien) une fois décommenté :

onglet_menu= new Array();
onglet_lien= new Array();
onglet_menu[0]=TEST PAGE;
onglet_lien[0]=TEST TITRE PARTIE; (PS : Lien Actif et bien formater)
Lien : TEST TITRE PARTIE (PS : Lien Actif et bien formater)
0
Rwick Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   9
 
WOOOTTTTTTT j'ai trouver ma SOLUTION xD
héhé :P
un ti pe capricieux le javascript keu meme.. :X

Voilou c sa :
<HEAD>
<script>
onglet_menu= new Array();
onglet_lien= new Array();
<?
$i=0;
$Requete="Select P.Id_Page,P.Libelle_Page from page P";
$query=Query($Requete);
if (mysql_num_rows($query) > 0)
{
while ($data=mysql_fetch_array($query))
{
?>
onglet_menu[<?=$i;?>]='<?=$data['Libelle_Page'];?>';
<?
//Recherche des parties associées à cette page
$Requete2="SELECT PA.Id_Partie,PA.Titre_Partie,PA.Description_Partie
FROM partie PA,page_partie PP
WHERE PP.Id_Page=".$data['Id_Page']."
AND PP.Id_Partie=PA.Id_Partie";
$query2=Query($Requete2);
if (mysql_num_rows($query2) > 0)
{
$Lien="";
while ($data2=mysql_fetch_array($query2))
{
$TargetLien="page-".$data['Id_Page']."-".$data2['Id_Partie']."-".Format_URL($data2['Titre_Partie']).".html";
$TitreLien=strtolower($data2['Titre_Partie']);
$Lien.="<A HREF=".$TargetLien."CLASS=\"menu\">".$TitreLien."</A><BR>";
}
?>
onglet_lien[<?=$i;?>]='';
onglet_lien[<?=$i;?>]+='<?=$Lien;?>';
<?
}
//incrementation du compteur
$i++;
}
}
?>
position_menu = -1;
function Dessine_Menu()
{
affichage_menu = "<table width=130 height=30 border=0 cellpadding=0 cellspacing=0><TR><TD><TABLE BORDER=0 height=20 CELLPADDING=0 CELLSPACING=7 WIDTH=100%>";

for(a=0;a<onglet_menu.length;a++)
{
if(position_menu == a || !document.getElementById)
{
bgcolor = "#6699CC";
}
else
{
bgcolor = "#006699";
}
if(document.getElementById)
{
affichage_menu += "<TR><TD><A HREF=\"#\" onMouseOver=\"position_menu="+a+";Dessine_Menu()\" CLASS=menu>"+onglet_menu[a]+"</A></TD></TR>";
}
else
{
affichage_menu += "<TR><TD>"+onglet_menu[a]+"</TD></TR>"
}
if(position_menu == a || !document.getElementById)
{
affichage_menu += "<TR><TD>"+onglet_lien[a]+"</TD></TR>";
}
}

affichage_menu += "</TABLE></TD></TR></TABLE>";

if(document.getElementById)
{
document.getElementById("menu_java").innerHTML = affichage_menu;
}
else
{
document.write(affichage_menu);
}
}
Dessine_Menu();
</script>
<HEAD>

rien a changer ds le <BODY></BODY>
c'etai juste une histoire de quote et guillement pour ceux qui ne verrai pa la difference ;)
la chaine est apparement interpreter differement selon que l'on utilise l'un ou l'autre.. ( les boules ^^ :$ )
Merci a tous ceux qui ont essayer de me filer un coup de main ;)
@ une prochaine (.... pour de nouveaux problème :/ mdr )
++ Developper bien & Have Fun xD
0
Serge_La Messages postés 407 Date d'inscription   Statut Membre Dernière intervention   47
 
haha!
C'est une erreur courante. Faut pas oublier de séparer les chaînes des variables. Faut pas mettre des ' à l'intérieur de '. Faut séparer les " des ', quoi. Et faire attention aux apostrophes dans une chaine de texte dans une variable.
Serge.
0