Tableau PHP en parametre fonction Javascript

Résolu
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

8 réponses

  1. 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
    1. Contributeur
      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
      1. 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
        1. 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
          1. 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
            1. 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
              1. 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
                1. ne ecrivez pas $_post["gg"] entre " "
                  1