IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

fonctions en cascade


Sujet :

JavaScript

Vue hybride

daemon2a fonctions en cascade 13/02/2006, 20h07
siddh tu as un submit avec le... 14/02/2006, 00h32
daemon2a ok ça marche c'etait bien ça ... 14/02/2006, 07h32
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Par défaut fonctions en cascade
    bonjour,
    j'ai ecris ces scripts :
    une page principale contenant un formulaire et des combo à remplir au chargement de la page. Donc le script de la page principale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Document sans titre</title>
    <script language="javascript" type="text/javascript"v src="Connections/scripts.js"></script>
    </head>
     
    <body onload="RempliAll(document.fiche_recette)">
    <form method="post" id="fiche_recette" name="fiche_recette" action="">
      <label>titre
    	<input type="text" name="titre" />
      </label>
      <label>Categorie
      <select name="categorie" id="categorie" onchange="RempliSousCategorie(this.form)">
      </select>
      </label>
      <input type="button" name="Submit" value="Nouvelle categorie" onclick="PopUp('ajout_categorie.php')"/>
      <label>Sous-catégorie
      <select name="sous_categorie" id="sous_categorie">
      </select>
      </label>
      <input type="submit" name="Submit2" value="Nouvelle sous categorie" onclick="PopUp('ajout_sous-categorie.php')" />
      <p>
        <label>Dificulté
        <select name="dificulte" id="dificulte">
        </select>
        </label>
    	    <input type="submit" name="Submit3" value="Nouvelle" onclick="PopUp('ajout_dificulte.php')" />
        <label>Coût
        <select name="cout" id="cout">
        </select>
        </label>
    	<input type="submit" name="cout" value="Nouveau" onclick="PopUp('ajout_cout.php')" />
        <label>
     
        Nombre de parts
        <select name="parts">
     
        </select>
        <input type="submit" name="Submit4" value="Nouveau" onclick="PopUp('ajout_part.php')" />
        </label>
      </p>
      <p>
        <label>Durée de préparation
        <select name="duree_prepa">
     
        </select>
        <input type="submit" name="Submit5" value="Nouveau" onclick="PopUp('ajout_tps_prepa.php')" />
        </label>
        <label>Durée de cuisson
        <select name="select7">
        </select>
        </label>
      </p>
      <p><fieldset id="ingredient"><legend>Ingrédients</legend>
      <p>
        <label>ingrédient
        <select name="ingredient">
        </select>
        </label>
        <label>quantité
        <select name="quantite" onchange="Ingredient()">
    	<option></option>
    	<option>test</option>
        </select>
        </label>
      </p>
      </fieldset>
      &nbsp;
      <label>préparation</label>
      <textarea name="textfield2" cols="50" rows="20"></textarea>
    </form>
    </body>
    </html>
    pour remplir les combo de ce formulaire j'ai ecris ces 2 fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    function RempliAll(f)
    {
    	Rempli(f,'categorie');
    	Rempli(f,'dificulte');
    	Rempli(f,'cout');
    }
    function Rempli(f,combo)
    {
    	if(window.XMLHttpRequest) // Firefox
       		xhr_object = new XMLHttpRequest();
    	else if(window.ActiveXObject) // Internet Explorer
    		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    	else { // XMLHttpRequest non supporté par le navigateur
       		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
     		return;
    		}
     
    	xhr_object.open("POST","rempli.php",false);
     
    	data = "form="+f.name+"&select="+combo;
    	xhr_object.setRequestHeader("content-type", "application/x-www-form-urlencoded");
    	xhr_object.send(data);
    	if(xhr_object.readyState == 4) eval(xhr_object.responseText);
    }
    la fonction Rempli() appelle un script php que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    <?php
    header('Content-type: text/html; charset=iso-8859-1');
    require_once('Connections/recette.php');
     
    switch($_POST['select'])
    {
            case "categorie":
                    $sql = "select * from categorie order by ID_categorie";
                    $req = mysql_query($sql) or die(mysql_error());
                    echo 'var o = null;';
                    echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];'; 
                    echo 's.options.length = 0;';
                    while ($r = mysql_fetch_array($req))
                    {
                            echo 's.options[s.options.length] = new Option("'.$r['nom_categorie'].'");';
                    }
            break;
            
            case "dificulte":
                    $sql = "select * from difficulte order by iddifficulte";
                    $req = mysql_query($sql) or die(mysql_error());
                    echo 'var o = null;';
                    echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];'; 
                    echo 's.options.length = 0;';
                    while ($r = mysql_fetch_array($req))
                    {
                            echo 's.options[s.options.length] = new Option("'.$r['difficulte'].'");';
                    }
            break;
            
            case "cout":
                    echo "alert('form = ".$_POST['form']." select = ".$_POST['select']."');";
                    $sql = "select * from cout";
                    $req = mysql_query($sql) or die(mysql_error());
                    echo 'var o = null;';
                    echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];'; 
                    echo 's.options.length = 0;';
                    while ($r = mysql_fetch_array($req))
                    {
                            echo 's.options[s.options.length] = new Option("'.$r["cout"].'");';
                    }
            break;
    }
     
    ?>
    mon probleme :
    au chargement de la page le 2 premieres combo sont chargées mais la troisieme genere une erreur que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Erreur : s.options has no properties
    Fichier source : http://127.0.0.1/recettes/Connections/scripts.js
    Ligne : 25
    je n'arrive pas à comprendre pourquoi ça fonctionne pour les 2 premieres mais pas pour la troisieme alors que le code est le même
    merci d'avance pour vos idées

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    tu as un submit avec le name="cout" ca doit l'embrouiller, change son nom et ca devrais aller

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Par défaut
    ok ça marche c'etait bien ça
    2 elements avec le même nom j'ai honte de pas l'avoir vu
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [awk] Appel de fonctions en cascade
    Par Taxan dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 03/08/2013, 13h57
  2. [MySQL] Formulaire cascade choix de ville en fonction du code postal
    Par david2511 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 04/03/2010, 09h06
  3. fonction pour filtrage avec des combobox en cascade
    Par Montor dans le forum Contribuez
    Réponses: 3
    Dernier message: 09/11/2009, 12h05
  4. Fonctions en cascade
    Par meier dans le forum MATLAB
    Réponses: 3
    Dernier message: 13/08/2009, 08h49
  5. VBA-E:Fonction SumIf en cascade
    Par deaqu1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/04/2007, 14h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo