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

Eléphant du PHP | 224 Messages

06 janv. 2019, 11:50

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>';
	}

Eléphant du PHP | 300 Messages

07 janv. 2019, 03:46

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

Eléphant du PHP | 224 Messages

08 janv. 2019, 20:02

Bonsoir,
comment peut-on remplacer switch dans le résultat de la requête sql dans le premier exemple ?

Eléphant du PHP | 224 Messages

09 janv. 2019, 19:27

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

Eléphant du PHP | 300 Messages

11 janv. 2019, 08:50

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.

Eléphant du PHP | 224 Messages

11 janv. 2019, 21:43

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