Votre question

[résolu] PHP/MySQL > récup nombres de champs et nom des champs d'une table

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
5 Mai 2006 19:44:42

Bonjour,

j'utilises php avec MySQL et il me faudrait une fonction qui prend en paramètre le nom d'une table et qui me retourne le nombre de champs de cette table dans une variable de type entier et le nom de chaque champ dans un tableau de chaînes.

Les informations de connection à la base sont ok je cherches juste à récupérer le nombre de champs et le nom de chacun de ces champs.

Si vous connaissez une fonction de ce type, je suis preneur :-D

mici tlm ;-)

Autres pages sur : resolu php mysql recup nombres champs nom champs table

5 Mai 2006 21:13:48

Il n'en existe pas à ma connaissance des toutes faites. Mais, ce n'est pas bien difficile d'en faire une. Comme ça, à froid :

  1. <?php
  2. function FieldNumber($table)
  3. {
  4. $sql = "SELECT * FROM $table";
  5. $req = mysql_query($sql);
  6. $data = mysql_fetch_array($req);
  7.  
  8. return sizeof($data);
  9. }
  10. ?>


Quant aux noms de chaque champs... Non, je vois pas là... Faut dire que j'ai pas énormément dormi ces temps-ci, et là ça commence à manquer, le sommeil ! Si ça me vient, je te tiendrais au courant ! ;-)
5 Mai 2006 21:57:15

merci pour ton aide Sethpolma ,je testerais ça demain.

Par contre, il me faut savoir le nombre de champs (colonnes) et pas le nombre d'enregistrements présents dans la table.

Est ce que ça renvoi le nombre de champs ou le nombre d'enregistrements ? :-?

Merci à toi ;-)
Contenus similaires
5 Mai 2006 22:25:54

Ce script te ramène le nombre de champs. Si tu veux, l'étoile sélectionne tous les champs. Puis, on fait un mysql_fetch_array. C'est à dire qu'on place le résultat dans un tableau. Or, on récupère la taille de ce tableau, d'où le nombre total de champs.

6 Mai 2006 12:10:37

voila :


$result = mysql_list_tables("base_de_donnees"); // récupère toutes les tables de la base de donnes


while ($row = mysql_fetch_row($result))
{

echo "<b>Table : $row[0]</b><br>";
$fields = mysql_list_fields("base_de_donnees", $row[0] ); //récupère tout les champs d'un table $row étant le tableau de toutes les tables
$columns = mysql_num_fields($fields); // récupère le nombre de champs d'un table

for ($i = 0; $i < $columns; $i++)
{
echo mysql_field_name($fields, $i) . "<br>"; // on affiche tous les champs de la table en cours
}


}



voila si tu as compris ce script liste toutes les tables de ta base de donnée et affiche pour chaque table le nom de tous les champs.

voila avec sa tu as tout pour réussir.

EDIT: je viens de relir ton message et tu as besoin que de sa toi en fait :

$fields = mysql_list_fields("base_de_donnees", "table"); //récupère tout les champs d'un table
$num_de_champs = mysql_num_fields($fields);

PS : le script du 1er qui t'as répondu marche aussi.

donc tu as le choix :-P
6 Mai 2006 14:14:40

Wahouu, je suis agréablement surpris par ce réponses très précises, je vais tester sur le champ toutes ces possibilités.

Merci à tous :-D
6 Mai 2006 15:42:46

Voila le résultat final, si ça peut servir à quelqu'un d'autre.

3 Fichiers au final:

- 1 qui représente le programme principal : Essai.php
- 1 qui déclare les fonctions: fonctions.php
- 1 qui permet de se connecter à la base de données : connexion_mysql.php

Normalement,seuls les fichiers essai.php et connexion_mysql doivent être modifiés pour fonctionner chez vous.

:-D

essai.php
  1. <?php
  2.  
  3. // Affiches le nb de champs et les noms des champs dans une table.
  4. // poolos(arobase)free(point)fr
  5. // CORPS DU PROGRAMME PRINCIPAL
  6.  
  7. // inclusion de la déclaration des fonctions.
  8. include 'fonctions.php';
  9.  
  10. // Définition du nom de la base de données et du nom de la table.
  11. $nom_de_la_base_de_donnees = "nom_bdd";
  12. $nom_de_la_table_a_interroger = "nom_table";
  13.  
  14. // Connexion à la base de données.
  15. include 'connexion_mysql.php';
  16.  
  17. // APPEL DES FONCTIONS
  18.  
  19. // renvoi le nombre de champs
  20. $nombredechamps = recup_nbchamps($nom_de_la_base_de_donnees,$nom_de_la_table_a_interroger);
  21. echo '<h2>nombre de champs :</h2>'.$nombredechamps.'<br><br>';
  22.  
  23. // renvoi le nom des champs
  24. $nomsdeschamps = recup_noms_champs($nom_de_la_base_de_donnees,$nom_de_la_table_a_interroger);
  25. echo '<h2>Noms des champs : </h2>';
  26. for ($i = 0; $i < $nombredechamps; $i++)
  27. {
  28. echo $nomsdeschamps[$i].'<br>';
  29. }
  30.  
  31. // renvoi le type de données des champs
  32. $typededonnees = recup_type_champs($nom_de_la_base_de_donnees,$nom_de_la_table_a_interroger);
  33. echo '<h2>Type de données des champs : </h2>';
  34. for ($i = 0; $i < $nombredechamps; $i++)
  35. {
  36. echo $typededonnees[$i].'<br>';
  37. }
  38.  
  39. ?>


fonctions.php
  1. <?php
  2.  
  3. function recup_nbchamps($bdd,$table)
  4. {
  5.  
  6. //récupère tous les champs de la table $table dans la base de données $bdd.
  7. $champs = mysql_list_fields($bdd,$table);
  8.  
  9. // Enumère le nombre de champs de la table.
  10. $nb_champs = mysql_num_fields($champs);
  11.  
  12. return $nb_champs;
  13.  
  14. }
  15. //fin de la fonction recup_nbchamps($bdd,$table)
  16.  
  17. function recup_noms_champs($bdd,$table)
  18. {
  19.  
  20. //récupère tous les champs de la table $table dans la base de données $bdd.
  21. $champs = mysql_list_fields($bdd,$table);
  22.  
  23. // Enumère le nombre de champs de la table.
  24. $nb_champs = mysql_num_fields($champs);
  25.  
  26. // rempli le tableau temporaire des noms de champs.
  27. for ($i = 0; $i < $nb_champs; $i++)
  28. {
  29. $tableau_noms_temp[$i] = mysql_field_name($champs, $i);
  30. }
  31.  
  32. $tableau_noms = array();
  33.  
  34. for ($i = 0; $i < $nb_champs; $i++)
  35. {
  36. array_push($tableau_noms,$tableau_noms_temp[$i]);
  37. }
  38. return $tableau_noms;
  39.  
  40. }
  41. //fin de la fonction recup_noms_champs($bdd,$table)
  42.  
  43. function recup_type_champs($bdd,$table)
  44. {
  45.  
  46. //récupère tous les champs de la table $table dans la base de données $bdd.
  47. $champs = mysql_list_fields($bdd,$table);
  48.  
  49. // Enumère le nombre de champs de la table.
  50. $nb_champs = mysql_num_fields($champs);
  51.  
  52. // rempli le tableau temporaire des types de champs
  53. for ($i = 0; $i < $nb_champs; $i++)
  54. {
  55. $tableau_types_temp[$i] = mysql_field_type($champs, $i);
  56. }
  57.  
  58. $tableau_types = array();
  59.  
  60. for ($i = 0; $i < $nb_champs; $i++)
  61. {
  62. array_push($tableau_types,$tableau_types_temp[$i]);
  63. }
  64. return $tableau_types;
  65.  
  66. }
  67. //fin de la fonction recup_type_champs($bdd,$table)
  68.  
  69. ?>


connexion_mysql.php
  1. <?php
  2. // Connexion à la base de données.
  3. // Infos sur la base.
  4. $Hote_de_la_bdd = "hote_bdd";
  5. $Utilisateur = "Utilisateur";
  6. $Mot_de_passe = "mot_de_passe";
  7. $Nom_base_de_donnees = "nom_bdd";
  8.  
  9. // Connexion à MySQL et sélection de la base de données.
  10. $Lien_MySQL = mysql_connect($Hote_de_la_bdd,$Utilisateur,$Mot_de_passe);
  11. mysql_select_db($Nom_base_de_donnees,$Lien_MySQL);
  12. ?>


Voila voila ;-)

[edit]type de données des champs[/edit]
6 Mai 2006 18:02:25

nikel poolos ! sa fait plaisr d'aider quelqu'un qui s'est déja renseigné sur le php avant , et qui le connait avant. Vu comme tu as très bien su te servir de ce qu'on ta filé comme indice , sans te filer tout le script complet !

merci sa me fait plaisir par ce qu'à force de voir des posts demandant de l'aide pour faire un script en php et que tu t'apperçois que le type n'a jamais entendu parler de ce language bha sa dégoute un peu....

heuresement il y a encore des gens comme Poolos !!!!
lol !!
++

et sa me fait plaisir de t'avoir aidé sincérement ! ^^
6 Mai 2006 18:23:29

C'est à moi de vous remercier, sans vous, oualou comme on dit par chez moi, j'aurais fini par trouver mais voila ça a pris deux plombes de moins.

Pi comme je suis du genre à partager mes sources, bha voila :p 

ça fait zizir !

;-)
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS