Comment insérer dans une table Mysql les valeurs affichées de deux listes déroulantes liées
Posté : 01 nov. 2022, 02:49
Bonjour,
Je veux insérer dans une table les deux valeurs liées qui s'affichent suite à la sélection de l'une.
A l'aide du code ci-dessous, lorsque je soumets mon formulaire, seule l'id s'insère dans la colonne id, les colonnes region et department affichent NULL , alors que je veux qu'il soit insérer la région et le département correspondant. Après plusieurs tentatives vaines, je vous remercie d'avance pour votre précieuse expertise!
Je veux insérer dans une table les deux valeurs liées qui s'affichent suite à la sélection de l'une.
A l'aide du code ci-dessous, lorsque je soumets mon formulaire, seule l'id s'insère dans la colonne id, les colonnes region et department affichent NULL , alors que je veux qu'il soit insérer la région et le département correspondant. Après plusieurs tentatives vaines, je vous remercie d'avance pour votre précieuse expertise!
Code : Tout sélectionner
<?php
include(connex.php);
if(isset($_POST['ok'])&&($_POST["region"])&&($_POST["department"])&&!empty($_POST["region"])&&!empty($_POST["department"])){
try{
// Connexion au serveur
$dbco = new PDO("mysql:host=$serveur;dbname=$base",$user,$mdp);
$dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//Ajout de la valeur dans la table
$sth = $dbco->prepare("INSERT INTO resume_region(region,department)
VALUES(:region,:department)");
$sth->bindParam(':region',$region);
$sth->bindParam(':department',$department);
$sth->execute();
}
catch(PDOException $e){
echo 'Impossible de traiter les données. Erreur : '.$e->getMessage();
}
}
?>
<?php
// connexion à externalisé, utilisation de PDO pour l'exemple et la belle requête préparée plus bas (qui t'évite une injection SQL au passage)
include(connex.php);
$options = [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
PDO::ATTR_ERRMODE=> PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false];
$connexion = new PDO('mysql:host='.$serveur.';dbname='.$base,$user,$mdp,$options);
if ($connexion === false) {
$msgCnxSQL = 'Un incident s\'est produit lors de la connexion à la base de données, veuillez essayer à nouveau ultérieurement';
}
?>
<!Doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Liens_utiles</title>
</head>
<body>
<?php
// si le message existe c'est qu'il y a un gros soucis. on l'affiche et on arrete le script (mais un doc html correct et propre).
if(!empty($msgCnxSQL)){
echo <<<html
<div class="erreur">{$msgCnxSQL}</div>
</body>
</html>
html;
die(666);
}
?>
<header>
<?php
?>
</header>
<h3>Choix de la region</h3>
<?php
if (isset($_POST['ok']) && isset($_POST['department'])&& $_POST['department'] != "") {
echo <<<html
<p>Vous avez sélectionné le departement {$_POST['department']} dans la region {$_POST['region']}
</p>
html;
}
?>
<h3>Trouver un departement</h3>
<form method="post" name="chgdepart">
<fieldset>
<legend>Sélectionnez une region</legend>
<select type="varchar" name="region" id="region" onchange="document.forms['chgdepart'].submit();" required>
<option value="">- - - Choisissez une catégorie - - -</option>
<?php
$rech_region = $connexion->query('SELECT id_region, region FROM t_region ORDER BY id_region');
if ($rech_region !== false) {
while ($data = $rech_region->fetch(PDO::FETCH_ASSOC)) {
echo '<option value="',$data['id_region'],'"';
if(!empty($_POST['region']) && $_POST['region'] == $data['id_region']){
echo ' selected="selected"';
}
echo '>',$data['region'],'</option>';
}
$rech_region->closeCursor();
}
echo '</select><br />';
if (!empty($_POST['region'])){
/* Cération de la requête pour avoir les départements de cette région */
$stmt = $connexion->prepare('SELECT id_departement,department FROM departement WHERE id_region = :id ORDER BY id_departement');
$stmt->bindParam(':id',$_POST['region']);
$stmt->execute();
echo '<select type="varchar" name="department" id="department">';
while($data = $stmt->fetch(PDO::FETCH_ASSOC)){
echo '<option value="',$data['id_departement'],'"';
if(!empty($_POST['department']) && $_POST['department'] == $data['id_departement']){
echo ' selected="selected"';
}
echo '>',$data['department'],'</option>';
}
$stmt->closeCursor();
echo '</select>';
}
?>
<br />
<input type="submit" name="ok" id="ok" value="Envoyer" />
</fieldset>
</form>
</body>
</html>