Partage
  • Partager sur Facebook
  • Partager sur Twitter

Insertion de php dans une fonction js

dans un formualire

    4 août 2006 à 10:01:47

    Bonjour à tous,

    J'utilise une fonction js dans du code php afin de réaliser des listes déroulantes imbriquées. Ces listes doivent être chargées depuis une bdd. J'utilise ce code :

    <script langage="JavaScript">
    function Choix(form){
    i = form.Glob.selectedIndex;
    if (i==0){
            return;
            }
    <?php
    echo "Hello";
    ?>

    switch (i){
    case 1 : var txt = new Array ('collecte','support','av','supervision'); break;
    case 2 : var txt = new Array ('type X75','ATM','FR','VOIP'); break;
    case 3 : var txt = new Array ('degradation','inaccessibilité',' ',' '); break;
    case 4 : var txt = new Array ('Divers',' ',' ',' '); break;
    case 5 : var txt = new Array ('Tel','Adr',' ',' '); break;
    case 6 : var txt = new Array ('clients','fournisseurs','administratif','compta'); break;
    }
    form.Type.selectedIndex = 0 ;
    for(i=0;i<4;i++) {
            form.Type.options[i+1].text=txt[i];
            }
    }
    </script>

    <form>
                            <fieldset style="width: 500px">
                            <legend>Liste liées</legend>
                            <label>Materiel</label>
                            <select name="Glob" onChange='Choix(this.form)'>
                            <option>-Choix --</option>
                            <? $res = mysql_query("SELECT DISTINCT global_mat FROM tableau_recap");
                            while($row = mysql_fetch_assoc($res)){
                            echo "<option value='".$row["global_mat"]."'>".$row["global_mat"]."</option>";
                                                    }
                            ?>
                            </select>
                           
                            <label>Type</label>               
                            <select name="Type">
                            <option>Type de systeme</option>
                            <option></option>
                            <option></option>       
                            <option></option>
                            <option></option>
                            </select>
                    </fieldset>
            </form>


    Comme on peut le constater, la premiere liste est chargée depuis une bdd, alors que la deuxieme est pour l'instant en dur dans le programme. Afin d'y remedier, je m'étais lancé dans un select là où j'ai mis mon echo "Hello";

    Bizarrement lorsque je rajoute du cod php (que ce soit un echo, une requete sql ou autre) à ce niveau, la deuxieme liuste n'affiche plus rien.

    Je suis donc bien embeté, comment charger depuis une bdd sans utiliser de php a ce niveau et/ou pourquoi cette erreur ? o_O

    Merci.
    • Partager sur Facebook
    • Partager sur Twitter
      4 août 2006 à 10:17:15

      Je suis pas encore un pro du javascript (j'apprend), mais je peux déjà te donner une piste.

      Comme tu dois le savoir, c'est le serveur qui interprête le code php avant d'envoyer la page web au client.
      Si tu fais un echo "n'importe quoi", le serveur va changer le code et afficher "n'importe quoi" au milieu de ton code javascript. Et comme le javascript interprête chaque ligne dans l'ordre, lorsqu'il va lire n'importe quoi, bah il va faire n'importe quoi... :)

      Par contre, si tu n'affiches rien avec le php (ou alors que des commande javascript), tout devrait marcher... j'imagine (bah oui, comme je l'ai dis, je débute en Javascript)
      • Partager sur Facebook
      • Partager sur Twitter
        4 août 2006 à 10:33:04

        Oui, j'y avais pensé. Mais niaisement, je pensais que seule une modification de la bdd (update, delete) provoquerait une erreur.

        Comme quoi, y a encore du boulot par chez moi (je débute également).

        Il ne me reste plus qu'a réussir mon select pet renvoyer le résultat dans un tableau (pas une mince affaire à mon niveau).

        Merci de ta réponse et bonne journée.
        • Partager sur Facebook
        • Partager sur Twitter
          4 août 2006 à 10:34:24

          On n'injecte pas du php dans du js, on affiche du js via php, toute la nuance est là.

          Donc :
          echo '<script language="JavaScript" type="text/JavaScript">';
          le js via echo et le code php
          echo '</script>';
          • Partager sur Facebook
          • Partager sur Twitter
            4 août 2006 à 11:00:12

            J'ai pas du tout bien comprendre à ton explication Bison :o

            Car quand je tente de faire quelque chose comme ca :

            $res = mysql_query("SELECT type FROM tableau_recap
                                    WHERE global_mat="
            .$_POST["global_mat"]. "ORDER BY 1");
                            while($row = mysql_fetch_assoc($res)){;}


            il ne comprends plus.

            Faudrait il que je fasse un truc du tyle :

            echo '<script language="JavaScript" type="text/JavaScript">';
            $res = mysql_query("SELECT type FROM tableau_recap
                                    WHERE global_mat="
            .$_POST["global_mat"]. "ORDER BY 1");
                            while($row = mysql_fetch_assoc($res)){;}
            echo '</script>';


            Ai je compris quelque chose, ou suis je en train de m'enfoncer encore plus ?
            • Partager sur Facebook
            • Partager sur Twitter

            Insertion de php dans une fonction js

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown