Liste deroulante et checkbox

- - Dernière réponse :  Ralako - 10 mars 2016 à 12:02
Bonjour,
J'ai un problème sur la synchronisation d'une zone de liste déroulante et des checkbox. En faite je veux avoir des listes de choix de checkbox après que j'ai choisi dans la liste déroulante! tous ça sans bouton de déplacement et que le résultat s'affiche dans la même page.
Svp aide moi
Afficher la suite 

2 réponses

Messages postés
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
312
0
Merci
Bonjour,

Qu'as tu testé ?
Quel code as tu déjà commencé à écrire
Sur quoi bloques tu exactement ?

Bonjour,
pour le moment j'ai juste la zone de liste deroulante mais je suis bloque sur l'affichage des checkbox apres la selection dans la zone de liste deroulante
Merci d'avance
jordane45
Messages postés
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
312 > ralako -

j'ai juste la zone de liste deroulante

Et bien.. postes nous son code html dans ce cas


mais je suis bloque sur l'affichage des checkbox apres la selection dans la zone de liste deroulante

Tu es bloqué ... c'est à dire ? Qu'as tu essayé de coder ? En quoi cela ne marche t'il pas ?

Si tu ne sais pas comment déclencher un évènement lors d'une selection dans une liste déroulante... regarde donc l'event : ONCHANGE
http://www.w3schools.com/jsref/event_onchange.asp
Commenter la réponse de jordane45
0
Merci
Bonjour,
Desolé pour le ratard, j'ai essayé quelque code mais ça ne marche pas
voici

<html>
<head>
<script src="jquery.js"></script>
</head>
<body>
<form action="" name="form">
<select name="select" id="id_region" onchange='tester(this.form.value);'>
<OPTION Value=0>---Choisissez une region---</OPTION>";
<?php
include('connectBDD.php');

$reponse = $bdd->query('SELECT * FROM region');

while ($donnees = $reponse->fetch())
{

echo'<option value="'.$donnees['id_region'].'">'.$donnees['Nom_region'].'</option>';
}
?>
</select>
</body>
<script>
function tester(){
var i=document.form.select.selected.value;
if(i!=0){
$.post('district.php',{i:i},function(data){
$('.district').html(data);
}
}
}
</script>
<?php
include('district.php');
?>
</html>
district.php
<?php
include('ConnectBDD.php');
if(isset($_POST['i'])){
$i=mysql_real_escape_string(htmlspecialchars(trim($_POST['i'])));
$requete=$bdd->query('Select *from district where id_region= '.$i);
while($district = $requete->fetch()){
echo '<input type="checkbox"name="checkbox'.$district['id_region'].'" value="'.$district['id_district'].'">'.$district['Nom'].'<br>';

}

}
?>

voila,merci d'avance
jordane45
Messages postés
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
312 -
Déjà :
<select name="select" id="id_region" onchange='tester(this.form.value);'>


A changer par :
<select name="select" id="id_region" onchange='tester(this.value);'>


Ensuite... pourquoi envoyer un paramètre à ta fonction... si dans la déclaration de la fonction tu ne l'utilises pas ?
function tester(){

A changer par :

function tester(elmValue){
if(elmValue !="" && elmValue!=0){
   $.post('district.php',{i:i},function(data){
            $('.district').html(data);
    });
 }



Puis, dans ton code php :
Tu as, visiblement, oublié un ESPACE dans ta requête
$requete=$bdd->query('Select *from district where id_region= '.$i);

Remplace par :
$requete=$bdd->query("SELECT * FROM district WHERE id_region= '$i' ");


De plus, tu utilises l'instruction
mysql_real_escape_string
qui appartient à l'ancienne extension mysql .. mais ensuite tu fais appel à
$bdd->query
qui est la syntaxe PDO (ou mysqli )
Bref... revoie complètement ton code en y corrigeant toutes ces erreurs.... !!!!!

Pour finir, lorsque tu testes ta page, utilises les outils de debogage de ton navigateur internet. (perso je te recommande d'utiliser le plugin FIREBUG pour FIREFOX ) et regarde dans la CONSOLE ce qui s'affiche (en cas d'erreur dans le code js )
> jordane45
Messages postés
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
-
Bonjour,
j'ai modifié le code mais ça ne marche pas encore.
le voici

<html>
<head>
<script src="jquery.js"></script>
</head>
<body>
<form action="" name="form">
<select name="select" id="id_region" onchange='tester(this.value);'>
<OPTION Value=0>---Choisissez une region---</OPTION>";
<?php
include('connectBDD.php');
$reponse = $bdd->query('SELECT * FROM region');
while ($donnees = $reponse->fetch())
{
echo'<option value="'.$donnees['id_region'].'">'.$donnees['Nom_region'].'</option>';
}
?>
</select>
<div class="district">
</div>
</body>
<script>
function tester(elmValue){
var i= document.getElementById('id_region');
if(elmValue !="" && elmValue!=0){
$.post('district.php',{i:i},function(data){
$('.district').html(data);
});
}
}
</script>
<?php
include('district.php');

?>
</html>

district.php
<?php
include('ConnectBDD.php');
if(isset($_POST['i'])){
$i=$bdd->query(htmlspecialchars(trim($_POST['i'])));
$requete=$bdd->query("SELECT * FROM district WHERE id_region= '$i' ");
while($district = $requete->fetch()){
echo '<input type="checkbox"name="checkbox'.$district['id_region'].'" value="'.$district['id_district'].'">'.$district['Nom'].'<br>';

}

}
?>

s'il vous plait aide moi.Merci
jordane45
Messages postés
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
312 > Ralako -
et qu'as tu dans la CONSOLE de ton navigateur ?
> jordane45
Messages postés
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
-
L'encodage de caractères du document HTML n'a pas été déclaré. Le document sera affiché avec des caractères incorrects pour certaines configurations de navigateur si le document contient des caractères en dehors de la plage US-ASCII. L'encodage de caractères de la page doit être déclaré dans le document ou dans le protocole de transfert. region.php
too much recursion
jquery.js:2:1999
Commenter la réponse de Ralako