Bonjour,
j'ai deux listes déroulantes liées après modification du code d'un tutoriel. Je veux insérer les valeurs sélectionnées dans ma table nommée t_article. Les listes déroulantes liées se présentent comme l'exemple suivante:

ARTICLE: savon PRIX: 400
carnet 500
ampoule 1000

Par exemple, lorsque l'article savon est sélectionné le prix 400 s'affiche. Ces listes liées proviennent de la table nommée t_reception :

id article prix_article
1 savon 400
2 carnet 500
3 ampoule 1000

Lorsque je soumets le formulaire pour insérer l'article et le prix sélectionnés dans la table t_article, j'ai le résultat suivant:

id article prix_article
5 1 400
6 2 500
7 3 1000

Alors que je m'attends à obtenir le résultat suivant:

id article prix_article
5 savon 400
6 carnet 500
7 ampoule 1000

voilà maintenant presqu'un mois que j'essaie d'y parvenir en vain. Merci d'avance pour votre précieuse expertise.


Code mysql : 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
 
<?php
include("connex.php");
if(isset($_POST['inscr'])&&(@$ordre_client=@$_POST['ordre_client'])&&(@$article=@$_POST['article'])&&(@$qte=@$_POST['qte'])&&(@$prix_article=@$_POST['prix_article']))
 
 
 if(isset($_POST["ordre_client"])&&($_POST["article"])&&($_POST["prix_article"])&&($_POST["qte"])&&!empty($_POST["ordre_client"])&&!empty($_POST["article"])&&!empty($_POST["prix_article"])&&!empty($_POST["qte"])){
try{
// Connexion au serveur
$dbco = new PDO("mysql:host=$host;dbname=$dbname",$username,$password);
$dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
//Ajout de la valeur dans la table
$sth = $dbco->prepare("INSERT INTO t_article(ordre_client,article,prix_article,qte)
VALUES(:ordre_client,:article,:prix_article,:qte)");
$sth->bindParam(':ordre_client',$ordre_client);
$sth->bindParam(':article',$article);
$sth->bindParam(':prix_article',$prix_article);
$sth->bindParam(':qte',$qte);
$sth->execute();
}
catch(PDOException $e){
echo 'Impossible de traiter les données. Erreur : '.$e->getMessage();
}
}
?>
 
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
include('connex.php');
/* On récupère si elle existe la valeur de l'article envoyée par le formulaire */
$idr = isset($_POST['article'])?$_POST['article']:null;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="formulaire1.css">
<link rel="stylesheet" href="deroulant2.css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un prix selon l'article choisi</title>
<meta name="description" content="Listes déroulantes dynamiques inter-dépendantes" />
<meta name="keywords" content="" />
<meta name="author" content="Cyrano" />
<meta name="generator" content="Zend Studio Environnement et WebExpert 5" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="Pragma" content="no-cache" />
</head>
<body style="font-family: verdana, helvetica, sans-serif; font-size: 85%">
<?php
if(isset($_POST['inscr']) && isset($_POST['prix_article']) && $_POST['prix_article'] != "")
{
    $article_selectionne = $_POST['article'];
    $prix_selectionne = $_POST['prix_article'];
?>
<p>Vous avez sélectionné le prix <?php echo($prix_selectionne); ?> de l'article <?php echo($article_selectionne); ?></p>
<?php
}
?>
<?php
/* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
*  car on aura besoin de la connexion un peu plus loin dans le script */
$connexion = mysqli_connect($host, $username, $password);
if($connexion != false)
{
    $choixbase = mysqli_select_db($connexion, $dbname);
    $sql1 = "SELECT * FROM t_reception ORDER BY id";
    $rech_articles = mysqli_query($connexion,$sql1);
    $id = array();
    $article = array();
    /* On active un compteur pour les articles */
    $nb_articles = 0;
    if($rech_articles != false)
    {
        while($ligne_article = mysqli_fetch_array($rech_articles))
        {
			array_push($id, $ligne_article['id']);
			array_push($article, $ligne_article['article']);
            /* On incrémente le compteur */
            $nb_articles++;
        }
    }
    ?>
 
<fieldset style="border: 3px double #333399" class="journalier_affecte">
<legend>Sélectionnez un article</legend>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post"  id="chgdept" class="form1">
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspN°Ordre:&nbsp&nbsp&nbsp&nbsp<select type="int" name="ordre_client" id="ordre_client" class="liste6" required />
<?php
      for($t = 1; $t < 100; $t++)
      {
        $selected = (isset($_POST['ordre_client']) and $_POST['ordre_client'] == $t)?'selected="selected"':'';
        echo '<option value="'.$t.'" '.$selected.'>'.$t.'</option>';
      }
     ?>
</select><br>
 
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<select type="varchar" name="article" id="article" onchange="document.forms['chgdept'].submit();" required>
  <option value="-1">- - - Choisissez un article- - -</option>
    <?php
    for($i=0; $i < $nb_articles; $i++)
    {
?>
  <option value="<?php echo($id[$i]); ?>"<?php echo((isset($idr) && $idr == $id[$i])?" selected=\"selected\"":null); ?>><?php echo($article[$i]); ?></option>
<?php
    }
    ?>
</select>
    <?php
    mysqli_free_result($rech_articles);
    /* On commence par vérifier si on a envoyé un numéro d'article et le cas échéant s'il est différent de -1 */
    if(isset($idr) && $idr != -1)
    {
        /* Cération de la requête pour avoir les prix */
        $sql2 = "SELECT * FROM t_reception WHERE id = $idr ORDER BY id";
        if($connexion != false)
        {
            $rech_prix = mysqli_query($connexion, $sql2);
            /* Un petit compteur pour les prix */
            $nd = 0;
            /* On crée deux tableaux pour les numéros et les prix */
            $id_prix = array();
            $prix_article = array();
            /* On va mettre les numéros et les prix dans les deux tableaux */
            while($ligne_prix = mysqli_fetch_array($rech_prix))
            {
                array_push($id_prix, $ligne_prix['id']);
                array_push($prix_article, $ligne_prix['prix_article']);
                $nd++;
            }
            /* Maintenant on peut construire la liste déroulante */
            ?>
<select type="int" name="prix_article" id="prix_article">
            <?php  
            for($d = 0; $d<$nd; $d++)
            {
                ?>
  <option value="<?php echo($prix_article[$d]); ?>"<?php echo((isset($prix_selectionne) && $prix_selectionne == $prix_article[$d])?" selected=\"selected\"":null); ?>><?php echo($prix_article[$d]); ?></option>
                <?php
            }
?>
</select>
<?php
        }
        /* Un petit coup de balai */
        mysqli_free_result($rech_prix);
    }
?><br><br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspQuantité:&nbsp&nbsp&nbsp&nbsp<input type="int" name="qte" class="liste6" required /><br><br>
<br>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input type="submit" name="inscr" id="inscr" value="Envoyer" />
</form>
</fieldset>
 
<?php
    /* Terminé, on ferme la connexion */
    mysqli_close($connexion);
}
else
{
    /* Si on arrive là, c'est pas bon signe, il faut vérifier les 
    * paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
</body>
</html>