Téléchargement
illégal
Posez votre question Signaler

Tableau PHP en parametre fonction Javascript [Résolu]

Rwick 59Messages postés 20 mars 2007Date d'inscription - Dernière réponse le 26 mars 2008 à 12:36
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 :)
Lire la suite 

Tableau PHP en parametre fonction Javascript »

8 réponses
Réponse
+1
moins plus
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 )
Ajouter un commentaire
Réponse
+1
moins plus
ne ecrivez pas $_post["gg"] entre " "
Ajouter un commentaire
Réponse
+0
moins plus
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 :)
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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é ;)
Ajouter un commentaire
Réponse
+0
moins plus
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)
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Ce document intitulé « tableau PHP en parametre fonction Javascript » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?