Reconnaitre le type d'un champs mysql

Résolu
Annadrill Messages postés 147 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 22 novembre 2012 - 16 mars 2009 à 20:16
Annadrill Messages postés 147 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 22 novembre 2012 - 17 mars 2009 à 23:02
Bonsoir,

voilà, je cherche à faire un code qui me permettrait de lister les champs d'un formulaire et d'y noter le type de champs (varchar, text....)
¨pour lister les champs, ca marche, mais c'est pour trouver le type... aucune idée comment m'y prendre,
qqn aurait-il une idée?

bonne soirée :)

Annadrill

10 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
17 mars 2009 à 10:03
Salut,

En effet c'est du SQL, et sur ce point là tu ne peux pas faire autrement. Grâce a la base et la table dont je t'ai donné le nom tu peux construire une requête qui va récupérer le nom et le type des champs de ta table. Bref, ceci devrais avoir l'effet que tu recherche :
SELECT COLUMN_NAME, DATA_TYPE FROM `information_schema`.`COLUMNS` WHERE TABLE_SCHEMA DATABASE() AND TABLE_NAME 'nom_de_ta_table';

Pense a bien changer nom_de_ta_table par le nom de ta table. Si la table se trouve dans une autre base que celle que tu utilise actuellement, alors il te faut remplacer DATABASE() par le nom de la base de donnée.
3
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
17 mars 2009 à 17:56
Salut,

while($ligne=mysql_fetch_array($res,MYSQL_NUM))
   {   
      echo $ligne;
   }

Remplace donc par ceci :

while ($ligne = mysql_fetch_array($res))
   echo 'Le champ ', $ligne['COLUMN_NAME'], ' est de type ', $ligne['DATA_TYPE'];
3
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
16 mars 2009 à 20:49
Salut,

La base information_schema est ton amie, surtout sa table COLUMNS.
0
Annadrill Messages postés 147 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 22 novembre 2012
16 mars 2009 à 22:34
Hello,

merci de cette réponse rapide !
j'ai cherché quelques infos sur information_shema et la table COLUMNS
mais je ne tombe que sur du SQL et pas sur du php,

donc je ne vois pas comment m'en servir sniff,
ce que je cherche a faire en fait, c'est une page php qui aille chercher une une table,
et qui d'apres les champs et les types de champs, crée un formulaire pour y ajouter des données.

mais comme jai des champs varchars auquels je veu ajouter un input et des champs text auquels je veux ajouter des textarea
il faut que je trouve comment reconnaitre le type de champs,
a moins que je parte dans le mauvais sens et qu'il y ait une autre manière de faire...
tu s'est ou je pourrais trouver des exemples de information_shema avec php?

salutti :)

Annadrill
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
17 mars 2009 à 10:35
Une fois les valeur récupérer, tu peux utiliser la fonction php stringgettype
(
mixed<tt class="parameter">$var</tt>
)
0
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
17 mars 2009 à 10:36
Le lien à un peu déconner :D
 Je voulais dire la fonction gettype
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
17 mars 2009 à 12:33
mike1310 : Certainement pas non. PHP et MySQL n'ont pas du tout les mêmes types, il est impossible de retrouver le type du champ MySQL de cette manière. De plus, si je ne me trompe pas, tous les résultats sont traités par PHP comme une chaine de caractère, rendant le gettype() complètement inutile car renvoyant toujours 'string'.
0
Annadrill Messages postés 147 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 22 novembre 2012
17 mars 2009 à 13:48
re : hihi,
merci pour les réponses,

j'ai essayé ceci :
$idcom=connex('sarah','param');
  $req="SELECT COLUMN_NAME, DATA_TYPE FROM `information_schema`.`COLUMNS` WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 's_nouveaute'";
  [mailto:$res=@mysql_query($req,$idcom $res=@mysql_query($req,$idcom]);
  if(!$res)
  {
  echo "Lecture impossible";
  }
  else
  {
   while($ligne=mysql_fetch_array($res,MYSQL_NUM))
      {   
      echo $ligne;
   }
}

      mais cela me donne juste : Array Array Array Array Array Array Array Array Array Array

et jai testé un foreach à la place de echo $ligne

foreach($ligne as $valeur)
 {
 echo '>> '.$valeur.'
';
 }

ce qui me donne un résultat mais qui me mets une fois pour $valeur, une fois le nom de la ligne, et une fois le type,

genre

>> ID
>> varchar
>> fr_meta_desc
>> tinytext

et je ne sais pas comment faire pour pouvoir récupérer par exemple $val1 qui serait égal a ID et $val2 qui serait égal a varchar ici.??

ensuite je pourrai faire un if et si c'est un type varchar écrire un input et si c'est un text ou tinytext écrire un textarea

   
Annadrill
0
Annadrill Messages postés 147 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 22 novembre 2012
17 mars 2009 à 17:02
voilà, encore quelques heures à chercher... et toujours pas trouvé...

quelqu'un sait comment je peux me retrouver avec une ligne qui me sortirait : $val1 >> $val2 pour chacune des lignes ?

Annadrill
0
Annadrill Messages postés 147 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 22 novembre 2012
17 mars 2009 à 23:02
Ah!  bin oui, vu comme ca ca fonctionne !

j'ai encore beaucoup à apprendre,

merci beaucoup !

bonne soirée

Annadrill
0
Rejoignez-nous