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

Les Fonctions en PHP : Comprendre et...
Le langage PHP (Hypertext Preprocessor) est un langage de script...
Read more
QCM en programmation - Exemple PDF
La programmation est devenue une compétence incontournable dans le monde...
Read more
Introduction à la Programmation Orientée Objet (POO)
Cet article vise à :Comprendre les concepts fondamentaux de la...
Read more

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *