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

Langage PHP Discussion :

Formulaire avec double listes déroulantes liées


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Par défaut Formulaire avec double listes déroulantes liées
    Bonjour,
    je suis actuellement en train de réaliser un formulaire avec plusieurs listes déroulantes qui fonctionnent entre elle et avec des boutons radios. Je n'arrive pas à lier les listes entre elles.

    Voici mon code :
    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
      <tr>
        <td class="txt">1 : </td>
        <td style="padding-left:10px" class="txt"><select name="id_marque" class="required2" onChange="this.form.submit();">
          <option value="0">Choisir une Partie</option>
          <?php
    $sqlPar = "SELECT id_marque, nom FROM marque ORDER BY id_marque ASC";
    $affPar = mysql_query($sqlPar, $connexion_bdd) or die(mysql_error());
    while( $rowPar = mysql_fetch_assoc($affPar) )
    {
    	$select = ( $id_marque == $rowPar['id_marque'] ) ? ' selected="selected"' : '';
    	echo '<option value="' . $rowPar['id_marque'] . '" ' . $select . '>' . $rowPar['nom'] . '</option>';
    }
    mysql_free_result($affPar);
    ?>
        </select></td>
        <td style="padding-left:20px"><select name="id_prod" class="required2" onChange="this.form.submit();">
            <option value="0" selected>Choisir un produit</option>
            <?php
    if( !empty($id_marque))
    {
    	$sqlPar = 'SELECT id_prod, nom FROM produit WHERE id_marque=' . $id_marque;
    	$affPar = mysql_query($sqlPar, $connexion_bdd) or die(mysql_error());
    	while( $rowPar = mysql_fetch_assoc($affPar) )
    	{
    		$select = ( $id_marque == $rowPar['id_prod'] ) ? ' selected="selected"' : '';
    		echo '<option value="' . $rowPar['id_prod'] . '" ' . $select . '>' . $rowPar['nom'] . '</option>';
    	}
    	mysql_free_result($affPar);
    }
    ?>
          </select>
        </td>
        <td class="champs"><input type="radio" name="logo" value="1">oui </td>
      </tr>

    J'espère que quelqu'un pourra m'aider.

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu utilises $id_marque alors que cette variable n'est pas définie.
    Du moins pas dans le code que tu nous montres.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Par défaut
    En début de page j'ai mis le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    // Appel de l'Entête de Page
    include('include/header.php');
    $id_marque = ( isset($_POST['id_marque']) ) ? intval($_POST['id_marque']) : 0;
    ?>

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu peux nous dire ce qui ne marche pas dans ton code actuel ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut
    tu as oublié les balises code ^^

    plus sérieusement, j'ai fais des listes liées mais avec ajax/javascript et ca marche super bien et il n'y a rien de compliqué. De plus tu peux adapter pour lier un peu e que tu veux avec la liste (j'ai fait tableau lié à une liste ça marche bien aussi)

    voicu le lien du cours que j'ai suivi pour cela.

    Sinon en restant full php tu peux faire un truc du genre

    ta 1ère liste

    tu submit

    selon le choix tu as ta 1ère présélectionnée avec la 2e correspondante (grâce à la variable POST de la 1ère)

    etc etc ... (si tu veux un exemple codé demande je t'en ferais un rapide)

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    C'est un peu ce qu'il a actuellement.
    Et en lisant le code en diagonal, pour moi, ca devrait fonctionner.

    Et en tout cas, si ca ne fonctionne pas maintenant, ca ne fonctionnera pas mieux en Ajax
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut
    C'est un peu ce qu'il a actuellement.
    pas faux j'ai mal lu le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id_marque = ( isset($_POST['id_marque']) ) ? intval($_POST['id_marque']) : 0;
    je n'ai pas l'habitude d'utiliser cette syntaxe donc je voudrais juste une précision : si tu as une variable $_POST['id_marque'] tu donne a $id_marque sa valeur sinon zero c'est bien ca ?

    Si tu envoie ton formulaire mais que rien n'est sélectionnée $_POST['id_marque'] existera quand même donc elle vaudra null le cas échéant

    perso je mets toujours un truc comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (isset($_POST['mavar']) && $_POST['mavar'] != null)
    {
            $mavar = $_POST['mavar'];
    }
    (version de base sans htmlentities ou autre)

    De ce fait tu ne récupère la valeur que si elle est non nulle.

    Essaye de faire un echo de $id_marque après ta ligne pour voir si il y a bien quelque chose.

    Si rien ne s'affiche cherche pourquoi la valeur n'est pas récupérée (je ne dis pas que ce que j'ai dit est ce qui t'arrive, c'est juste une possibilité, une première piste pour le cas ou ta variable est tout le temps vide)

  8. #8
    Membre averti
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Par défaut
    j'aurais voulu savoir pk mon code ne marche pas, histoire de comprendre et apprendre.

    voici ma bdd :
    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
    CREATE TABLE `marque` (
      `id_marque` int(11) NOT NULL auto_increment,
      `nom` varchar(100) NOT NULL,
      `photo` varchar(100) NOT NULL,
      PRIMARY KEY  (`id_marque`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
     
    INSERT INTO `marque` (`id_marque`, `nom`, `photo`) VALUES 
    (3, 'Photoshop ', 'photoshop1.jpg'),
    (2, 'Illustrator', 'photoshop1.jpg');
     
    CREATE TABLE `produit` (
      `id_prod` int(11) NOT NULL auto_increment,
      `id_marque` int(11) NOT NULL,
      `nom` varchar(100) NOT NULL,
      `photo` varchar(100) NOT NULL,
      `txt` varchar(300) NOT NULL,
      PRIMARY KEY  (`id_prod`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
     
    INSERT INTO `produit` (`id_prod`, `id_marque`, `nom`, `photo`, `txt`) VALUES 
    (3, 3, 'Sandisk CompactFlash Ultra II 1 Go', 'sandisk_ultra_II_1go.jpg', 'Le Nikon D3 est l’actuel “state of the art” de la marque jaune et noire'),
    (6, 2, 'Illutrator CS2', 'logo_illustrator_2.gif', 'gfgfgfgf');

  9. #9
    Membre averti
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Par défaut
    J'ai testé ta solution Sh4dow49, sans succés.

    Lorsque je met une valeur à id_marque, ma 2e liste déroulante marche. Je pense donc que la premiére liste déroulante ne me renvoit rien mais je ne comprend pas pk :s.

  10. #10
    Membre averti
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Par défaut
    Je viens de trouver mon erreur - -'
    je n'avais pas mis la balise form autour de la 1ere liste déroulante.

    Par contre maintenant g un autre pb...
    Dans mon formulaire je dois selctionner 5 produits avec a chaque fois le même systéme. Du coup là tte mes listes déroulantes affichent le même résultat.

    Voici du coup tout mon code (j'espére que ça va pas faire trop long :p) :

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    <?php
    // Appel de l'Entête de Page
    include('include/header.php');
    $id_marque = ( isset($_POST['id_marque']) ) ? intval($_POST['id_marque']) : 0;
    ?>
    <table width="90%"  border="0" cellspacing="0" cellpadding="0" align="center">
      <tr> <br>
          <br>
          <td colspan="4" align="center" class="txt2">TITRE</td>
      </tr>
      <tr>
        <td colspan="4"><span class="txt">
        </span></td>
      </tr>
      <tr>
        <td width="2%">&nbsp;</td>
        <td width="14%">&nbsp;</td>
        <td width="54%">&nbsp;</td>
        <td width="30%" class="champs">Afficher le logo</td>
      </tr>
     
      <tr>
        <td class="txt">1 : </td>
        <form name="form" action="produit.php" method="POST">
    	<td style="padding-left:10px" class="txt"><select name="id_marque" class="required2" onChange="this.form.submit();">
          <option value="0">Choisir une Partie</option>
          <?php
    		$sqlPar = "SELECT id_marque, nom FROM marque ORDER BY id_marque ASC";
    		$affPar = mysql_query($sqlPar, $connexion_bdd) or die(mysql_error());
    		while( $rowPar = mysql_fetch_assoc($affPar) )
    		{
    			$select = ( $id_marque == $rowPar['id_marque'] ) ? ' selected="selected"' : '';
    			echo '<option value="' . $rowPar['id_marque'] . '" ' . $select . '>' . $rowPar['nom'] . '</option>';
    		}
    		mysql_free_result($affPar);
    		?>
        </select></td>
    	</form>   
        <td style="padding-left:20px"><select name="id_prod" class="required2" onChange="this.form.submit();">
            <option value="0" selected>Choisir un produit</option>
            <?php
    	   if( !empty($id_marque))
    	   {
    			$sqlPar = 'SELECT id_prod, nom FROM produit WHERE id_marque=' . $id_marque;
    			$affPar = mysql_query($sqlPar, $connexion_bdd) or die(mysql_error());
    			while( $rowPar = mysql_fetch_assoc($affPar) )
    			{
    				$select = ( $id_marque == $rowPar['id_prod'] ) ? ' selected="selected"' : '';
    				echo '<option value="' . $rowPar['id_prod'] . '" ' . $select . '>' . $rowPar['nom'] . '</option>';
    			}
    			mysql_free_result($affPar);
    		}
    		?>
          </select>
        </td>
        <td class="champs"><input type="radio" name="logo1" value="1">
          oui </td>
      </tr>
      <tr>
        <td class="txt">2 : </td>
        <form name="form2" action="produit.php" method="POST">
    	<td style="padding-left:10px" class="txt"><select name="id_marque" class="required2" onChange="this.form.submit();">
            <option value="0">Choisir une Partie</option>
            <?php
    		$sqlPar = "SELECT id_marque, nom FROM marque ORDER BY id_marque ASC";
    		$affPar = mysql_query($sqlPar, $connexion_bdd) or die(mysql_error());
    		while( $rowPar = mysql_fetch_assoc($affPar) )
    		{
    			$select = ( $id_marque == $rowPar['id_marque'] ) ? ' selected="selected"' : '';
    			echo '<option value="' . $rowPar['id_marque'] . '" ' . $select . '>' . $rowPar['nom'] . '</option>';
    		}
    		mysql_free_result($affPar);
    		?>
        </select></td>
    	</form>
        <td style="padding-left:20px"><select name="id_prod" class="required2" onChange="this.form.submit();">
            <option value="0" selected>Choisir un produit</option>
            <?php
    	   if( !empty($id_marque))
    	   {
    			$sqlPar = 'SELECT id_prod, nom FROM produit WHERE id_marque=' . $id_marque;
    			$affPar = mysql_query($sqlPar, $connexion_bdd) or die(mysql_error());
    			while( $rowPar = mysql_fetch_assoc($affPar) )
    			{
    				$select = ( $id_marque == $rowPar['id_prod'] ) ? ' selected="selected"' : '';
    				echo '<option value="' . $rowPar['id_prod'] . '" ' . $select . '>' . $rowPar['nom'] . '</option>';
    			}
    			mysql_free_result($affPar);
    		}
    		?>
          </select></td>
        <td class="champs"><input type="radio" name="logo2" value="1">
          oui </td>
      </tr>
      <tr>
        <td class="txt">3 : </td>
    	<form name="form3" action="produit.php" method="POST">
        <td style="padding-left:10px" class="txt"><select name="id_marque" class="required2" onChange="this.form.submit();">
          <option value="0">Choisir une Partie</option>
          <?php
    		$sqlPar = "SELECT id_marque, nom FROM marque ORDER BY id_marque ASC";
    		$affPar = mysql_query($sqlPar, $connexion_bdd) or die(mysql_error());
    		while( $rowPar = mysql_fetch_assoc($affPar) )
    		{
    			$select = ( $id_marque == $rowPar['id_marque'] ) ? ' selected="selected"' : '';
    			echo '<option value="' . $rowPar['id_marque'] . '" ' . $select . '>' . $rowPar['nom'] . '</option>';
    		}
    		mysql_free_result($affPar);
    		?>
        </select></td>
    	</form>
        <td style="padding-left:20px"><select name="id_prod" class="required2" onChange="this.form.submit();">
          <option value="0" selected>Choisir un produit</option>
          <?php
    	   if( !empty($id_marque))
    	   {
    			$sqlPar = 'SELECT id_prod, nom FROM produit WHERE id_marque=' . $id_marque;
    			$affPar = mysql_query($sqlPar, $connexion_bdd) or die(mysql_error());
    			while( $rowPar = mysql_fetch_assoc($affPar) )
    			{
    				$select = ( $id_marque == $rowPar['id_prod'] ) ? ' selected="selected"' : '';
    				echo '<option value="' . $rowPar['id_prod'] . '" ' . $select . '>' . $rowPar['nom'] . '</option>';
    			}
    			mysql_free_result($affPar);
    		}
    		?>
        </select>    </td>
        <td class="champs"><input type="radio" name="logo3" value="1">
        oui </td>
      </tr>
      <tr>
        <td class="txt">4 : </td>
    	<form name="form4" action="produit.php" method="POST">
        <td style="padding-left:10px" class="txt"><select name="id_marque" class="required2" onChange="this.form.submit();">
            <option value="0">Choisir une Partie</option>
            <?php
    		$sqlPar = "SELECT id_marque, nom FROM marque ORDER BY id_marque ASC";
    		$affPar = mysql_query($sqlPar, $connexion_bdd) or die(mysql_error());
    		while( $rowPar = mysql_fetch_assoc($affPar) )
    		{
    			$select = ( $id_marque == $rowPar['id_marque'] ) ? ' selected="selected"' : '';
    			echo '<option value="' . $rowPar['id_marque'] . '" ' . $select . '>' . $rowPar['nom'] . '</option>';
    		}
    		mysql_free_result($affPar);
    		?>
        </select></td>
    	</form>
        <td style="padding-left:20px"><select name="id_prod" class="required2" onChange="this.form.submit();">
          <option value="0" selected>Choisir un produit</option>
          <?php
    	   if( !empty($id_marque))
    	   {
    			$sqlPar = 'SELECT id_prod, nom FROM produit WHERE id_marque=' . $id_marque;
    			$affPar = mysql_query($sqlPar, $connexion_bdd) or die(mysql_error());
    			while( $rowPar = mysql_fetch_assoc($affPar) )
    			{
    				$select = ( $id_marque == $rowPar['id_prod'] ) ? ' selected="selected"' : '';
    				echo '<option value="' . $rowPar['id_prod'] . '" ' . $select . '>' . $rowPar['nom'] . '</option>';
    			}
    			mysql_free_result($affPar);
    		}
    		?>
        </select></td>
        <td class="champs"><input type="radio" name="logo4" value="1">
          oui </td>
      </tr>
      <tr>
        <td class="txt"> 5 : </td>
    	<form name="form5" action="produit.php" method="POST">
        <td style="padding-left:10px" class="txt"><select name="id_marque" class="required2" onChange="this.form.submit();">
            <option value="0">Choisir une Partie</option>
            <?php
    		$sqlPar = "SELECT id_marque, nom FROM marque ORDER BY id_marque ASC";
    		$affPar = mysql_query($sqlPar, $connexion_bdd) or die(mysql_error());
    		while( $rowPar = mysql_fetch_assoc($affPar) )
    		{
    			$select = ( $id_marque == $rowPar['id_marque'] ) ? ' selected="selected"' : '';
    			echo '<option value="' . $rowPar['id_marque'] . '" ' . $select . '>' . $rowPar['nom'] . '</option>';
    		}
    		mysql_free_result($affPar);
    		?>
        </select></td>
    	</form>
        <td style="padding-left:20px"><select name="id_prod" class="required2" onChange="this.form.submit();">
            <option value="0" selected>Choisir un produit</option>
            <?php
    	   if( !empty($id_marque))
    	   {
    			$sqlPar = 'SELECT id_prod, nom FROM produit WHERE id_marque=' . $id_marque;
    			$affPar = mysql_query($sqlPar, $connexion_bdd) or die(mysql_error());
    			while( $rowPar = mysql_fetch_assoc($affPar) )
    			{
    				$select = ( $id_marque == $rowPar['id_prod'] ) ? ' selected="selected"' : '';
    				echo '<option value="' . $rowPar['id_prod'] . '" ' . $select . '>' . $rowPar['nom'] . '</option>';
    			}
    			mysql_free_result($affPar);
    		}
    		?>
          </select></td>
        <td class="champs"><input type="radio" name="logo5" value="1">
          oui </td>
      </tr>
      <tr>
        <td colspan="4" align="center" class="txt2">&nbsp;</td>
      </tr>
      <tr>
        <td class="message" colspan="5"></td>
      </tr>
    </table>
    <br>
    <br>
    <br>
    </div>
    <?php
    // Appel du Pied de Page
    include('include/footer.php');
    ?>

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/05/2008, 23h00
  2. [AJAX] Formulaire avec deux listes dynamiques liées
    Par gotcha5832 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/03/2007, 10h40
  3. Réponses: 7
    Dernier message: 17/10/2006, 12h32
  4. Formulaire avec plusieurs listes déroulantes
    Par cyberdevelopment dans le forum Langage
    Réponses: 5
    Dernier message: 17/07/2006, 16h59
  5. Pb avec 3 listes déroulantes liées
    Par barthez dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/06/2006, 23h34

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