liste deroulante liée
Bonjour
j'ai un soucis avec mon code. je suis en train de créer une liste déroulante de 4 niveaux.
Je m'explique :
1 niveau : N°SAV donne une liste de clients selon N°SAV choisi
2 niveau : je choisi un client qui donne une liste de repère
d'ici la tout va bien
3 et 4 niveau : lorsque je choisi un client , son N°CONTRAT et le type de CONTRAT doivent automatiquement s'afficher;
Malheureusement il ne s'affiche pas dans les cases respectives(REPÈRE - NCONTRAT - CONTRAT) mais plutôt dans la case repère
Je n'arrive pas a lier le choix du client au Ncontrat et contrat
aidez moi svp
code index :
<div class="col sm-6">
<form action="add_panne.php" method="POST">
<div class="modal-body">
<!-- N°SAV dropdown -->
<div class="row mb-3">
<label for="nsav" class="col-sm-3 col-form-label">N°SAV :</label>
<div class="col sm-8">
<select onChange="getClient(this.value);" name="nsav" id="nsav" class="form-control">
<option value="">Selectionnez N°SAV</option>
<?php
$query = $connexion->query('SELECT * FROM nsav');
while ($row = $query->fetch()){
?>
<option value="<?php echo $row['n_sav'];?>"><?php echo $row['n_sav'];?></option>;
<?php }?>
</select>
</div>
</div>
<!-- Clients dropdown -->
<div class="row mb-3">
<label for="clients" class="col-sm-3 col-form-label">CLIENTS :</label>
<div class="col sm-8">
<select onChange="getData(this.value);" name="clients" id="client-list" class="form-control">
<option value="">Selectionnez un client</option>
</select>
</div>
</div>
<!-- N°contrat dropdown -->
<div class="row mb-3">
<label for="ncontrat" class="col-sm-3 col-form-label">N°CONTRAT:</label>
<div class="col sm-8">
<select name="ncontrat" id="ncontrat-list" class="form-control">
<option value="">Selectionnez le N°CONTRAT</option>
</select>
</div>
</div>
<!-- REPERE dropdown -->
<div class="row mb-3">
<label for="reperes" class="col-sm-3 col-form-label">REPERES:</label>
<div class="col sm-8">
<select name="reperes" id="repere-list" class="form-control">
<option value="">Selectionnez le repere</option>
</select>
</div>
</div>
<!-- RESPONSABLE dropdown -->
<div class="row mb-3">
<label for="responsables" class="col-sm-3 col-form-label">RESPONSABLE ZONE:</label>
<div class="col sm-8">
<select name="responsables" id="responsables" class="form-control">
<option value="">Selectionnez un responsable</option>
<?php
$reponse = $connexion->query('SELECT * FROM responsables');
while ($row = $reponse->fetch()){
?>
<option value="<?php echo $row['nom_responsable'];?>"><?php echo $row['nom_responsable'];?></option>;
<?php }?>
</select>
</div>
</div>
<!-- TECHNICIENS dropdown -->
<div class="row mb-3">
<label for="techniciens" class="col-sm-3 col-form-label">TECHNICIENS:</label>
<div class="col sm-8">
<select name="techniciens" id="techniciens" class="form-control">
<option value="">Selectionnez un technicien</option>
<?php
$reponse = $connexion->query('SELECT * FROM techniciens');
while ($row = $reponse->fetch()){
?>
<option value="<?php echo $row['nom_technicien'];?>"><?php echo $row['nom_technicien'];?></option>;
<?php }?>
</select>
</div>
</div>
<!-- CONTRAT dropdown -->
<div class="row mb-3">
<label for="contrats" class="col-sm-3 col-form-label">CONTRAT :</label>
<div class="col sm-8">
<select name="contrats" id="contrat-list" class="form-control">
<option value="">Selectionnez le contrat</option>
</select>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
<button type="submit" name="savebtn" class="btn btn-primary">Enregistrer</button>
</div>
</form>
</div>
code SCRIPT :
function getClient(val) {
$.ajax({
type: "POST",
url: "get_clients.php",
data: 'id='+val,
success: function(data){
$("#client-list").html(data); // pour les clients
}
});
}
function getData(val) {
$.ajax({
type: "POST",
url: "get_data.php",
data: 'id='+val,
success: function(data){
$("#ncontrat-list").html(data); // pour les ncontrats
$("#repere-list").html(data); // pour les reperes
$("#contrat-list").html(data); // pour les contrats
}
});
}
code GET_CLIENTS
<?php
require_once ("connexion.php");
if(!empty($_POST["id"]))
{
$nsavid = $_POST["id"];
$sql = $connexion->prepare("SELECT * FROM clients WHERE n_sav =:nsavid");
$sql->execute(array(
':nsavid' => $nsavid
));
?>
<option value="">selectionnez un client</option>
<?php
while($row = $sql->fetch())
{
?>
<option value="<?php echo $row["nom_client"]; ?>"><?php echo $row["nom_client"]; ?></option>
<?php
}
}
?>
code GET_DATA
<?php
// connexion à la bdd
require_once ("connexion.php");
// connexion à la table ncontrat
if(!empty($_POST["id"]))
{
$clientsid = $_POST["id"];
$sql = $connexion->prepare("SELECT * FROM ncontrat WHERE nom_client =:clientsid");
$sql->execute(array(
':clientsid' => $clientsid
));
while($row = $sql->fetch())
{
?>
<option value="<?php echo $row["n_contrat"]; ?>"><?php echo $row["n_contrat"]; ?></option>
<?php
}
}
?>
Ainsi que :
<?php
// connexion à la table reperes
if(!empty($_POST["id"]))
{
$clientsid = $_POST["id"];
$sql = $connexion->prepare("SELECT * FROM reperes WHERE nom_client =:clientsid");
$sql->execute(array(
':clientsid' => $clientsid
));
?>
<option value="">selectionnez un repere</option>
<?php
while($row = $sql->fetch())
{
?>
<option value="<?php echo $row["repere"]; ?>"><?php echo $row["repere"]; ?></option>
<?php
}
}
?>
<?php
// connexion à la table contrat
if(!empty($_POST["id"]))
{
$clientsid = $_POST["id"];
$sql = $connexion->prepare("SELECT * FROM contrats WHERE nom_client =:clientsid");
$sql->execute(array(
':clientsid' => $clientsid
));
while($row = $sql->fetch())
{
?>
<option value="<?php echo $row["contrat"]; ?>"><?php echo $row["contrat"]; ?></option>
<?php
}
}
?>
Réponses apportées à cette discussion
Salut, il y a une quinzaine d'années (2005), j'avais publié un tuto sur les listes déroulantes liées. Les principes restent toujours valides même s'il sera raisonnable d'adapter le code aux versions actuelles :
https://forum.phpfrance.com/tutoriels/formulaires-listes-deroulantes-dynamiques-liees-t4562.html