Apprendre à programmer

Créer une liste déroulante dynamique en PHP à partir d’une base de données MySQL

Les listes déroulantes sont des éléments essentiels dans de nombreuses applications web, permettant aux utilisateurs de sélectionner une option parmi plusieurs. Dans cet article, nous allons explorer comment créer une liste déroulante dynamique en utilisant PHP et MySQL. Nous allons tirer parti de la puissance des bases de données pour peupler dynamiquement notre liste déroulante avec des données provenant d’une source externe, offrant ainsi une expérience utilisateur plus fluide et flexible.

Étape 1 : Création de la structure de la base de données


Avant de commencer à coder, il est crucial de définir la structure de la base de données qui stockera les options pour notre liste déroulante. Supposons que nous voulions créer une liste déroulante pour les catégories de produits dans un magasin en ligne. Nous aurons besoin d’une table dans notre base de données pour stocker ces catégories. Voici un exemple de structure de table simple :

CREATE TABLE categories (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(50) NOT NULL
);
Étape 2 : Connexion à la base de données


Maintenant que notre structure de base de données est en place, nous pouvons passer à la connexion à la base de données depuis notre script PHP. Voici un exemple de code pour établir une connexion avec MySQL :

<?php
$serveur = "localhost";
$utilisateur = "votre_nom_utilisateur";
$mot_de_passe = "votre_mot_de_passe";
$base_de_donnees = "nom_de_votre_base_de_donnees";

// Connexion à la base de données
$connexion = new mysqli($serveur, $utilisateur, $mot_de_passe, $base_de_donnees);

// Vérification de la connexion
if ($connexion->connect_error) {
    die("Erreur de connexion à la base de données : " . $connexion->connect_error);
}
?>
Étape 3 : Récupération des données de la base de données


Maintenant que nous sommes connectés à notre base de données, nous pouvons récupérer les données nécessaires pour peupler notre liste déroulante. Dans notre exemple, nous récupérerons les catégories de produits à partir de notre table ‘categories’. Voici comment nous pouvons le faire en PHP :

<?php
// Requête SQL pour récupérer les catégories
$sql = "SELECT id, nom FROM categories";
$resultat = $connexion->query($sql);

// Vérification des résultats de la requête
if ($resultat->num_rows > 0) {
    // Parcourir chaque ligne de résultats
    while($row = $resultat->fetch_assoc()) {
        // Afficher chaque catégorie dans la liste déroulante
        echo "<option value='" . $row['id'] . "'>" . $row['nom'] . "</option>";
    }
} else {
    echo "Aucune catégorie trouvée";
}
?>
Étape 4 : Intégration dans une page web


Maintenant que nous avons notre code PHP pour récupérer les catégories de produits, nous pouvons l’intégrer dans une page web pour afficher notre liste déroulante. Voici un exemple de code HTML avec la liste déroulante :

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Liste déroulante PHP/MySQL</title>
</head>
<body>
    <h1>Sélectionnez une catégorie :</h1>
    <form action="traitement.php" method="post">
        <select name="categorie">
            <?php include 'connexion.php'; ?>
        </select>
        <input type="submit" value="Valider">
    </form>
</body>
</html>

Voici comment nous pourrions réécrire ces exemples en incluant du code PHP et MySQL :

Sélection de catégories de produits dans un magasin en ligne :
<select name="categorie">
    <?php 
    $resultat = $connexion->query("SELECT id, nom FROM categories");
    while($row = $resultat->fetch_assoc()) {
        echo "<option value='" . $row['id'] . "'>" . $row['nom'] . "</option>";
    }
    ?>
</select>
Choix de villes ou de pays dans un formulaire d’inscription :
<select name="pays">
    <?php 
    $resultat = $connexion->query("SELECT id, nom FROM pays");
    while($row = $resultat->fetch_assoc()) {
        echo "<option value='" . $row['id'] . "'>" . $row['nom'] . "</option>";
    }
    ?>
</select>
Sélection de catégories ou de tags dans un blog ou un système de gestion de contenu (CMS) :
<select name="categorie">
    <?php 
    $resultat = $connexion->query("SELECT id, nom FROM categories_articles");
    while($row = $resultat->fetch_assoc()) {
        echo "<option value='" . $row['id'] . "'>" . $row['nom'] . "</option>";
    }
    ?>
</select>
  1. Choix de départements dans un formulaire de demande d’emploi :
<select name="departement">
    <?php 
    $resultat = $connexion->query("SELECT id, nom FROM departements");
    while($row = $resultat->fetch_assoc()) {
        echo "<option value='" . $row['id'] . "'>" . $row['nom'] . "</option>";
    }
    ?>
</select>
Sélection de sujets ou de matières dans un système de gestion de l’apprentissage (LMS) :
<select name="sujet">
    <?php 
    $resultat = $connexion->query("SELECT id, nom FROM sujets");
    while($row = $resultat->fetch_assoc()) {
        echo "<option value='" . $row['id'] . "'>" . $row['nom'] . "</option>";
    }
    ?>
</select>

Ces exemples illustrent comment intégrer dynamiquement des données provenant d’une base de données MySQL dans des listes déroulantes HTML à l’aide de PHP. En utilisant cette approche, vous pouvez créer des interfaces utilisateur interactives et dynamiques pour vos applications web.

Voici comment ces cas particuliers pourraient être implémentés avec du code PHP et MySQL :

  1. Liste déroulante multiniveau :
<select name="categorie_principale" onchange="getSousCategories(this.value)">
    <option value="">Sélectionnez une catégorie principale</option>
    <?php 
    $resultat = $connexion->query("SELECT id, nom FROM categories WHERE parent_id IS NULL");
    while($row = $resultat->fetch_assoc()) {
        echo "<option value='" . $row['id'] . "'>" . $row['nom'] . "</option>";
    }
    ?>
</select>

<select name="sous_categorie" id="sous_categorie">
    <option value="">Sélectionnez une sous-catégorie</option>
</select>

<script>
function getSousCategories(categoriePrincipaleId) {
    var sousCategorieSelect = document.getElementById("sous_categorie");
    sousCategorieSelect.innerHTML = "<option value=''>Chargement en cours...</option>";

    // Requête AJAX pour récupérer les sous-catégories en fonction de la catégorie principale sélectionnée
    // Exemple d'utilisation de jQuery pour la simplicité
    $.get("getSousCategories.php?categorie_id=" + categoriePrincipaleId, function(data) {
        sousCategorieSelect.innerHTML = data;
    });
}
</script>
  1. Liste déroulante dynamique en fonction de l’utilisateur connecté :
<select name="projet">
    <option value="">Sélectionnez un projet</option>
    <?php 
    $resultat = $connexion->query("SELECT id, nom FROM projets WHERE responsable_id = " . $_SESSION['utilisateur_id']);
    while($row = $resultat->fetch_assoc()) {
        echo "<option value='" . $row['id'] . "'>" . $row['nom'] . "</option>";
    }
    ?>
</select>
  1. Filtrage ou recherche en temps réel :
    Cette fonctionnalité peut nécessiter l’utilisation de JavaScript et d’une technique de requête AJAX pour filtrer les options de la liste déroulante en fonction de la saisie de l’utilisateur. Voici un exemple basique :
<select name="categorie" id="categorie">
    <option value="">Sélectionnez une catégorie</option>
</select>

<script>
$('#recherche').on('input', function() {
    var recherche = $(this).val();
    $.get("filtrerCategories.php?recherche=" + recherche, function(data) {
        $('#categorie').html(data);
    });
});
</script>
  1. Données dynamiques provenant de sources externes :
    Le principe est similaire à celui des autres exemples, mais vous pouvez utiliser une API tierce pour récupérer les données. Voici un exemple simplifié :
<select name="aeroport">
    <option value="">Sélectionnez un aéroport</option>
    <?php 
    $response = file_get_contents('https://api.example.com/aeroports');
    $data = json_decode($response, true);
    foreach($data as $aeroport) {
        echo "<option value='" . $aeroport['code'] . "'>" . $aeroport['nom'] . "</option>";
    }
    ?>
</select>
  1. Prise en charge de données multilingues :
    Vous pouvez stocker les libellés des options dans une table de traduction et les récupérer en fonction de la langue sélectionnée par l’utilisateur. Voici un exemple simplifié :
<select name="categorie">
    <option value="">Sélectionnez une catégorie</option>
    <?php 
    $langue = $_SESSION['langue']; // Supposons que la langue soit stockée dans une session
    $resultat = $connexion->query("SELECT id, nom_$langue AS nom FROM categories");
    while($row = $resultat->fetch_assoc()) {
        echo "<option value='" . $row['id'] . "'>" . $row['nom'] . "</option>";
    }
    ?>
</select>

Ces exemples illustrent comment intégrer des fonctionnalités avancées dans des listes déroulantes dynamiques en utilisant PHP, MySQL et parfois JavaScript. Cela permet d’offrir une expérience utilisateur plus riche et personnalisée dans différentes applications web.

Conclusion :
Dans cet article, nous avons vu comment créer une liste déroulante dynamique en utilisant PHP et MySQL. En utilisant les données stockées dans une base de données, nous avons pu peupler la liste déroulante avec des options dynamiques, offrant ainsi une expérience utilisateur plus flexible et évolutive. Cette approche peut être étendue et adaptée à diverses applications nécessitant des sélections dynamiques basées sur des données externes.

Autres articles

Exercices de Programmation Corrigés sur le Microprocesseur...
Le microprocesseur Motorola 6809 est un processeur 8 bits très...
Read more
Programmation ISO (ou G-code) : Guide
La programmation ISO (ou G-code) est un langage standard utilisé...
Read more
Exercices Corrigés Programmation ISO en tournage CNC
Voici une série d'exercices corrigés sur la programmation ISO en...
Read more
AZ

Recent Posts

Guide : Calculer une moyenne avec un filtre dans Excel

Excel offre plusieurs méthodes pour calculer une moyenne tout en tenant compte des filtres ou…

33 minutes ago

Utiliser les fonctions pour afficher la date actuelle dans Excel

Excel propose plusieurs fonctions pour insérer ou manipuler la date actuelle. Voici les principales méthodes…

1 heure ago

Comment convertir des textes en chiffres dans Excel

Lorsque des nombres sont stockés sous forme de texte dans Excel, ils ne peuvent pas…

1 heure ago

Comment extraire les chiffres d’une cellule dans Excel

Extraire uniquement les chiffres d'une cellule contenant du texte et des nombres mélangés est une…

2 heures ago

Comment supprimer plusieurs caractères spécifiques dans Excel

Pour supprimer plusieurs caractères spécifiques (par exemple, des symboles, chiffres ou lettres indésirables) dans des…

2 heures ago

Guide : Types d’Écarts dans Excel et Comment les Calculer

Excel permet de calculer différents types d'écarts selon le contexte, que ce soit pour des…

2 heures ago

This website uses cookies.