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

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

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

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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 ;-)

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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

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



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 ! ;-)

Répondre à Sethpolma

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 ;-)

Répondre à poolos

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.

Répondre à Sethpolma

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

Répondre à Kymic@IDN

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

Répondre à poolos

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 : connection_mysql.php

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

:-D

essai.php

Code :
  1. <?php
  2. // Affiches le nb de champs et les noms des champs dans une table.
  3. // poolos@free.fr
  4. // CORPS DU PROGRAMME PRINCIPAL
  5. // inclusion de la déclaration des fonctions.
  6. include 'fonctions.php';
  7. // Définition du nom de la base de données et du nom de la table.
  8. $nom_de_la_base_de_donnees = "nom_bdd";
  9. $nom_de_la_table_a_interroger = "nom_table";
  10. // APPEL DES FONCTIONS
  11. $nombredechamps = recup_nbchamps($nom_de_la_base_de_donnees,$nom_de_la_table_a_interroger);
  12. echo '<h2>nombre de champs :</h2>'.$nombredechamps.'<br><br>';
  13. $nomsdeschamps = recup_noms_champs($nom_de_la_base_de_donnees,$nom_de_la_table_a_interroger);
  14. echo '<h2>Détail des champs : </h2>';
  15. for ($i = 0; $i < $nombredechamps; $i++)
  16.   {
  17.     echo $nomsdeschamps[$i].'<br>';
  18.   }
  19. ?>



fonctions.php

Code :
  1. <?php
  2.  
  3.   function recup_nbchamps($bdd,$table)
  4.   {
  5.     // connection à la base de données
  6.     include 'connection_mysql.php';
  7.    
  8.     //récupère tous les champs de la table $table dans la base de données $bdd.
  9.     $champs = mysql_list_fields($bdd,$table);
  10.  
  11.     // Enumère le nombre de champs de la table.
  12.     $nb_champs = mysql_num_fields($champs);
  13.    
  14.     return $nb_champs;
  15.    
  16.   }
  17.   //fin de la fonction recup_nbchamps($bdd,$table)
  18.  
  19.   function recup_noms_champs($bdd,$table)
  20.   {
  21.     // Connection à la base de données.
  22.     include 'connection_mysql.php';
  23.    
  24.     //récupère tous les champs de la table $table dans la base de données $bdd.
  25.     $champs = mysql_list_fields($bdd,$table);
  26.  
  27.     // Enumère le nombre de champs de la table.
  28.     $nb_champs = mysql_num_fields($champs);
  29.  
  30.     // rempli le tableau temporaire des noms de champs.
  31.     for ($i = 0; $i < $nb_champs; $i++)
  32.     {
  33.       $tableau_noms_temp[$i] = mysql_field_name($champs, $i);
  34.     }
  35.    
  36.     $tableau_noms = array();
  37.    
  38.     for ($i = 0; $i < $nb_champs; $i++)
  39.     {
  40.       array_push($tableau_noms,$tableau_noms_temp[$i]);
  41.     }
  42.     return $tableau_noms;
  43.    
  44.   }
  45.   //fin de la fonction recup_noms_champs($bdd,$table)
  46.  
  47. ?>



connection_mysql.php

Code :
  1. <?php
  2.   // Connection à 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.   // Connection à 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 ;-)

Ca marche chez moi alors ca doit marcher chez vous aussi. ces sources peuvent être copiées a mort, et pi d'facon vive l'Open Source alors zut !! ;-)

Répondre à poolos

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 ! ^^

Répondre à Kymic@IDN

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 !

;-)

Répondre à poolos
Tom's Guide > Forum > Programmation > [résolu] PHP/MySQL > récup nombres de champs et nom des champs d'une table
Aller à :

Il y a 1110 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens