Liste déroulante dynamique

Fermé
blackmefias_3350 Messages postés 706 Date d'inscription dimanche 20 septembre 2020 Statut Membre Dernière intervention 8 mars 2024 - 9 févr. 2022 à 19:13
blackmefias_3350 Messages postés 706 Date d'inscription dimanche 20 septembre 2020 Statut Membre Dernière intervention 8 mars 2024 - 17 févr. 2022 à 23:24
Bonjour,
je crée un site et dans celui-ci j'ai un formulaire ou l'utilisateur doit entrer certaine données titre, nom, prenom, adresse, code postal, localité, tel et mail .

mon soucis réside dans le choix du code postal et la localité,

j'aimerai que quand l'utilisateur choisi un code postal provenant d'une base de données T_codes_pos
le champs pour le code postal puisse afficher dans le champ localité , la localité et inversément

dont les champs sont les suivants :


et pour les clients, j'ai ceci :




mon formulaire ce constitue comme suit :


et voici le formulaire coté code html
<form method="post" action="controller.php">
<table align="center">
<td>Titre</td>
<td><Select name="titre" size="1">
<option>--Votre titre--</option>
<option>Melle</option>
<option>Me</option>
<option>Mr</option>
</Select> </td></tr>
<td>Nom :</td> <td><input type="text" name="name" value=""></td></tr>
<td>Prénom</td> <td><input type="text" name="prenom" value=""></td></tr>
<td>Adresse:</td><td><input type="text" name="adresse" value=""></td></tr>
<td>Code postal:</td>
<td><select name="codepost" id="numero" size="1">
<option>--code postal--</option>
<option >4920</option>
<option>4870</option>
</select></td></tr>
<td>Localité :</td>
<td><Select name="codepost" id="numero" size="1">
<option>--Localité--</option>
<option>Aywaille</option>
<option>Trooz</option>
</Select></td></tr>
<td>Tel: </td><td><input type="text" name="tel" value=""></td></tr>
<td>Mail :</td><td><input type="text" name="mail" value=""></td></tr>
<td colspan="100" align="center"><input type="submit" name="envoyer" value="Envoyez !"> </td>
<td colspan="100" align="center"><input type="reset" name="reset" value="recommencer"> </td>
</table>

</FORM>


code du formulaire coté php

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
//identifiants mysql
$host = "localhost";
$username = "root";
$password = "";
$database = "biens";
$table ="clients, t_code_pos";



$titre = $_POST["titre"];
$name = $_POST["name"];
$adresse = $_POST["adresse"];
$numero = $_POST["numero"];
$mail = $_POST["mail"];
if (!isset($name)){
die("S'il vous plaît entrez votre nom");
}
if (!isset($adresse)){
die("S'il vous plaît entrez votre adresse ");
}
if (!isset($numero)){
die("S'il vous plaît entrez votre code postal ");
}
if (!isset($mail) || !filter_var($mail, FILTER_VALIDATE_EMAIL)){
die("S'il vous plaît entrez votre adresse e-mail");
}
//Ouvrir une nouvelle connexion au serveur MySQL
$mysqli = new mysqli($host, $username, $password, $database, $table);

//Afficher toute erreur de connexion
if ($mysqli->connect_error) {
die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

//préparer la requête d'insertion SQL
$statement = $mysqli->prepare("INSERT INTO assurances (name, adresse, mail) VALUES(? , ?, ?, ?)");
//Associer les valeurs et exécuter la requête d'insertion
$statement->bind_param('ssss', $name, $adresse, $numero, $mail);

if($statement->execute()){
print "Salut " . $name . "!, Votre adresse est ". $adresse .",votre code postal est ". $numero ." ,votre adresse e-mail est ". $mail . " \n
ces informations sont-elle correcte ?" ;
}else{
print $mysqli->error;
}
}



?>


quand j'essaie mon formulaire j'ai ce message d'erreur :
.

j'ai beau regarder ou est la faute , mais je ne la vois pas, si quelqu'un peut m'aider , merci d'avance


Configuration: Windows / Edge 98.0.1108.43

6 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
9 févr. 2022 à 20:31
Bonjour
Dans ton code HTML, tu n'as aucun input ou select ayant comme attribut name "numero"
Tu as tel ou codepost..
2
blackmefias_3350 Messages postés 706 Date d'inscription dimanche 20 septembre 2020 Statut Membre Dernière intervention 8 mars 2024 58
Modifié le 9 févr. 2022 à 23:38
Bonjour Jordane45 ,

merci pour ton expertise , sans doute a force de chercher, et surtout de ne pas trouver, j'ai sans doute oublier de remettre l'attribut " Name = codepost " en Name =numero sur l'element <SELECT>.

un grand merci, car sans toit je tournerai encore en rond .

par contre, je ne sais comment faire pour que quand l'utilisateur sélectionne un code postal dans le champs <select name="numero" > mon formulaire puisse automatiquement fournir le nom de la localité dans l'autre <select name="numero"> car dans ma base de données, j'ai une table indépendante avec tous les codes postaux et localités et qui contient en lieu et place de ID , numero , et sur la table clients à la place d'avoir deux champs tels que code_postal et localité par exemple, ils sont remplacer par numero .

je ne sais pas si je me fais bien comprendre, dans ma table clients au lieu d'avoir les champs nom ; prenom ; adresse; code_postal; localite ; tel ; et mail , je veux que les champs soit nommé comme celà :

nom ; prenom; adresse ; NUMERO ; tel et mail . ce qui a pour but que le champ numero est relier de la table clients à la table t_code_pos dans mon cas via le champs numero .


je ne comprendrais pas pourquoi, je n'y arriverai pas, alors qu'avec les mêmes tables, dans Access , si je sélectionne dans le champ "codeLocalite" (liste déroulante indépentante) le code postal, l'autre champs "CodeLocalite " (liste déroulant indépendante aussi) et un troisième champs codeLocalite (liste dérulante indép.) mais non visible dans le formulaire celui-ci . ça marche très bien et se sans aucun code VBA ou autres .

en gros j'essaie de faire ceci mais en format web








j'ai encore beaucoup de pain sur la planche comme ont dit .
mais en tous cas , Merci encore Jordane45 ;)
0
blackmefias_3350 Messages postés 706 Date d'inscription dimanche 20 septembre 2020 Statut Membre Dernière intervention 8 mars 2024 58
12 févr. 2022 à 10:07
Un grand merci à toi Jordane45,

grâce à toi et ta la lumière, tu m'as éclairé sur le problème de mon formulaire et les listes déroulantes dynamique. en voici le résultat :

https://cjoint.com/c/LBmi3zc05Dx

bien sur, je dois encore peaufiné mon code afin que lorsque je "selectionne" un code postal, la localité s'affiche dans l'autre champ <select> portant les localités


par exemple, si je sélectionne 1000 dans le <Select> code postal , cette information renvoie directement le nom de la localité ( Bruxelles) dans le <select> localité , et inversément, de même, il ne suffit pas de sélectionné un code postal ou une localité, mais aussi de pouvoir la taper dans le champ. afin de simplifier l'usage de ces champs à l'utilisateur du formulaire.
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
16 févr. 2022 à 22:48
Bonsoir
Si le problème est résolu n'oubliez pas :
1: de signaler en utilisant les
●●●
à la première question.
2: de dire comment a été solutionné ce problème, cela aidera les autres. Merci d'avance !
--
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
blackmefias_3350 Messages postés 706 Date d'inscription dimanche 20 septembre 2020 Statut Membre Dernière intervention 8 mars 2024 58
17 févr. 2022 à 15:54
Bonjour Txiki,

Ce post à moitié résolut, il faudrait maintenant que l'utilisateur puisse quand il sélectionne un CP (code postal) dans le formulaire via le select code postal , que le mon deuxième SELECT "localité " puisse affiché directement la localité , et non demander à l'utilisateur d'aller sur le "SELECT" pour faire un choix.

j'y travaille, mais cela me prends du temps et dès que j'aurais trouvé la solution, j'y joindrais ma solution .

en attendant, je laisse ce post comme non résolut.

et pour le bonheur, c'est surtout de le donner sans rien attendre en retour.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
17 févr. 2022 à 17:14
Il te faut donc ouvrir une nouvelle discussion propre à ce "nouveau" problème ( et mettre cette discussion en résolu )
Il te faudra d'ailleurs, ouvrir cette nouvelle question dans le forum Javascript ( et penser à poster le code complet de ta page ( formulaire + code javascript déjà testé )
A noter que les listes liées.. il y a des tonnes d'exemples sur le net à ce sujet ( et ici aussi)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
17 févr. 2022 à 16:35
Salut blackmefias, non, non, tu as tout à fait raison !
Espérons que tu trouve une solution, pour toi, bien sur !.
(il y a trop longtemps que je ne code pas, hélas !). J'ai été très malade.
Je suis certain que c'est réalisable avec une requête dans le formulaire.... peut-être ?
0
blackmefias_3350 Messages postés 706 Date d'inscription dimanche 20 septembre 2020 Statut Membre Dernière intervention 8 mars 2024 58
Modifié le 17 févr. 2022 à 23:29
Re,

pour ceux et celles qui souhaite voir ma progression, je vais vous montrer et expliquer ma table t_codes_post .

tout d'abord voici sa structure :


comme vous pouvez le voir sur cette table il n' y a pas de ID_CodesPost par exemple , mais simplement Numero qui sert de champ ID , ce champ est suivit par les champs Code_pos ; Commune_min ; Code_pos_Commune et pays


je vous montre un exemple des données inscrit dans la table :



dans l'exemple du formulaire en MS_Access ici plus haut, en mode création vous pouvez voir que j'ai utilisé 3 listes déroulante , une sert pour le code postal , une autre pour la localité, quand à la troisième , elle sert à récupérer le ID de table T_codes_pos et insère les données dans la table t_clients sur le champs codeLocalité.. c'est grace à cette astuce, que je peux afficher directement la localité dans la liste déroulante localité si je choisis un code postal et inversément .

bien sur il faut changer quelques paramètres dans l'onglet Données, le nombre de colones liée à 3. Et dans Format , Nbre Colonnes = 3 ainsi que largeur de colonnes il faut mettre 3cm;0cm;0cm




sur la liste déroulante code postal (voir étiquette) onglet Données :

Colonnes liée = 3


onglet Format :

Nbre colonnes = 3

Largeurs colonnes = 0cm;3cm

enfin sur la liste déroulante Localité (voir étiquette) Onglet Données :

Colonnes liée = 3

Onglet Format :

Nbre colonnes = 3

Largeurs colonnes = 0cm; 0cm;3cm


Maintenant, voici ce que j'ai fais avec du HTML, PHP, MySQL , CSS




rien de spécial dans le formulaire sauf qu'il contient deux <SELECT>



ici dessus, vous pouvez voir que les liste déroulante sont reliée à la table T_codes_pos et seusl les champs Code_pos et Commune_min est visible , le champs Numero pour des raisons estétiques n'a pas besoin d'être vu par l'utilisateur

normalement, ce champs ne doit montrer que les codes postaux . comme ci-dessous avec les localités

.

ce qui me reste à faire donc maintenant c'est juste de faire en fonction du premier choix soit le code postal.
Pouvoir afficher dans la liste des localité , la localité correspondante au code postal et aussi au Numero (id)

car le Code Postal de 1050 peux contenir plusieurs localités par exemple Bruxelles (brussels) ou Ixelles (elsene)
() = nom des communes en flamand.

d'où la complexité .

Notez que la les Tables t_clients et T_codes_pos sont liées.

PS : je ne suis pas un pro du codage , j'ai pas mal de notions , mais je ne suis pas Analyste programmeur.
0