Vous êtes ici Codes PHP et MySQL > Inclassable - divers > Détecter, récupérer et afficher dynamiquement les...

 

Détecter, récupérer et afficher dynamiquement les noms des champs retournés par MySQL

Ce bout de code vous évite de devoir saisir à la main le noms des colonnes avant de faire la boucle pour remplir le tableau.

Le script détecte/ repère/ récupère automatiquement les noms/ libellés/ intitulés des champs/ colonnes renvoyés par MyQL.

Si vous faites des jointures, votre liste de champs a l'air suivant : table1.champ1, table1.colonne2, table2.champ1.

Malheureusement MySQL ne contient dans sa réponse que les noms des colonnes : champ1, champ2, champ1.

Pour palier ce manque, une expra (expression rationnelle) capture les noms complets des champs et les affiche si il y en a.

Vous pouvez même distinguez les tables lors de l'affichage sous forme table.champ.

Je donne le bout de code sous la forme d'une page HTML autonome.
 
poujolrost-mathias
Site de l'auteur voir
[2] sources en MySQL voir
Code vu 8485 fois
Enregistré le 28 Fév 2009
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Détecter, récupérer et afficher dynamiquement les noms des champs retournés par MySQL
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Détecter, récupérer et afficher dynamiquement les noms... */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts305-MySQL.htm            */
/* Auteur         : poujolrost-mathias                                        */
/* Date édition   : 28 Fév 2009                                               */
/* Website auteur : http://site.mathiaspoujolrost.net/competences/            */
/*                                                                            */
/******************************************************************************/
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>PHP/ MySQL : Détecter, repérer, récupérer, afficher automatiquement/
 dynamiquement le nom des champs/ colonnes/ entêtes retournés/ renvoyés par
 MySQL</title>
<style type="text/css" media="all">
* {font-size: .95em;}
table {
    border-collapse: collapse;
}
table, tr, th, td {
    border: 1px solid black;
}
th, td {
    padding: 1ex;
}
th em {
    font-style: italic;
    color: #00F; /* bleu primaire */
}
</style>
</head>

<body>
<?php
/* paramètres du bouts de code pour vous */
$mabase "dotclear";
$matable "dc_post, dc_user";
$requete "SELECT dc_post.post_url , dc_post.user_id, dc_user.user_name FROM $matable" .
" LIMIT 0, 10";

/* connection au serveur MySQL */
$id_connection mysql_connect("localhost""root""");
    if (!$id_connection) {
        echo 
"<p style=\"color: red;\">Impossible de se connecter au serveur MySQL.</p>";
    }

/* sélection de la base */
$id_selection_base =  mysql_select_db($mabase);
    if (!$id_selection_base) {
        echo 
"<p style=\"color: red;\">Impossible de sélectionner la base" .
" <samp>$mabase</samp>.</p>";
    }
    
/* exécution de la requête */
$resultatsRequete mysql_query($requete$id_connection);

if (!$resultatsRequete) {
    echo 
"Lecture impossible, la requête <samp>$requete</samp> est mal formulée.";
} 
else {
/* affichage des résultats */
    echo 
"<table>\n<caption>Résultats pour la requête <samp>$requete</samp></caption>\n";

    echo "\t<tr>\n";
    
    /*  détection des libellés complets des colonnes (= cas de jonture) */
    preg_match_all("[[\w]+\.[\w]+]"$requete$champsVeritablesPREG_SET_ORDER
);
    
// les intitulés complets détectés dans $requete sont enregistrés dans l'array
// $champsVeritables
    
    
/* affichage des noms des champs, selon le résultat renvoyé par MySQL + les vrai
// noms des en-têtes */
    $nombreDeChamps mysql_num_fields($resultatsRequete);
    for ($i 0$i $nombreDeChamps$i++) {
        $nom_colonne mysql_field_name($resultatsRequete$i);
        if (!empty($champsVeritables)) { // si on a fait une jointure
            $nom_colonne .= "<br />({$champsVeritables[$i][0]})";
            /* emphase de la table : décommentez la ligne suivante */
            
//$nom_colonne = preg_replace("[([\w]+)\.]", "<em title=\"nom de la table dont
// le champ fait partie\">$1</em>.", $nom_colonne);
            
/* autre mise en relief : que la partie différente du nom du champ (après le
// préfixe comprenant un underscore) 
            /* marche pour dotclear et wordpress, entres autres systèmes */
            $nom_colonne preg_replace("[(.+)_(.+)\.([\w]+)]""$1_<em>$2</em>.$3"$nom_colonne);
        }
        echo "\t\t<th scope=\"col\">$nom_colonne</th>\n";
    } 
    echo "\t</tr>\n";
    // FIN affichage des intitulés de champs
    
// exlication du <th scope="col"></th> : http://www.pompage.net/pompe/autableau/
// (l'accessibilité)
    
    /* remplissage de chaque ligne, par les résultats correpondants */
    while($ligne mysql_fetch_array($resultatsRequete,MYSQL_NUM))
    { 
    echo "\t<tr>\n";
        foreach($ligne as $valeur)
        {
            echo "\t\t<td>$valeur</td>\n";
        }
    echo "\t</tr>\n";
    }
    
    echo "</table>";
}

mysql_close($id_connection);
?>
</body>
</html>
 

Fonctions du code

: Ouvre une connexion à un serveur MySQL - (PHP 4, PHP 5, PECL mysql:1.0)
: Affiche une chaîne de caractères - (PHP 4, PHP 5)
: Sélectionne une base de données MySQL - (PHP 4, PHP 5, PECL mysql:1.0)
: Envoie une requête à un serveur MySQL - (PHP 4, PHP 5, PECL mysql:1.0)
: Expression rationnelle globale - (PHP 4, PHP 5)
: Retourne le nombre de champs d'un résultat MySQL - (PHP 4, PHP 5, PECL...
: Retourne le nom d'une colonne dans un résultat MySQL - (PHP 4, PHP 5, PECL...
: Détermine si une variable contient une valeur non nulle - (PHP 4, PHP 5)
: Rechercher et remplacer par expression rationnelle standard - (PHP 4, PHP 5)
: - (PHP 4, PHP 5, PECL mysql:1.0)
: Ferme la connexion MySQL - (PHP 4, PHP 5, PECL mysql:1.0)
Commentaire
 Fonctionne trés bien merci monsieur ... !
 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Inclassable - divers

 
 

MySQL

 
 
 
PHP et MySQL Livre MySQL

PHP et MySQL
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
    Editeur PHP
 
        Publicité