Page 1 sur 1

Affichage selon sélection liste déroulante sans recharger la page

Posté : 06 janv. 2019, 11:50
par cris84
Bonjour à tous,

j'ai une liste déroulante qui contient les départements, je voudrais que dans le formulaire dans un input, je puisse rentrer une ville (en autocomplete que j'ai déjà fait) mais en fonction du choix de la liste déroulante même lorsque l'utilisateur change de département.
Il faut appeler je crois ce changement en Javascript ou Ajax ?

Le hearder.php contient la liste déroulante département comme ceci :

<select name="id_departement" class="form-control mb-2" id="region" onChange="getVilles(this.value);">
		     <option value="">- - - Choisissez un d&eacute;partement - - -</option>
		   <?php
  			  foreach($departements as $nr => $nom)
    {
		       ?>
					 <option value="<?= $nr;?>"<?php
				  } 
		
		?>><?= utf8_encode($nom); ?></option><?php }  
				echo'</select>';
				 }
//ici je voudrais afficher le input en fonction du choix du département même si l'utilisateur change
?>
<div class="input_container">
                    <input type="text" id="country_id" onkeyup="autocomplet()">
                    <ul id="country_list_id"></ul>
                </div> 

le fichier d'autocomplete :

$keyword = '%'.$_POST['keyword'].'%';
$sql = "SELECT id_ville, ville, cp FROM ville WHERE ville LIKE (:keyword) and id_departement = ". $idd ." LIMIT 0, 8";
$query = $pdo->prepare($sql);
$query->bindParam(':keyword', $keyword, PDO::PARAM_STR);
$query->execute();
$list = $query->fetchAll();
foreach ($list as $rs) {
	// put in bold the written text
	$ville = str_replace($_POST['keyword'], '<b>'.$_POST['keyword'].'</b>', $rs['ville']);
	// add new option
    echo '<li onclick="set_item(\''.str_replace("'", "\'", $rs['ville']).'\')">'.$ville.'</li>';
	}

Re: Affichage selon sélection liste déroulante sans recharger la page

Posté : 07 janv. 2019, 03:46
par kevin254kl
Salut,

Un exemple ici https://github.com/boktoso/AjaxExample je pense le mieux c'est de renvoyer du json plus léger et en javascript insérer l'élément. Tu peux utiliser jquery https://stackoverflow.com/questions/229 ... ax-and-php

Re: Affichage selon sélection liste déroulante sans recharger la page

Posté : 08 janv. 2019, 20:02
par cris84
Bonsoir,
comment peut-on remplacer switch dans le résultat de la requête sql dans le premier exemple ?

Re: Affichage selon sélection liste déroulante sans recharger la page

Posté : 09 janv. 2019, 19:27
par cris84
Bonsoir,

j'ai fait ceci mais évidement cela m'affiche dans la deuxième liste uniquement que la première ville.
Comment faire une répétition pour afficher toutes les villes correspondantes :?:
<?php
	$choice = $_GET["first"];
	
	$ville = $bdd->query('SELECT * FROM ville WHERE id_departement ="'.$_GET['first'].'"');
			$don = $ville->fetch();
			
			
	switch($choice){
		case  "".$don['id_departement']."":
	
		echo '["'.$don['ville'].'"]'; 
			break;
		
		default:
			echo "[]";
			break;
	}
	?>
Merci

Re: Affichage selon sélection liste déroulante sans recharger la page

Posté : 11 janv. 2019, 08:50
par kevin254kl
Salut,

C'était juste un exemple, fait ta requête selon la ville tu retourne le résultat enjson_encode, puis tu fais un consol.log pour voir à quoi sa ressemble. Enfin en jquery javascript ou ce que tu veux tu sélectionnes ton élément et utilise append (en jquery) pour mettre à jour ta liste.

Re: Affichage selon sélection liste déroulante sans recharger la page

Posté : 11 janv. 2019, 21:43
par cris84
Je maîtrise un peu le PHP mais pas le java, Ajax et javascript
Une petite explication avec un bout de code pour m'aider à comprendre