Rechercher : dans
Par :

Tableau PHP en parametre fonction Javascript

Dernière réponse le 26 mar 2008 à 12:36:44 Rwick, le 20 mar 2007 à 16:21:20 
 Signaler ce message aux modérateurs

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 :)

Configuration: Windows XP
Firefox 2.0.0.2

Meilleures réponses pour « tableau PHP en parametre fonction Javascript » dans :
Javascript - Manipulation des contrôles clavier VoirManipulation des contrôles clavier Cette astuce a pour but de vous faire découvrir la (ou du moins une) manière de contrôler les évènements clavier en javascript. Cela vous permettra de contrôler/attribuer les/des comportements particuliers à...
PHP - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
Javascript - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction...
PHP - Les variables VoirConcept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois...

1

kij_82, le 20 mar 2007 à 16:50:39

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 :)
~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

2

Rwick, le 20 mar 2007 à 17:00:59

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 )

Répondre à Rwick

3

Serge_La, le 20 mar 2007 à 18:58:54

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.

Répondre à Serge_La

4

Rwick, le 21 mar 2007 à 09:58:58

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é ;)

Répondre à Rwick

5

Rwick, le 21 mar 2007 à 10:06:48

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)

Répondre à Rwick

6

Rwick, le 21 mar 2007 à 11:49:47

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

Répondre à Rwick

7

Serge_La, le 21 mar 2007 à 19:20:10

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.

Répondre à Serge_La

8

 salut, le 26 mar 2008 à 12:36:44

Ne ecrivez pas $_post["gg"] entre " "

Répondre à salut
Collection CommentÇaMarche.net