liste deroulante liée

Rechercher

liste deroulante liée

Par nguionapo  -  1 reponse  -  Le 15/09/2021 19:50  -  Editer  - 

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

Par Cyrano  -  Le 18/09/2021 13:18  -  Haut de page  - 

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

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |