3 listes déroulantes php sql envoi resultat vers lien html
Résolu/Fermé
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
-
Modifié par Chris 94 le 26/08/2013 à 20:00
mad92men Messages postés 130 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 10 novembre 2020 - 3 sept. 2015 à 22:10
mad92men Messages postés 130 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 10 novembre 2020 - 3 sept. 2015 à 22:10
A voir également:
- 3 listes déroulantes php sql envoi resultat vers lien html
- Lien url - Guide
- Créer un lien pour partager des photos - Guide
- Verifier un lien - Guide
- Lien copié - Forum Téléphones & tablettes Android
- Lien de rajout pour bara facebook - Forum Webmastering
15 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
Modifié par Chris 94 le 26/08/2013 à 20:01
Modifié par Chris 94 le 26/08/2013 à 20:01
Voila une solution a qqs erreur de frappe près:
<?php /* Variables de connexion : ajustez ces paramètres selon votre propre environnement */ $serveur = "xxxxxxxxxx"; $admin = "xxxxxxxxxx"; $mdp = "xxxxxxxxxx"; $base = "xxxxxxxxxxxxx"; /* On récupère si elle existe la valeur de la région envoyée par le formulaire */ $idr = isset($_POST['region'])?$_POST['region']: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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" /> <title>Sélectionner un département selon la région choisie</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%"> <h3>Version 100% PHP</h3> <p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p> <?php //recupération des selections éventuelles sinon init à vide $region=isset($_POST['region']) ? $_POST['region'] : ""; $departement=isset($_POST['departement']) ? $_POST['departement'] : ""; // //connexion a mysql contarirement à ce qui était dit mysql suffit pendant tout le scipt //par contre c'est dépassé il faut utiliser PDO:: //pour le moment une solution avec mysql $connexion = mysql_pconnect($serveur, $admin, $mdp) or die('Pb connexion au serveur '.mysql_error()); $choixbase = mysql_select_db($base, $connexion) or die('Pb sélection base '.mysql_error()); ?> <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept"> <fieldset style="border: 3px double #333399"><legend>Sélectionnez une région</legend> <select name="region" id="region" onchange="submit();"> <option value="-1">- - - Choisissez une région - - -</option> <?php $sql1 = "SELECT id_region, region FROM region ORDER BY region"; //par orde alpa des noms c'est qd mêm mieux ! $rech_regions = mysql_query($sql1) or die('Pb requette régions '.mysql_error()); while($ligne = mysql_fetch_assoc($rech_regions)){ //pas besoin de passer par des array //generation de la ligne option $option= '<option value="'.$ligne['id_region'].'" '; if($region==$ligne['id_region']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant $option.=' >'.$ligne['region'].'</option>'; //affichage de la ligne option echo $option; } mysql_free_result($rech_regions); ?> </select> <?php //liste departements if(isset($_POST['region'])){ if($_POST['region']==-1){ echo 'Vous devez chosir une région'; }else{ ?> <select name="departement" id="departement" onchange="submit();"> <option value="-1">- - - Choisissez un département - - -</option> <?php $sql2 = "SELECT id_departement, departement FROM departement ORDER BY departement"; //par orde alpa des noms c'est qd mêm mieux ! $rech_departement = mysql_query($sql2) or die('Pb requette departement '.mysql_error()); while($ligne = mysql_fetch_assoc($rech_departement)){ //generation de la ligne option $option= '<option value="'.$ligne['id_departement'].'" '; if($departement==$ligne['id_departement']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant $option.=' >'.$ligne['departement'].'</option>'; //affichage de la ligne option echo $option; } mysql_free_result($rech_departement); ?> </select> <?php } } //liste villes if(isset($_POST['departement'])){ if($_POST['departement']==-1){ echo 'Vous devez chosir un departement'; }else{ ?> <select name="ville" id="ville"> <option value="-1">- - - Choisissez une ville - - -</option> <?php $sql3 = "SELECT id_ville, ville FROM ville ORDER BY ville"; //par orde alpa des noms c'est qd mêm mieux ! $rech_ville = mysql_query($sql3) or die('Pb requette ville '.mysql_error()); while($ligne = mysql_fetch_assoc($rech_ville)){ //generation de la ligne option $option= '<option value="'.$ligne['id_ville'].'" '; if($departement==$ligne['id_ville']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant $option.=' >'.$ligne['ville'].'</option>'; //affichage de la ligne option echo $option; } mysql_free_result($rech_ville); ?> </select> <br /><input type="submit" name="ok" id="ok" value="Envoyer" /> <?php } } ?> </fieldset> </form> <?php /* Terminé, on ferme la connexion */ mysql_close($connexion); ?> <p><a href="./index2.php" title="Aller vers la version JavaScript">Aller vers la version JavaScript</a></p> </body> </html>
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
27 août 2013 à 08:25
27 août 2013 à 08:25
est ce que tu as essayé de la créer directement avec phpMyadmin ?
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
27 août 2013 à 08:46
27 août 2013 à 08:46
encore merci pour ta reponse rapide Alain,
j'ai essayé de retaper le code à la main mais je n'arrive pas, il y a normalement un probleme ici
CREATE TABLE 'ville' (
'id_ville' char(2) NOT NULL default '',
'ville' varchar(50) NOT NULL default '',
'id_departement' tinyint(4) NOT NULL default '0',
PRIMARY KEY ('id_ville),
KEY 'id_departement' ('id_departement')
);
mais comme je connais rien en sql j'arrive pas a le résoudre.
j'ai essayé de retaper le code à la main mais je n'arrive pas, il y a normalement un probleme ici
CREATE TABLE 'ville' (
'id_ville' char(2) NOT NULL default '',
'ville' varchar(50) NOT NULL default '',
'id_departement' tinyint(4) NOT NULL default '0',
PRIMARY KEY ('id_ville),
KEY 'id_departement' ('id_departement')
);
mais comme je connais rien en sql j'arrive pas a le résoudre.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
27 août 2013 à 09:37
27 août 2013 à 09:37
tu fais tes essais en local avec wamp ou chez un hebergeur.
dans phpmyadmin il ne faut pas taper les codes à la main mais utiliser les outils
créer table
dans phpmyadmin il ne faut pas taper les codes à la main mais utiliser les outils
créer table
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
27 août 2013 à 10:16
27 août 2013 à 10:16
Très bien j'essayerai ça ce soir, par contre t'aurais pas une piste pour mon problème des villes qui pointent vers des liens html? J'ai pas trouvé de réponse nul part :(
Est ce que c'est possible de configurer ça directement dans une table et d'accorder un lien a chaque ville?
Est ce que c'est possible de configurer ça directement dans une table et d'accorder un lien a chaque ville?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
29 août 2013 à 19:11
29 août 2013 à 19:11
tout dépend comment est fait ton lien
si lyon pointe vers lyon.html c'est simple, pas besoin de table
si plus compliqué il faut passer par une table
et lorsque tu reçoit les données du formulaire complet tu fait une interro base avec le nom de la ville pour avoir le lien
si lyon pointe vers lyon.html c'est simple, pas besoin de table
si plus compliqué il faut passer par une table
et lorsque tu reçoit les données du formulaire complet tu fait une interro base avec le nom de la ville pour avoir le lien
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
29 août 2013 à 23:53
29 août 2013 à 23:53
merci pour la réponse, je viens de réussir de lier les 3 tables, en effet c'était beaucoup plus facile en passant par phpmyadmin. maintenant je rencontre un nouveau problème, quand je choisi une région j'ai tous les départements qui s'affichent dans la 2eme liste.
pour les liens, malheureusement ils n'ont pas de structure basée sur le nom de la ville, exemple : pour lyon --->lyon-blala.html
paris---->machin-paris.html
aurais-tu un petit exemple à me montrer pour que je puisse intégrer un lien à ma base.
merci beaucoup pour ton aide.
pour les liens, malheureusement ils n'ont pas de structure basée sur le nom de la ville, exemple : pour lyon --->lyon-blala.html
paris---->machin-paris.html
aurais-tu un petit exemple à me montrer pour que je puisse intégrer un lien à ma base.
merci beaucoup pour ton aide.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
30 août 2013 à 14:03
30 août 2013 à 14:03
salut un petit oubli de condition dans les deux requettes depart et ville
pour ta table liens_villes
id_lien id_ville ville lien
1 10 lyon machin-lyon.html
et tu fais une requette
$sql2 = "SELECT id_departement, departement FROM departement WHERE id_region='".$regione."' ORDER BY departement"; $sql3 = "SELECT id_ville, ville FROM ville WHERE id_departement='".$departement."'ORDER BY ville";
pour ta table liens_villes
id_lien id_ville ville lien
1 10 lyon machin-lyon.html
et tu fais une requette
$ville=isset($_POST['ville']) ? $_POST['ville'] : ""; $sql3 = "SELECT lien, ville FROM liens_villes WHERE id_ville='".$ville."'";
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
30 août 2013 à 22:44
30 août 2013 à 22:44
salut alain, j'ai essayé ce que tu ma donné et j'ai effectué plusieurs tests mes mais toujours rien je pense que j'ai mal placé le code de la requette qui envoi vers le lien,
voici tout le code :
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "xxxxxxxx";
$admin = "xxxxxxx";
$mdp = "xxxxxxxxx";
$base = "xxxxxxxxxxx";
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['region'])?$_POST['region']: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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un département selon la région choisie</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%">
<h3>Version 100% PHP</h3>
<p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p>
<?php
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "mysql51-75.perso";
$admin = "changerezbdstech";
$mdp = "6X8pu98w";
$base = "changerezbdstech";
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['region'])?$_POST['region']: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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un département selon la région choisie</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%">
<h3>Version 100% PHP</h3>
<p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p>
<?php
//recupération des selections éventuelles sinon init à vide
$region=isset($_POST['region']) ? $_POST['region'] : "";
$departement=isset($_POST['departement']) ? $_POST['departement'] : "";
//
//connexion a mysql contarirement à ce qui était dit mysql suffit pendant tout le scipt
//par contre c'est dépassé il faut utiliser PDO::
//pour le moment une solution avec mysql
$connexion = mysql_pconnect($serveur, $admin, $mdp) or die('Pb connexion au serveur '.mysql_error());
$choixbase = mysql_select_db($base, $connexion) or die('Pb sélection base '.mysql_error());
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399"><legend>Sélectionnez une région</legend>
<select name="region" id="region" onchange="submit();">
<option value="-1">- - - Choisissez une région - - -</option>
<?php
$sql1 = "SELECT id_region, region FROM region ORDER BY region"; //par orde alpa des noms c'est qd mêm mieux !
$rech_regions = mysql_query($sql1) or die('Pb requette régions '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_regions)){
//pas besoin de passer par des array
//generation de la ligne option
$option= '<option value="'.$ligne['id_region'].'" ';
if($region==$ligne['id_region']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['region'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_regions);
?>
</select>
<?php
//liste departements
if(isset($_POST['region'])){
if($_POST['region']==-1){
echo 'Vous devez chosir une région';
}else{
?>
<select name="departement" id="departement" onchange="submit();">
<option value="-1">- - - Choisissez un département - - -</option>
<?php
$sql2 = "SELECT id_departement, departement FROM departement WHERE id_region='".$region."' ORDER BY departement";
$sql3 = "SELECT id_ville, ville FROM ville WHERE id_departement='".$departement."'ORDER BY ville";
$rech_departement = mysql_query($sql2) or die('Pb requette departement '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_departement)){
//generation de la ligne option
$option= '<option value="'.$ligne['id_departement'].'" ';
if($departement==$ligne['id_departement']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['departement'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_departement);
?>
</select>
<?php
}
}
//liste villes
if(isset($_POST['departement'])){
if($_POST['departement']==-1){
echo 'Vous devez chosir un departement';
}else{
?>
<select name="ville" id="ville">
<option value="-1">- - - Choisissez une ville - - -</option>
<?php
$sql3 = "SELECT id_ville, ville FROM ville ORDER BY ville";
$rech_ville = mysql_query($sql3) or die('Pb requette ville '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_ville)){
//generation de la ligne option
$option= '<option value="'.$ligne['id_ville'].'" ';
if($departement==$ligne['id_ville']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['ville'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_ville);
?>
<?php
$ville=isset($_POST['ville']) ? $_POST['ville'] : "";
$sql3 = "SELECT lien, ville FROM liens_villes WHERE id_ville='".$ville."'";
?>
</select>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
<?php
}
}
?>
</fieldset>
</form>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
?>
<p><a href="./index2.php" title="Aller vers la version JavaScript">Aller vers la version JavaScript</a></p>
</body>
</html>
merci pour ton aide
voici tout le code :
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "xxxxxxxx";
$admin = "xxxxxxx";
$mdp = "xxxxxxxxx";
$base = "xxxxxxxxxxx";
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['region'])?$_POST['region']: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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un département selon la région choisie</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%">
<h3>Version 100% PHP</h3>
<p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p>
<?php
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "mysql51-75.perso";
$admin = "changerezbdstech";
$mdp = "6X8pu98w";
$base = "changerezbdstech";
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['region'])?$_POST['region']: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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un département selon la région choisie</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%">
<h3>Version 100% PHP</h3>
<p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p>
<?php
//recupération des selections éventuelles sinon init à vide
$region=isset($_POST['region']) ? $_POST['region'] : "";
$departement=isset($_POST['departement']) ? $_POST['departement'] : "";
//
//connexion a mysql contarirement à ce qui était dit mysql suffit pendant tout le scipt
//par contre c'est dépassé il faut utiliser PDO::
//pour le moment une solution avec mysql
$connexion = mysql_pconnect($serveur, $admin, $mdp) or die('Pb connexion au serveur '.mysql_error());
$choixbase = mysql_select_db($base, $connexion) or die('Pb sélection base '.mysql_error());
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399"><legend>Sélectionnez une région</legend>
<select name="region" id="region" onchange="submit();">
<option value="-1">- - - Choisissez une région - - -</option>
<?php
$sql1 = "SELECT id_region, region FROM region ORDER BY region"; //par orde alpa des noms c'est qd mêm mieux !
$rech_regions = mysql_query($sql1) or die('Pb requette régions '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_regions)){
//pas besoin de passer par des array
//generation de la ligne option
$option= '<option value="'.$ligne['id_region'].'" ';
if($region==$ligne['id_region']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['region'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_regions);
?>
</select>
<?php
//liste departements
if(isset($_POST['region'])){
if($_POST['region']==-1){
echo 'Vous devez chosir une région';
}else{
?>
<select name="departement" id="departement" onchange="submit();">
<option value="-1">- - - Choisissez un département - - -</option>
<?php
$sql2 = "SELECT id_departement, departement FROM departement WHERE id_region='".$region."' ORDER BY departement";
$sql3 = "SELECT id_ville, ville FROM ville WHERE id_departement='".$departement."'ORDER BY ville";
$rech_departement = mysql_query($sql2) or die('Pb requette departement '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_departement)){
//generation de la ligne option
$option= '<option value="'.$ligne['id_departement'].'" ';
if($departement==$ligne['id_departement']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['departement'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_departement);
?>
</select>
<?php
}
}
//liste villes
if(isset($_POST['departement'])){
if($_POST['departement']==-1){
echo 'Vous devez chosir un departement';
}else{
?>
<select name="ville" id="ville">
<option value="-1">- - - Choisissez une ville - - -</option>
<?php
$sql3 = "SELECT id_ville, ville FROM ville ORDER BY ville";
$rech_ville = mysql_query($sql3) or die('Pb requette ville '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_ville)){
//generation de la ligne option
$option= '<option value="'.$ligne['id_ville'].'" ';
if($departement==$ligne['id_ville']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['ville'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_ville);
?>
<?php
$ville=isset($_POST['ville']) ? $_POST['ville'] : "";
$sql3 = "SELECT lien, ville FROM liens_villes WHERE id_ville='".$ville."'";
?>
</select>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
<?php
}
}
?>
</fieldset>
</form>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
?>
<p><a href="./index2.php" title="Aller vers la version JavaScript">Aller vers la version JavaScript</a></p>
</body>
</html>
merci pour ton aide
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
30 août 2013 à 22:58
30 août 2013 à 22:58
<?php ////attention cette partie doit être au début de la page if(isset($_POST['ok'])){ //le bouton ok du formulaire a été cliqué $ville=isset($_POST['ville']) ? $_POST['ville'] : ""; $sql3 = "SELECT lien, ville FROM liens_villes WHERE id_ville='".$ville."'"; $rech_lien= mysql_query($sql3) or die('Pb requette lien '.mysql_error()); $ligne=mysql_fetch_assoc($rech_lien); $lien=$ligne['lien']; //on redirige directement vers la page du lien header('Location:'.$lien.''); } /// echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"); /* Variables de connexion : ajustez ces paramètres selon votre propre environnement */ $serveur = "xxxxxxxx"; $admin = "xxxxxxx"; $mdp = "xxxxxxxxx"; $base = "xxxxxxxxxxx"; /* On récupère si elle existe la valeur de la région envoyée par le formulaire */ $idr = isset($_POST['region'])?$_POST['region']: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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" /> <title>Sélectionner un département selon la région choisie</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%"> <h3>Version 100% PHP</h3> <p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p> <?php /* Variables de connexion : ajustez ces paramètres selon votre propre environnement */ $serveur = "mysql51-75.perso"; $admin = "changerezbdstech"; $mdp = "6X8pu98w"; $base = "changerezbdstech"; /* On récupère si elle existe la valeur de la région envoyée par le formulaire */ $idr = isset($_POST['region'])?$_POST['region']: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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" /> <title>Sélectionner un département selon la région choisie</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%"> <h3>Version 100% PHP</h3> <p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p> <?php //recupération des selections éventuelles sinon init à vide $region=isset($_POST['region']) ? $_POST['region'] : ""; $departement=isset($_POST['departement']) ? $_POST['departement'] : ""; // //connexion a mysql contarirement à ce qui était dit mysql suffit pendant tout le scipt //par contre c'est dépassé il faut utiliser PDO:: //pour le moment une solution avec mysql $connexion = mysql_pconnect($serveur, $admin, $mdp) or die('Pb connexion au serveur '.mysql_error()); $choixbase = mysql_select_db($base, $connexion) or die('Pb sélection base '.mysql_error()); ?> <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept"> <fieldset style="border: 3px double #333399"><legend>Sélectionnez une région</legend> <select name="region" id="region" onchange="submit();"> <option value="-1">- - - Choisissez une région - - -</option> <?php $sql1 = "SELECT id_region, region FROM region ORDER BY region"; //par orde alpa des noms c'est qd mêm mieux ! $rech_regions = mysql_query($sql1) or die('Pb requette régions '.mysql_error()); while($ligne = mysql_fetch_assoc($rech_regions)){ //pas besoin de passer par des array //generation de la ligne option $option= '<option value="'.$ligne['id_region'].'" '; if($region==$ligne['id_region']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant $option.=' >'.$ligne['region'].'</option>'; //affichage de la ligne option echo $option; } mysql_free_result($rech_regions); ?> </select> <?php //liste departements if(isset($_POST['region'])){ if($_POST['region']==-1){ echo 'Vous devez chosir une région'; }else{ ?> <select name="departement" id="departement" onchange="submit();"> <option value="-1">- - - Choisissez un département - - -</option> <?php $sql2 = "SELECT id_departement, departement FROM departement WHERE id_region='".$region."' ORDER BY departement"; $rech_departement = mysql_query($sql2) or die('Pb requette departement '.mysql_error()); while($ligne = mysql_fetch_assoc($rech_departement)){ //generation de la ligne option $option= '<option value="'.$ligne['id_departement'].'" '; if($departement==$ligne['id_departement']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant $option.=' >'.$ligne['departement'].'</option>'; //affichage de la ligne option echo $option; } mysql_free_result($rech_departement); ?> </select> <?php } } //liste villes if(isset($_POST['departement'])){ if($_POST['departement']==-1){ echo 'Vous devez chosir un departement'; }else{ ?> <select name="ville" id="ville"> <option value="-1">- - - Choisissez une ville - - -</option> <?php $sql3 = "SELECT id_ville, ville FROM ville WHERE id_departement='".$departement."'ORDER BY ville"; $rech_ville = mysql_query($sql3) or die('Pb requette ville '.mysql_error()); while($ligne = mysql_fetch_assoc($rech_ville)){ //generation de la ligne option $option= '<option value="'.$ligne['id_ville'].'" '; if($departement==$ligne['id_ville']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant $option.=' >'.$ligne['ville'].'</option>'; //affichage de la ligne option echo $option; } mysql_free_result($rech_ville); ?> </select> <br /><input type="submit" name="ok" id="ok" value="Envoyer" /> <?php } } ?> </fieldset> </form> <?php /* Terminé, on ferme la connexion */ mysql_close($connexion); ?> <p><a href="./index2.php" title="Aller vers la version JavaScript">Aller vers la version JavaScript</a></p> </body> </html>
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
1 sept. 2013 à 14:42
1 sept. 2013 à 14:42
merci alain pour l'aide que tu m'as apporté, j'ai intégré ton dernier script à ma page mais au moment de la validation ça me donne un message d'erreur
Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /homez.158/xxxxxxx/www/index1234.php on line 7
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /homez.158/changerezb/www/index1234.php on line 7
Pb requette lien Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
j'ai crée la dernière table comme tu m'as montré (voici deux screens de la table liens_villes https://www.cjoint.com/?CIboKTeJjIj https://www.cjoint.com/?CIboOYxRSbb )
sais-tu d'où ça vient cette erreur?? merci d'avance
Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /homez.158/xxxxxxx/www/index1234.php on line 7
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /homez.158/changerezb/www/index1234.php on line 7
Pb requette lien Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
j'ai crée la dernière table comme tu m'as montré (voici deux screens de la table liens_villes https://www.cjoint.com/?CIboKTeJjIj https://www.cjoint.com/?CIboOYxRSbb )
sais-tu d'où ça vient cette erreur?? merci d'avance
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
Modifié par baladur13 le 2/09/2013 à 22:40
Modifié par baladur13 le 2/09/2013 à 22:40
Houps j'ai oublié de déplacer la partie connexion à la BDD au début
<?php /* Variables de connexion : ajustez ces paramètres selon votre propre environnement */ $serveur = "xxxxxxxx"; $admin = "xxxxxxxxx"; $mdp = "xxxxxxx"; $base = "xxxxxxxx"; $connexion = mysql_pconnect($serveur, $admin, $mdp) or die('Pb connexion au serveur '.mysql_error()); $choixbase = mysql_select_db($base, $connexion) or die('Pb sélection base '.mysql_error()); if(isset($_POST['ok'])){ //le bouton ok du formulaire a été cliqué $ville=isset($_POST['ville']) ? $_POST['ville'] : ""; $sql3 = "SELECT lien, ville FROM liens_villes WHERE id_ville='".$ville."'"; $rech_lien= mysql_query($sql3) or die('Pb requette lien '.mysql_error()); $ligne=mysql_fetch_assoc($rech_lien); $lien=$ligne['lien']; //on redirige directement vers la page du lien header('Location:'.$lien.''); } /// echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"); /* On récupère si elle existe la valeur de la région envoyée par le formulaire */ $idr = isset($_POST['region'])?$_POST['region']: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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" /> <title>Sélectionner un département selon la région choisie</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%"> <h3>Version 100% PHP</h3> <p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p> <?php /* On récupère si elle existe la valeur de la région envoyée par le formulaire */ $idr = isset($_POST['region'])?$_POST['region']: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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" /> <title>Sélectionner un département selon la région choisie</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%"> <h3>Version 100% PHP</h3> <p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p> <?php //recupération des selections éventuelles sinon init à vide $region=isset($_POST['region']) ? $_POST['region'] : ""; $departement=isset($_POST['departement']) ? $_POST['departement'] : ""; // //connexion a mysql contarirement à ce qui était dit mysql suffit pendant tout le scipt //par contre c'est dépassé il faut utiliser PDO:: //pour le moment une solution avec mysql ?> <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept"> <fieldset style="border: 3px double #333399"><legend>Sélectionnez une région</legend> <select name="region" id="region" onchange="submit();"> <option value="-1">- - - Choisissez une région - - -</option> <?php $sql1 = "SELECT id_region, region FROM region ORDER BY region"; //par orde alpa des noms c'est qd mêm mieux ! $rech_regions = mysql_query($sql1) or die('Pb requette régions '.mysql_error()); while($ligne = mysql_fetch_assoc($rech_regions)){ //pas besoin de passer par des array //generation de la ligne option $option= '<option value="'.$ligne['id_region'].'" '; if($region==$ligne['id_region']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant $option.=' >'.$ligne['region'].'</option>'; //affichage de la ligne option echo $option; } mysql_free_result($rech_regions); ?> </select> <?php //liste departements if(isset($_POST['region'])){ if($_POST['region']==-1){ echo 'Vous devez chosir une région'; }else{ ?> <select name="departement" id="departement" onchange="submit();"> <option value="-1">- - - Choisissez un département - - -</option> <?php $sql2 = "SELECT id_departement, departement FROM departement WHERE id_region='".$region."' ORDER BY departement"; $rech_departement = mysql_query($sql2) or die('Pb requette departement '.mysql_error()); while($ligne = mysql_fetch_assoc($rech_departement)){ //generation de la ligne option $option= '<option value="'.$ligne['id_departement'].'" '; if($departement==$ligne['id_departement']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant $option.=' >'.$ligne['departement'].'</option>'; //affichage de la ligne option echo $option; } mysql_free_result($rech_departement); ?> </select> <?php } } //liste villes if(isset($_POST['departement'])){ if($_POST['departement']==-1){ echo 'Vous devez chosir un departement'; }else{ ?> <select name="ville" id="ville"> <option value="-1">- - - Choisissez une ville - - -</option> <?php $sql3 = "SELECT id_ville, ville FROM ville WHERE id_departement='".$departement."'ORDER BY ville"; $rech_ville = mysql_query($sql3) or die('Pb requette ville '.mysql_error()); while($ligne = mysql_fetch_assoc($rech_ville)){ //generation de la ligne option $option= '<option value="'.$ligne['id_ville'].'" '; if($departement==$ligne['id_ville']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant $option.=' >'.$ligne['ville'].'</option>'; //affichage de la ligne option echo $option; } mysql_free_result($rech_ville); ?> </select> <br /><input type="submit" name="ok" id="ok" value="Envoyer" /> <?php } } ?> </fieldset> </form> <?php /* Terminé, on ferme la connexion */ mysql_close($connexion); ?> <p><a href="./index2.php" title="Aller vers la version JavaScript">Aller vers la version JavaScript</a></p> </body> </html>
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
2 sept. 2013 à 22:32
2 sept. 2013 à 22:32
super un grand merci pour ton aide Alain, ça marche ! enfin on arrive encore à trouver des gens sympas ! Mille fois Merci
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
15 sept. 2013 à 23:34
15 sept. 2013 à 23:34
Salut Alain,
Je reviens vers toi pour une autre question,
Tout d'abord je tiens à te remercier pour ce script qui m'a vraiment beaucoup aidé à avancer dans mon projet.
J'ai essayé d'appliquer le script sur une autre page de mon site pour classer des produits avec trois listes déroulantes. Le problème est que sur certain produit je n'ai pas besoin d'utiliser trois listes déroulantes mais que deux afin de valider la recherche.
Penses-tu que cela est faisable en rajoutant une condition if??
Je reviens vers toi pour une autre question,
Tout d'abord je tiens à te remercier pour ce script qui m'a vraiment beaucoup aidé à avancer dans mon projet.
J'ai essayé d'appliquer le script sur une autre page de mon site pour classer des produits avec trois listes déroulantes. Le problème est que sur certain produit je n'ai pas besoin d'utiliser trois listes déroulantes mais que deux afin de valider la recherche.
Penses-tu que cela est faisable en rajoutant une condition if??
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
16 sept. 2013 à 09:57
16 sept. 2013 à 09:57
l'appel à la liste suivante se fait pas le onsubmit() dans la balise <select
tu peux par exemple rajouter une colonne dans ta BDD si par exemple elle vaut 2
tu testes et tu fais une balise select sans le onsubmit()
tu peux par exemple rajouter une colonne dans ta BDD si par exemple elle vaut 2
tu testes et tu fais une balise select sans le onsubmit()
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
16 sept. 2013 à 22:53
16 sept. 2013 à 22:53
salut alain,
Merci de m'avoir répondu,
J'ai effectué des tests en reprenant notre ancien exemple avec la BDD region
j'ai rajouté cela :
<select name="test" id="test">
<option value="2">- - - TEST - - -</option>
<?php
$sql2 = "SELECT id_test, departement FROM test WHERE id_region='".$region."' ORDER BY test";
$rech_test = mysql_query($sql2) or die('Pb requette '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_test)){
//generation de la ligne option
$option= '<option value="'.$ligne['id_test'].'" ';
if($departement==$ligne['id_test']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['test'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_test);
?>
</select>
<?php
}
}
//liste villes
if(isset($_POST['test'])){
if($_POST['test']==2){
echo 'Vous devez chosir un departement';
}else{
?>
et j'ai crée une nouvelle table "test" avec :
id_test test id_region
1 1 1
Je ne sais pas ou je mettrais les liens qui seront validés après la sélection de "test"?
J'ai ajouté la liste "test" et gardé les deux autres listes "departement" et "ville" pour
Pourrais-tu m'aider à trouver l'erreur. Je te remercie d'avance.
Merci de m'avoir répondu,
J'ai effectué des tests en reprenant notre ancien exemple avec la BDD region
j'ai rajouté cela :
<select name="test" id="test">
<option value="2">- - - TEST - - -</option>
<?php
$sql2 = "SELECT id_test, departement FROM test WHERE id_region='".$region."' ORDER BY test";
$rech_test = mysql_query($sql2) or die('Pb requette '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_test)){
//generation de la ligne option
$option= '<option value="'.$ligne['id_test'].'" ';
if($departement==$ligne['id_test']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['test'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_test);
?>
</select>
<?php
}
}
//liste villes
if(isset($_POST['test'])){
if($_POST['test']==2){
echo 'Vous devez chosir un departement';
}else{
?>
et j'ai crée une nouvelle table "test" avec :
id_test test id_region
1 1 1
Je ne sais pas ou je mettrais les liens qui seront validés après la sélection de "test"?
J'ai ajouté la liste "test" et gardé les deux autres listes "departement" et "ville" pour
Pourrais-tu m'aider à trouver l'erreur. Je te remercie d'avance.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
17 sept. 2013 à 18:38
17 sept. 2013 à 18:38
Salut, une solution en rajoutant un champ categorie dans la table region qui vaudra 2 ou 3 suivant si besoin de 2 ou 3 listes
<?php
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "xxxxxxxx";
$admin = "xxxxxxxxx";
$mdp = "xxxxxxx";
$base = "xxxxxxxx";
$connexion = mysql_pconnect($serveur, $admin, $mdp) or die('Pb connexion au serveur '.mysql_error());
$choixbase = mysql_select_db($base, $connexion) or die('Pb sélection base '.mysql_error());
if(isset($_POST['ok'])){
//le bouton ok du formulaire a été cliqué
$ville=isset($_POST['ville']) ? $_POST['ville'] : "";
$sql3 = "SELECT lien, ville FROM liens_villes WHERE id_ville='".$ville."'";
$rech_lien= mysql_query($sql3) or die('Pb requette lien '.mysql_error());
$ligne=mysql_fetch_assoc($rech_lien);
$lien=$ligne['lien'];
//on redirige directement vers la page du lien
header('Location:'.$lien.'');
}
///
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['region'])?$_POST['region']: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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un département selon la région choisie</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%">
<h3>Version 100% PHP</h3>
<p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p>
<?php
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['region'])?$_POST['region']:null;
$recherche_2_listes=false;
?>
<!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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un département selon la région choisie</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%">
<h3>Version 100% PHP</h3>
<p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p>
<?php
//recupération des selections éventuelles sinon init à vide
$region=isset($_POST['region']) ? $_POST['region'] : "";
$departement=isset($_POST['departement']) ? $_POST['departement'] : "";
//
//connexion a mysql contarirement à ce qui était dit mysql suffit pendant tout le scipt
//par contre c'est dépassé il faut utiliser PDO::
//pour le moment une solution avec mysql
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399"><legend>Sélectionnez une région</legend>
<select name="region" id="region" onchange="submit();">
<option value="-1">- - - Choisissez une région - - -</option>
<?php
$sql1 = "SELECT id_region, region FROM region ORDER BY region"; //par orde alpa des noms c'est qd mêm mieux !
$rech_regions = mysql_query($sql1) or die('Pb requette régions '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_regions)){
//pas besoin de passer par des array
//generation de la ligne option
$option= '<option value="'.$ligne['id_region'].'" ';
if($region==$ligne['id_region']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['region'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_regions);
?>
</select>
<?php
//liste departements
if(isset($_POST['region'])){
if($_POST['region']==-1){
echo 'Vous devez chosir une région';
}else{
$region=mysql_real_escape_string($_POST['region']);
//ci dessous j'ai rajouté une recherche de la categorie de la région chosie, il faut que tu rajoutes ce champ dans ta table regions et mettre a 2 celles ou tu as seulement besoin de 2 listes, tu mets les autres a 3
$sql2 = "SELECT id_region, categorie FROM region WHERE region='".."' ORDER BY region"; //par orde alpa des noms c'est qd mêm mieux !
$rech_regions2 = mysql_query($sql2) or die('Pb requette régions '.mysql_error());
$ligne2 = mysql_fetch_assoc($rech_regions2);
if($ligne2['categorie']==2){
$recherche_2_listes=true;
}
if($recherche_2_listes){
//si recherche sur 2 list eon fait une balise select sans onchnage=submit() donc au choix dans cette liste ça ne rpellerera pas la page pour la recherche ville
echo '<select name="departement" id="departement">';
}else{
//si 3 listes on laisse le onchenge=submit()
echo '<select name="departement" id="departement" onchange="submit();">';
}
?>
<option value="-1">- - - Choisissez un département - - -</option>
<?php
$sql2 = "SELECT id_departement, departement FROM departement WHERE id_region='".$region."' ORDER BY departement";
$rech_departement = mysql_query($sql2) or die('Pb requette departement '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_departement)){
//generation de la ligne option
$option= '<option value="'.$ligne['id_departement'].'" ';
if($departement==$ligne['id_departement']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['departement'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_departement);
?>
</select>
<?php
//il faut ausssi mettre le bouton si deux listes
if($recherche_2_listes){
echo '<br /><input type="submit" name="ok" id="ok" value="Envoyer" />';
}
}
}
//liste villes
if(isset($_POST['departement'])){
if($_POST['departement']==-1){
echo 'Vous devez chosir un departement';
}else{
?>
<select name="ville" id="ville">
<option value="-1">- - - Choisissez une ville - - -</option>
<?php
$sql3 = "SELECT id_ville, ville FROM ville WHERE id_departement='".$departement."'ORDER BY ville";
$rech_ville = mysql_query($sql3) or die('Pb requette ville '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_ville)){
//generation de la ligne option
$option= '<option value="'.$ligne['id_ville'].'" ';
if($departement==$ligne['id_ville']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['ville'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_ville);
?>
</select>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
<?php
}
}
?>
</fieldset>
</form>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
?>
<p><a href="./index2.php" title="Aller vers la version JavaScript">Aller vers la version JavaScript</a></p>
</body>
</html>
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
17 sept. 2013 à 21:41
17 sept. 2013 à 21:41
salut,
merci beaucoup d'avoir pris le temps à trouver une solution à mon problème,
j'ai rajouté un 3éme champ que j'ai nommé categorie dans ma table region
j'ai mis la valeur 2 sur mes deux premiers choix dans la liste region
et j'ai modifié
$sql2 = "SELECT id_region, categorie FROM region WHERE region='".$categorie."' ORDER BY region";
mais ça ne marche toujours pas, ça m'affiche toujours la troisième liste quand je slectionne la deuxième.
pour les liens j'ai rajouté id_depatement et departement a la table liens_villes
id_lien---id_ville---ville----id_depatement----departement----------------------lien
1----------vide-----vide----------1---------------departement_test-------------- www.test.fr
tu pense que je devrais rajouter un champs categorie à la table liens_villes???
merci beaucoup d'avoir pris le temps à trouver une solution à mon problème,
j'ai rajouté un 3éme champ que j'ai nommé categorie dans ma table region
j'ai mis la valeur 2 sur mes deux premiers choix dans la liste region
et j'ai modifié
$sql2 = "SELECT id_region, categorie FROM region WHERE region='".$categorie."' ORDER BY region";
mais ça ne marche toujours pas, ça m'affiche toujours la troisième liste quand je slectionne la deuxième.
pour les liens j'ai rajouté id_depatement et departement a la table liens_villes
id_lien---id_ville---ville----id_depatement----departement----------------------lien
1----------vide-----vide----------1---------------departement_test-------------- www.test.fr
tu pense que je devrais rajouter un champs categorie à la table liens_villes???
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
17 sept. 2013 à 23:08
17 sept. 2013 à 23:08
ta requette n'est pas bonne il ne faut pas mettre whre region=$ categorie
$region=mysql_real_escape_string($_POST['region']);
$sql2 = "SELECT id_region, categorie FROM region WHERE region='".$region."'";
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
17 sept. 2013 à 23:43
17 sept. 2013 à 23:43
J'avais essayé avec cette requette ça me fait toujours la meme chose quand je selectionne un choix de la deuxieme liste de la categorie 2 la troisieme liste s'affiche :(
$sql2 = "SELECT id_region, categorie FROM region WHERE region='".$region."'";
$sql2 = "SELECT id_region, categorie FROM region WHERE region='".$region."'";
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
19 sept. 2013 à 17:58
19 sept. 2013 à 17:58
je n'ai pas fait attention, c'est id_region et pas region pour la condition WHERE
//liste departements
if(isset($_POST['region'])){
if($_POST['region']==-1){
echo 'Vous devez chosir une région';
}else{
$id_region=mysql_real_escape_string($_POST['region']);
$sql2 = "SELECT id_region, categorie FROM region WHERE id_region='".$id_region."'";
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
19 sept. 2013 à 19:50
19 sept. 2013 à 19:50
merci alain, désolé de te déranger encore une fois,
ça me fait toujours la même chose,
tu pense que le problème ne viendrait pas de ma table liens_villes??
id_lien---id_ville---ville----id_depatement----departement----------------------lien
1----------vide-----vide----------1---------------departement_test-------------- www.test.fr
ça me fait toujours la même chose,
tu pense que le problème ne viendrait pas de ma table liens_villes??
id_lien---id_ville---ville----id_depatement----departement----------------------lien
1----------vide-----vide----------1---------------departement_test-------------- www.test.fr
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
19 sept. 2013 à 22:58
19 sept. 2013 à 22:58
j'ai fait qqs modifs:
<?php
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin = "root";
$mdp = "";
$base = "mad92men";
$connexion = mysql_connect($serveur, $admin, $mdp) or die('Pb connexion au serveur '.mysql_error());
$choixbase = mysql_select_db($base, $connexion) or die('Pb sélection base '.mysql_error());
if(isset($_POST['ok'])){
//le bouton ok du formulaire a été cliqué
$nb_listes=$_POST['nb_listes']; //on récupere le nb de listes de recherche de lien
if($nb_listes ==3){
$id_ville=$_POST['ville'];
$sql3 = "SELECT lien, ville FROM liens_villes WHERE id_ville='".$id_ville."'";
}elseif($nb_listes ==2){
$id_departement=$_POST['departement'];
$sql3 = "SELECT lien, departement FROM liens_villes WHERE id_departement='".$id_departement."'";
}
$rech_lien= mysql_query($sql3) or die('Pb requette lien '.mysql_error());
$ligne=mysql_fetch_assoc($rech_lien);
$lien=$ligne['lien'];
//on redirige directement vers la page du lien
header('Location:'.$lien.'');
}
///
//echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['region'])?$_POST['region']: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 http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sélectionner un département selon la région choisie</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%">
<h3>Version 100% PHP</h3>
<p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p>
<?php
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['region'])?$_POST['region']:null;
$recherche_2_listes=false;
//recupération des selections éventuelles sinon init à vide
$region=isset($_POST['region']) ? $_POST['region'] : "";
$departement=isset($_POST['departement']) ? $_POST['departement'] : "";
//
//connexion a mysql contairement à ce qui était dit mysql suffit pendant tout le scipt
//par contre c'est dépassé il faut utiliser PDO::
//pour le moment une solution avec mysql
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399"><legend>Sélectionnez une région</legend>
<select name="region" id="region" onchange="submit();">
<option value="-1">- - - Choisissez une région - - -</option>
<?php
$sql1 = "SELECT id_region, region FROM region ORDER BY region"; //par orde alpa des noms c'est qd mêm mieux !
$rech_regions = mysql_query($sql1) or die('Pb requette régions '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_regions)){
//generation de la ligne option
$option= '<option value="'.$ligne['id_region'].'" ';
if($region==$ligne['id_region']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['region'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_regions);
?>
</select>
<br /><br />
<?php
//liste departements
if(isset($_POST['region'])){
if($_POST['region']==-1){
echo 'Vous devez chosir une région';
}else{
$id_region=mysql_real_escape_string($_POST['region']);
//ci dessous j'ai rajouté une recherche de la categorie de la région chosie, il faut que tu rajoutes ce champ dans ta table regions et mettre a 2 celles ou tu as seulement besoin de 2 listes, tu mets les autres a 3
$sql2 = "SELECT id_region, categorie FROM region WHERE id_region='".$id_region."'"; //par orde alpa des noms c'est qd mêm mieux !
$rech_regions2 = mysql_query($sql2) or die('Pb requette régions '.mysql_error());
$ligne2 = mysql_fetch_assoc($rech_regions2);
//echo 'catégorie region: '.$ligne2['categorie'];
if($ligne2['categorie']==2){
$recherche_2_listes=true;
}
if($recherche_2_listes){
//si recherche sur 2 listes on fait une balise select sans onchnage=submit() donc au choix dans cette liste ça ne rpellerera pas la page pour la recherche ville
echo '<select name="departement" id="departement">';
}else{
//si 3 listes on laisse le onchenge=submit()
echo '<select name="departement" id="departement" onchange="submit();">';
}
?>
<option value="-1">- - - Choisissez un département - - -</option>
<?php
$sql2 = "SELECT id_departement, departement FROM departement WHERE id_region='".$region."' ORDER BY departement";
$rech_departement = mysql_query($sql2) or die('Pb requette departement '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_departement)){
//generation de la ligne option
$option= '<option value="'.$ligne['id_departement'].'" ';
if($departement==$ligne['id_departement']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['departement'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_departement);
?>
</select>
<br /><br />
<?php
//il faut ausssi mettre le bouton si deux listes apres le choix du departement
if($recherche_2_listes ){
echo '<input type="hidden" name="nb_listes" value="2" />'; //champ caché pour savoir sur combien de liste on cherche
echo '<br /><input type="submit" name="ok" id="ok1" value="Envoyer" />';
}
}
}
//liste villes
if(!$recherche_2_listes){
if(isset($_POST['departement'])){
if($_POST['departement']==-1){
echo 'Vous devez chosir un departement';
}else{
?>
<select name="ville" id="ville">
<option value="-1">- - - Choisissez une ville - - -</option>
<?php
$sql3 = "SELECT id_ville, ville FROM ville WHERE id_departement='".$departement."'ORDER BY ville";
$rech_ville = mysql_query($sql3) or die('Pb requette ville '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_ville)){
//generation de la ligne option
$option= '<option value="'.$ligne['id_ville'].'" ';
if($departement==$ligne['id_ville']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['ville'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_ville);
?>
</select>
<!-- champ caché pour donner sur quel id on rech le lie (depart ou ville) -->
<input type="hidden" name="nb_listes" value="3" />
<br /><br />
<input type="submit" name="ok" id="ok2" value="Envoyer" />
<?php
}
}
}
?>
</fieldset>
</form>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
?>
<p><a href="./index2.php" title="Aller vers la version JavaScript">Aller vers la version JavaScript</a></p>
</body>
</html>
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
19 sept. 2013 à 23:06
19 sept. 2013 à 23:06
merci pour le retour, j'allais te répondre j'ai trouvé le problème en fait fallait modifier
WHERE id_region='".$id_region."'"; par WHERE id_region='".$region."'";
ce qui donne :
//liste departements
if(isset($_POST['region'])){
if($_POST['region']==-1){
echo 'Vous devez chosir une région';
}else{
$id_region=mysql_real_escape_string($_POST['region']);
$sql2 = "SELECT id_region, categorie FROM region WHERE id_region='".$id_region."'";
Je teste ta nouvel modif de suite et je te tiens au courant. encore merci
WHERE id_region='".$id_region."'"; par WHERE id_region='".$region."'";
ce qui donne :
//liste departements
if(isset($_POST['region'])){
if($_POST['region']==-1){
echo 'Vous devez chosir une région';
}else{
$id_region=mysql_real_escape_string($_POST['region']);
$sql2 = "SELECT id_region, categorie FROM region WHERE id_region='".$id_region."'";
Je teste ta nouvel modif de suite et je te tiens au courant. encore merci
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
19 sept. 2013 à 23:19
19 sept. 2013 à 23:19
Énorme ta dernière modification fonctionne à merveille Alain, je ne sais pas comment te remercier, j'espère que je pourrais te rendre service un jour. mille fois merci !
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
3 sept. 2015 à 22:10
3 sept. 2015 à 22:10
Salut Alain,
Je voudrais éviter le rechargement de la page à chaque requête SQL. Je sais que ça existe une solution en javascript ou AJAX mais je sais pas par ou je dois commencer.
Merci d'avance ;)
Je voudrais éviter le rechargement de la page à chaque requête SQL. Je sais que ça existe une solution en javascript ou AJAX mais je sais pas par ou je dois commencer.
Merci d'avance ;)
vince240986
Messages postés
6
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
11 avril 2014
29 mars 2014 à 13:36
29 mars 2014 à 13:36
Bonjour,
J'essaye de réaliser quelque chose de similaire à ce que tu as fait avec les listes déroulantes.
Le problème c'est que je ne parviens pas à réaliser la table liens_ville (tu as mis quels champs exactement). Tu as bien 4 tables (région, département, ville, liens_ville) ?
D'autre part, j'ai remarqué que si tu changeais de région la liste des villes ne se modifiait pas. As-tu constater ce problème? Te sers tu de ce script sur un site en production?
Merci de bien vouloir me donner un coup de main car ça fait 2 jours que j'ai écumé tous les forums et ta solution est la plus proche de ce que je souhaite réaliser.
Vincent
J'essaye de réaliser quelque chose de similaire à ce que tu as fait avec les listes déroulantes.
Le problème c'est que je ne parviens pas à réaliser la table liens_ville (tu as mis quels champs exactement). Tu as bien 4 tables (région, département, ville, liens_ville) ?
D'autre part, j'ai remarqué que si tu changeais de région la liste des villes ne se modifiait pas. As-tu constater ce problème? Te sers tu de ce script sur un site en production?
Merci de bien vouloir me donner un coup de main car ça fait 2 jours que j'ai écumé tous les forums et ta solution est la plus proche de ce que je souhaite réaliser.
Vincent
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
29 mars 2014 à 19:42
29 mars 2014 à 19:42
Bonjour,
Oui j'utilise le script qu'Alain m'a vraiment beaucoup aidé à le mettre en place et j'en profite encore une fois pour le remercier.
En fait je l'ai finalement adapté pour n'utiliser que 2 listes déroulantes. Dans ma BDD j'utilise 3 tables (région, département et liens_departement)
voici les tables que j'ai :
région : avec 2 colonnes "id_région" et "région"
département : avec 3 colonnes "id_département" "département" et "id_région"
liens_département : avec 4 colonnes "id_lien" "id_département" "département" et "lien"
voici le script php
<?php
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "xxxxxxxxx";
$admin = "xxxxxxxxx";
$mdp = "xxxxxxxxxx";
$base = "xxxxxxxxxxx";
$connexion = mysql_pconnect($serveur, $admin, $mdp) or die('Probèlme connexion au serveur '.mysql_error());
$choixbase = mysql_select_db($base, $connexion) or die('Probèlme sélection base '.mysql_error());
if(isset($_POST['ok'])){
//le bouton ok du formulaire a été cliqué
$département=isset($_POST['département']) ? $_POST['département'] : "";
$sql3 = "SELECT lien, département FROM liens_départements WHERE id_département='".$département."'";
$rech_lien= mysql_query($sql3) or die('Pb requette lien '.mysql_error());
$ligne=mysql_fetch_assoc($rech_lien);
$lien=$ligne['lien'];
//on redirige directement vers la page du lien
header('Location:'.$lien.'');
}
///
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['région'])?$_POST['région']: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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un département selon la région choisie</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%">
<h3>Version 100% PHP</h3>
<p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p>
<?php
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['région'])?$_POST['région']: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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un département selon la région choisie</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%">
<h3>Version 100% PHP</h3>
<p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p>
<?php
//recupération des selections éventuelles sinon init à vide
$région=isset($_POST['région']) ? $_POST['région'] : "";
$département=isset($_POST['département']) ? $_POST['département'] : "";
//
//connexion a mysql contarirement à ce qui était dit mysql suffit pendant tout le scipt
//par contre c'est dépassé il faut utiliser PDO::
//pour le moment une solution avec mysql
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399"><legend>Sélectionnez une région</legend>
<p>
<select name="région" id="région" onchange="submit();">
<option value="-1">- - - Choisissez une région - - -</option>
<?php
$sql1 = "SELECT id_région, région FROM région ORDER BY région"; //par orde alpa des noms c'est qd mêm mieux !
$rech_régions = mysql_query($sql1) or die('Pb requette régions '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_régions)){
//pas besoin de passer par des array
//generation de la ligne option
$option= '<option value="'.$ligne['id_région'].'" ';
if($région==$ligne['id_région']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['région'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_régions);
?>
</select>
<?php
//liste départements
if(isset($_POST['région'])){
if($_POST['région']==-1){
echo 'Vous devez chosir une région';
}else{
?>
<select name="département" id="département" onchange="submit();">
<option value="-1">- - - Choisissez un département - - -</option>
<?php
$sql2 = "SELECT id_département, département FROM département WHERE id_région='".$région."' ORDER BY département";
$rech_département = mysql_query($sql2) or die('Pb requette département '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_département)){
//generation de la ligne option
$option= '<option value="'.$ligne['id_département'].'" ';
if($département==$ligne['id_département']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['département'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_département);
?>
</select>
<?php
}
}
if(isset($_POST['département'])){
if($_POST['département']==-1){
echo 'Vous devez chosir un département';
}else{
?>
</p>
<p><br />
<input type="submit" name="ok" id="ok" value="Envoyer" />
</p>
<?php
}
}
?>
</fieldset>
</form>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
?>
<p><a href="./index2.php" title="Aller vers la version JavaScript">Aller vers la version JavaScript</a></p>
</body>
</html>
Oui j'utilise le script qu'Alain m'a vraiment beaucoup aidé à le mettre en place et j'en profite encore une fois pour le remercier.
En fait je l'ai finalement adapté pour n'utiliser que 2 listes déroulantes. Dans ma BDD j'utilise 3 tables (région, département et liens_departement)
voici les tables que j'ai :
région : avec 2 colonnes "id_région" et "région"
département : avec 3 colonnes "id_département" "département" et "id_région"
liens_département : avec 4 colonnes "id_lien" "id_département" "département" et "lien"
voici le script php
<?php
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "xxxxxxxxx";
$admin = "xxxxxxxxx";
$mdp = "xxxxxxxxxx";
$base = "xxxxxxxxxxx";
$connexion = mysql_pconnect($serveur, $admin, $mdp) or die('Probèlme connexion au serveur '.mysql_error());
$choixbase = mysql_select_db($base, $connexion) or die('Probèlme sélection base '.mysql_error());
if(isset($_POST['ok'])){
//le bouton ok du formulaire a été cliqué
$département=isset($_POST['département']) ? $_POST['département'] : "";
$sql3 = "SELECT lien, département FROM liens_départements WHERE id_département='".$département."'";
$rech_lien= mysql_query($sql3) or die('Pb requette lien '.mysql_error());
$ligne=mysql_fetch_assoc($rech_lien);
$lien=$ligne['lien'];
//on redirige directement vers la page du lien
header('Location:'.$lien.'');
}
///
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['région'])?$_POST['région']: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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un département selon la région choisie</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%">
<h3>Version 100% PHP</h3>
<p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p>
<?php
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['région'])?$_POST['région']: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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Sélectionner un département selon la région choisie</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%">
<h3>Version 100% PHP</h3>
<p>Vous constaterez qu'il y a un délai de latence entre la sélection et la mise à jour.</p>
<?php
//recupération des selections éventuelles sinon init à vide
$région=isset($_POST['région']) ? $_POST['région'] : "";
$département=isset($_POST['département']) ? $_POST['département'] : "";
//
//connexion a mysql contarirement à ce qui était dit mysql suffit pendant tout le scipt
//par contre c'est dépassé il faut utiliser PDO::
//pour le moment une solution avec mysql
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399"><legend>Sélectionnez une région</legend>
<p>
<select name="région" id="région" onchange="submit();">
<option value="-1">- - - Choisissez une région - - -</option>
<?php
$sql1 = "SELECT id_région, région FROM région ORDER BY région"; //par orde alpa des noms c'est qd mêm mieux !
$rech_régions = mysql_query($sql1) or die('Pb requette régions '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_régions)){
//pas besoin de passer par des array
//generation de la ligne option
$option= '<option value="'.$ligne['id_région'].'" ';
if($région==$ligne['id_région']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['région'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_régions);
?>
</select>
<?php
//liste départements
if(isset($_POST['région'])){
if($_POST['région']==-1){
echo 'Vous devez chosir une région';
}else{
?>
<select name="département" id="département" onchange="submit();">
<option value="-1">- - - Choisissez un département - - -</option>
<?php
$sql2 = "SELECT id_département, département FROM département WHERE id_région='".$région."' ORDER BY département";
$rech_département = mysql_query($sql2) or die('Pb requette département '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_département)){
//generation de la ligne option
$option= '<option value="'.$ligne['id_département'].'" ';
if($département==$ligne['id_département']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['département'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_département);
?>
</select>
<?php
}
}
if(isset($_POST['département'])){
if($_POST['département']==-1){
echo 'Vous devez chosir un département';
}else{
?>
</p>
<p><br />
<input type="submit" name="ok" id="ok" value="Envoyer" />
</p>
<?php
}
}
?>
</fieldset>
</form>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
?>
<p><a href="./index2.php" title="Aller vers la version JavaScript">Aller vers la version JavaScript</a></p>
</body>
</html>
vince240986
Messages postés
6
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
11 avril 2014
29 mars 2014 à 20:17
29 mars 2014 à 20:17
Merci beaucoup pour ta réponse tout fonctionne. Par contre c'est ce que je disais précédemment, il y a au départ une seule liste "Région". Ensuite la seconde apparait puis celle de la ville. Lorsque l'on a accès à la ville, le fait de changer de Région laisse les villes précédentes présentes. Je sais pas si je suis clair.
Par exemple j'ai Auvergne -> Puy-De-Dôme->Clermont-Ferrand. Si je passe sur Aquitaine, les départements sont bien automatiquement modifiés pour m'afficher ceux qui sont liés à Aquitaine, mais si je ne sélectionne pas de département, j'ai accès aux villes de la région Auvergne.
Et oui merci également à Alain qui t'as aidé et qui m'a aidé aussi du coup :)
Vincent
Par exemple j'ai Auvergne -> Puy-De-Dôme->Clermont-Ferrand. Si je passe sur Aquitaine, les départements sont bien automatiquement modifiés pour m'afficher ceux qui sont liés à Aquitaine, mais si je ne sélectionne pas de département, j'ai accès aux villes de la région Auvergne.
Et oui merci également à Alain qui t'as aidé et qui m'a aidé aussi du coup :)
Vincent
mad92men
Messages postés
130
Date d'inscription
dimanche 28 octobre 2012
Statut
Membre
Dernière intervention
10 novembre 2020
4
>
vince240986
Messages postés
6
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
11 avril 2014
31 mars 2014 à 10:03
31 mars 2014 à 10:03
Salut,
Essaie le dernier script qu'Alain avait posté, enleve la partie catégorie normalement ça va marcher.
Cordialement.
Essaie le dernier script qu'Alain avait posté, enleve la partie catégorie normalement ça va marcher.
Cordialement.
vince240986
Messages postés
6
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
11 avril 2014
Modifié par vince240986 le 9/04/2014 à 09:49
Modifié par vince240986 le 9/04/2014 à 09:49
Ok merci pour ta réponse. Par contre est-ce que tu as des compétences avec les iframes? En effet, dans un fichier index.html, je souhaite mettre cette liste déroulante sur la partie left du document de cette manière:
Ca fonctionne, le soucis c'est que le résultat du submit reste dans ce cadre de 220x220. Or je voudrais qu'il redirige complètement vers l'URL sélectionnée.
Merci encore si tu peux m'aider.
<h2>Test</h2>
<iframe name="filtre_demo" src="http://localhost:8888/filtre/index.php" scrolling="no" height="220" width="220" frameborder="no"></iframe>
Ca fonctionne, le soucis c'est que le résultat du submit reste dans ce cadre de 220x220. Or je voudrais qu'il redirige complètement vers l'URL sélectionnée.
Merci encore si tu peux m'aider.
vince240986
Messages postés
6
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
11 avril 2014
11 avril 2014 à 08:34
11 avril 2014 à 08:34
Si jamais ça peut être utile à quelqu'un voici une solution qui fonctionne:
On remplace cette ligne:
On remplace cette ligne:
//on redirige directement vers la page du lienpar:
header('Location:'.$lien.'');
echo "<script>";
echo "window.top.location.href='$lien'";
echo "</script>";
26 août 2013 à 23:45
cependant j'ai essayé ton code et ça à l'air de bien marcher le seul problème c'est que j'arrive pas à ajouter la 3eme table des villes sur ma bdd.
j'ai essayé ça mais ça marche pas :
--
-- Base de données: 'regions'
--
-- --------------------------------------------------------
--
-- Structure de la table 'region'
--
CREATE TABLE 'region' (
'id_region' tinyint(4) NOT NULL auto_increment,
'region' varchar(50) NOT NULL default '',
PRIMARY KEY ('id_region')
);
-- --------------------------------------------------------
--
-- Structure de la table 'departement'
--
CREATE TABLE 'departement' (
'id_departement' char(2) NOT NULL default '',
'departement' varchar(50) NOT NULL default '',
'id_region' tinyint(4) NOT NULL default '0',
PRIMARY KEY ('id_departement'),
KEY 'id_region' ('id_region')
);
-- --------------------------------------------------------
--
-- Structure de la table 'ville
--
CREATE TABLE 'ville' (
'id_ville' char(2) NOT NULL default '',
'ville' varchar(50) NOT NULL default '',
'id_departement' tinyint(4) NOT NULL default '0',
PRIMARY KEY ('id_ville),
KEY 'id_departement' ('id_departement')
);
étant nul en php sql j'arrive toujours pas à trouver la solution pour intégré les villes dans ma base et accorder un lien html pour chaque ville. en fait ce que je veux c'est qu'après avoir choisi la ville quand on valide ça envoi vers une page via un lien html (www.monsite.fr/blablabla.html) qui existe déja.
merci de m'éclairer j'arrive nul part à trouver une solution pour ça.