Bonjour, sur un de mes moteurs de recherche j'ai un filtre de région et département !
Si la personne choisi une région on lui montre les départements d'après la région choisie jusqu'à là aucun problème !
Mon problème vient que quand je clique sur recherche dans le moteur de recherche je vois bien la région qui a été sélectionnée mais mon select de département lui ne s'affiche pas !!!
ci joint le code et si quelqu'un aurai une solution ça serait super
Si la personne choisi une région on lui montre les départements d'après la région choisie jusqu'à là aucun problème !
Mon problème vient que quand je clique sur recherche dans le moteur de recherche je vois bien la région qui a été sélectionnée mais mon select de département lui ne s'affiche pas !!!
ci joint le code et si quelqu'un aurai une solution ça serait super
<script type="text/javascript" src="js/dept_recherche.js" charset="iso_8859-1"></script>
<?php
$serveur = "**";
$admin = "**";
$mdp = "**";
$base = "**";
?>
<?php
/* Requête SQL de récupération des données de la première liste */
$sql = "SELECT `id_region` AS idr, `region` ".
"FROM `region` ".
"ORDER BY `id_region`;";
/* Connexion et exécution de la requête */
$connexion = mysql_connect($serveur, $admin, $mdp);
if($connexion != false)
{
$choixbase = mysql_select_db($base, $connexion);
$recherche = mysql_query($sql, $connexion);
/* Création du tableau PHP des valeurs récupérées */
$regions = array();
/* Index du département par tableau régional */
$id = 0;
while($ligne = mysql_fetch_assoc($recherche))
{
$regions[$ligne['idr']] = $ligne['region'];
}
?>
<select name="r" class="input_recherche" id="region" onchange="getDepartements(this.value);">
<option value="">- - - Toute la France - - -</option>
<?php
/* Construction de la première liste : on se sert du tableau PHP */
foreach($regions as $nr => $nom)
{
?>
<option value="<?php echo($nr); ?>" <?php if (!(strcmp($nr, htmlentities($_GET['r'], ENT_COMPAT, 'UTF-8')))) {echo "SELECTED";} ?>><?php echo($nom); ?></option>
<?php
}
?>
</select>
<span id="blocDepartements"></span>
<?php
}
else
{
/* Si vous arrivez ici, vous avez un gros problème avec la connexion au serveur de base de données */
?>
<?php
}
?>
/**
* Lister les départements d'une région avec un objet
* XMLHTTPRequest.
*/
/* Création de la variable globale qui contiendra l'objet XHR */
var requete = null;
/**
* Fonction privée qui va créer un objet XHR.
* Cette fonction initialisera la valeur dans la variable globale définie
* ci-dessus.
*/
function creerRequete()
{
try
{
/* On tente de créer un objet XmlHTTPRequest */
requete = new XMLHttpRequest();
}
catch (microsoft)
{
/* Microsoft utilisant une autre technique, on essays de créer un objet ActiveX */
try
{
requete = new ActiveXObject('Msxml2.XMLHTTP');
}
catch(autremicrosoft)
{
/* La première méthode a échoué, on en teste une seconde */
try
{
requete = new ActiveXObject('Microsoft.XMLHTTP');
}
catch(echec)
{
/* À ce stade, aucune méthode ne fonctionne... mettez donc votre navigateur à jour [cligne] */
requete = null;
}
}
}
if(requete == null)
{
alert('Impossible de créer l\'objet requête,\nVotre navigateur ne semble pas supporter les object XMLHttpRequest.');
}
}
/**
* Fonction privée qui va mettre à jour l'affichage de la page.
*/
function actualiserDepartements()
{
var listeDept = requete.responseText;
var blocListe = document.getElementById('blocDepartements');
blocListe.innerHTML = listeDept;
}
/**
* Fonction publique appelée par la page affichée.
* Cette fonction va initialiser la création de l'objet XHR puis appeler
* le code serveur afin de récupérer les données à modifier dans la page.
*/
function getDepartements(idr)
{
/* Si il n'y a pas d'identifiant de région, on fait disparaître la seconde liste au cas où elle serait affichée */
if(idr == '')
{
document.getElementById('blocDepartements').innerHTML = '';
}
else
{
/* À cet endroit précis, on peut faire apparaître un message d'attente */
var blocListe = document.getElementById('blocDepartements');
blocListe.innerHTML = "Traitement en cours, veuillez patienter...";
/* On crée l'objet XHR */
creerRequete();
/* Définition du fichier de traitement */
var url = 'js/departements_recherche22.php?idr='+ idr;
/* Envoi de la requête à la page de traitement */
requete.open('GET', url, true);
/* On surveille le changement d'état de la requête qui va passer successivement de 1 à 4 */
requete.onreadystatechange = function()
{
/* Lorsque l'état est à 4 */
if(requete.readyState == 4)
{
/* Si on a un statut à 200 */
if(requete.status == 200)
{
/* Mise à jour de l'affichage, on appelle la fonction apropriée */
actualiserDepartements();
}
}
};
requete.send(null);
}
}
<?php
/* Paramètres de connexion */
$serveur = "**";
$admin = "**";
$mdp = "**";
$base = "**";
/* On récupère l'identifiant de la région choisie. */
$idr = isset($_GET['idr']) ? $_GET['idr'] : false;
/* Si on a une région, on procède à la requête */
if(false !== $idr)
{
/* Cération de la requête pour avoir les départements de cette région */
$sql2 = "SELECT `id_departement`, `departement`".
" FROM `departement`".
" WHERE `id_region` = ". $idr ."".
" ORDER BY `id_departement`;";
$connexion = mysql_connect($serveur, $admin, $mdp);
mysql_select_db($base, $connexion);
$rech_dept = mysql_query($sql2, $connexion);
/* Un petit compteur pour les départements */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
$code_dept = array();
$nom_dept = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while(false != ($ligne_dept = mysql_fetch_assoc($rech_dept)))
{
$code_dept[] = $ligne_dept['id_departement'];
$nom_dept[] = $ligne_dept['departement'];
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
$liste = "";
$liste .= '<select name="d" class="input_recherche" id="departement"><option value="" >- - - Tous les Dépatements - - -</option>'."\n";
for($d = 0; $d < $nd; $d++)
{
$liste .= '<option value="'. $code_dept[$d] .'">'. htmlentities($nom_dept[$d]).'</option>'."\n";
}
$liste .= '</select>'."\n";
/* Un petit coup de balai */
mysql_free_result($rech_dept);
/* Affichage de la liste déroulante */
echo($liste);
}
/* Sinon on retourne un message d'erreur */
else
{
echo("<p>Une erreur s'est produite. La région sélectionnée comporte une donnée invalide.</p>\n");
}
?>