champ texte et liste déroulante
Posté : 24 oct. 2019, 19:18
Bonjour
Je suis bloque sur un script qui doit me permettre d'avoir dans une liste déroulante le département par rapport au code postal rentré dans le champ texte
Dans ma table département j'ai un iddepartement qui n'est pas le n° du département (par exemple la gironde 33 a l'id 5) J'ai fait cela au cas ou il y aurait des changements de département ou autre
J'ai déjà posté mon problème sur d'autres forum mais je me dis que plus je pourrais exposer mon problème j'aurais peut être plus de chance à a voir la solution
J'essaie d'utiliser Ajax car ce formulaire n'est qu'un bout d'un formulaire que j'enregistre
Donc voici mon formulaire avec le script utilisant ajax
et voici mon fichierchoixdepartement.php qui gère les départements
Dans ma console js je vois bien quand je tape les numéros du code postal mais impossible d'afficher le département correspondant à mon code postal
Cela fait une semaine que je suis dessus et là je commence à craquer !!
Ou est mon erreur ???
Cordialement
Je suis bloque sur un script qui doit me permettre d'avoir dans une liste déroulante le département par rapport au code postal rentré dans le champ texte
Dans ma table département j'ai un iddepartement qui n'est pas le n° du département (par exemple la gironde 33 a l'id 5) J'ai fait cela au cas ou il y aurait des changements de département ou autre
J'ai déjà posté mon problème sur d'autres forum mais je me dis que plus je pourrais exposer mon problème j'aurais peut être plus de chance à a voir la solution
J'essaie d'utiliser Ajax car ce formulaire n'est qu'un bout d'un formulaire que j'enregistre
Donc voici mon formulaire avec le script utilisant ajax
Code : Tout sélectionner
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
}
/**
* Méthode qui sera appelée après avoir "quitter" le champ input codepostal
*/
function select_dept_from_cp(){
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('lst_departements').innerHTML = leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","choixdepartement.php",true);
// rajout pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// ici la valeur du code postal
codepostal = document.getElementById('codepostal').value;
console.log(codepostal);
xhr.send("codepostal="+codepostal);
}
//-->
</script>
</head>
<?php
include('../01_scripts/connexion.php');
?>
<body>
<form id="cp" method="post" action="">
<table width="100%" border="1" cellspacing="1" cellpadding="0">
<tbody>
<tr>
<td>Code Postal</td>
<td><input type="text" name="codepostal" id="codepostal" size="6" onkeyup="select_dept_from_cp();"></td>
</tr>
<tr>
<td>Le département </td>
<td>
<div id='lst_departements' style='display:inline'>
<select name='lst_departements'></select>
</div>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="envoyer" value="Enregistrer"</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
Code : Tout sélectionner
<?php
header('Content-type:text/html; charset=UTF-8');
include('../01_scripts/connexion.php'); // connexion à la base
echo "<select name='lst_departements'>";
if(isset($_POST['codepostal'])) {
$codePostal=$_POST['codepostal'];
$departementNumero = substr($codePostal,0,-3);
$sql = "SELECT departementId,departementLibelle,departementNumero FROM gp_departements WHERE departementNumero = '$departementNumero'";
$req = $db->prepare($sql);
$req->bindValue(':departementNumero', $departementNumero,PDO::PARAM_INT);
$req->execute();
$r = $req->fetch();
$departementId=$r['departementId'];
$departementLibelle=$r['departementLibelle'];
while ($r = $req->fetch()) {
echo "<option value='".$r["departementId"]."'>".$r["departementLibelle"]."</option>";
}
}
echo "</select>";
?>
Cela fait une semaine que je suis dessus et là je commence à craquer !!
Ou est mon erreur ???
Cordialement