Maison >base de données >tutoriel mysql >Comment puis-je générer dynamiquement des tableaux HTML à partir de données MySQL sans spécifier manuellement les en-têtes ?

Comment puis-je générer dynamiquement des tableaux HTML à partir de données MySQL sans spécifier manuellement les en-têtes ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-04 02:11:10196parcourir

How Can I Dynamically Generate HTML Tables from MySQL Data Without Manually Specifying Headers?

Création de tableaux HTML dynamiques à l'aide de MySQL et PHP

Vous avez peut-être rencontré des situations dans lesquelles vous devez créer des tableaux HTML remplis de données provenant de MySQL, mais les en-têtes de colonnes du tableau changent fréquemment. Mettre à jour manuellement le code pour refléter ces changements peut être fastidieux. Voici une solution pour générer dynamiquement des tables HTML à partir de données MySQL sans avoir besoin de spécification manuelle d'en-tête :

Solution MySQL :

  1. Se connecter à la base de données  : Établissez une connexion MySQL à l'aide de mysqli_connect() et définissez le jeu de caractères.
  2. Définissez un fonction pour sortir des données dans une table : Créez une fonction qui prend la connexion à la base de données et le nom de la table en entrée.
  3. Vérifiez si la table existe : Validez si la table d'entrée existe en utilisant Requête SHOW TABLES.
  4. Récupérer les données de la table : utilisez SELECT * FROM $table pour récupérer toutes les données de la table.
  5. Obtenir les métadonnées de la colonne : obtenez les informations sur la colonne à l'aide de fetch_fields().
  6. Créer un tableau HTML : démarrez le tableau avec balises, puis générez et et
    éléments pour les en-têtes de colonnes.
  7. Remplir les lignes du tableau : parcourez les données et affichez chaque ligne dans
  8. tags.
  9. Fin du tableau : Fermez le tags.

    Exemple :

    <?php
    
    // Create a MySQLi connection
    $mysqli = new mysqli('localhost', 'username', 'password', 'database');
    
    function outputMySQLToHTMLTable(mysqli $mysqli, string $table)
    {
        // Check table existence
        $tableNames = array_column($mysqli->query('SHOW TABLES')->fetch_all(), 0);
        if (!in_array($table, $tableNames, true)) {
            throw new UnexpectedValueException('Unknown table name provided!');
        }
    
        // Fetch data and metadata
        $res = $mysqli->query('SELECT * FROM ' . $table);
        $data = $res->fetch_all(MYSQLI_ASSOC);
    
        echo '<table>';
        // Display table header
        echo '<thead>';
        echo '<tr>';
        foreach ($res->fetch_fields() as $column) {
            echo '<th>' . htmlspecialchars($column->name) . '</th>';
        }
        echo '</tr>';
        echo '</thead>';
    
        // Display table rows
        if ($data) {
            foreach ($data as $row) {
                echo '<tr>';
                foreach ($row as $cell) {
                    echo '<td>' . htmlspecialchars($cell) . '</td>';
                }
                echo '</tr>';
            }
        } else {
            echo '<tr><td colspan="' . $res->field_count . '">No records in the table!</td></tr>';
        }
        echo '</table>';
    }
    
    // Output the table
    outputMySQLToHTMLTable($mysqli, 'user');

    Solution PDO :

    L'approche PDO est similaire, mais vous devrez utiliser fetchAll(PDO::FETCH_COLUMN) pour la validation du nom de table et getColumnMeta() pour la colonne métadonnées.

    Cette approche garantit que votre code peut générer dynamiquement des tableaux HTML basés sur la dernière structure de table de MySQL, éliminant ainsi le besoin de mises à jour manuelles des en-têtes.

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn