Reconnaitre le type d'un champs mysql [Résolu]

Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention - 16 mars 2009 à 20:16 - Dernière réponse : Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention
- 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
Afficher la suite 

10 réponses

Répondre au sujet
TychoBrahe 1310 Messages postés samedi 31 janvier 2009Date d'inscription 5 juin 2013 Dernière intervention - 17 mars 2009 à 10:03
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de TychoBrahe
TychoBrahe 1310 Messages postés samedi 31 janvier 2009Date d'inscription 5 juin 2013 Dernière intervention - 17 mars 2009 à 17:56
+3
Utile
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'];
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de TychoBrahe
TychoBrahe 1310 Messages postés samedi 31 janvier 2009Date d'inscription 5 juin 2013 Dernière intervention - 16 mars 2009 à 20:49
0
Utile
Salut,

La base information_schema est ton amie, surtout sa table COLUMNS.
Commenter la réponse de TychoBrahe
Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention - 16 mars 2009 à 22:34
0
Utile
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
Commenter la réponse de Annadrill
cs_mike1310 232 Messages postés jeudi 30 août 2007Date d'inscription 31 juillet 2009 Dernière intervention - 17 mars 2009 à 10:35
0
Utile
Une fois les valeur récupérer, tu peux utiliser la fonction php stringgettype
(
mixed<tt class="parameter">$var</tt>
)
Commenter la réponse de cs_mike1310
cs_mike1310 232 Messages postés jeudi 30 août 2007Date d'inscription 31 juillet 2009 Dernière intervention - 17 mars 2009 à 10:36
0
Utile
Le lien à un peu déconner :D
 Je voulais dire la fonction gettype
Commenter la réponse de cs_mike1310
TychoBrahe 1310 Messages postés samedi 31 janvier 2009Date d'inscription 5 juin 2013 Dernière intervention - 17 mars 2009 à 12:33
0
Utile
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'.
Commenter la réponse de TychoBrahe
Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention - 17 mars 2009 à 13:48
0
Utile
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
Commenter la réponse de Annadrill
Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention - 17 mars 2009 à 17:02
0
Utile
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
Commenter la réponse de Annadrill
Annadrill 149 Messages postés mercredi 9 mai 2007Date d'inscription 22 novembre 2012 Dernière intervention - 17 mars 2009 à 23:02
0
Utile
Ah!  bin oui, vu comme ca ca fonctionne !

j'ai encore beaucoup à apprendre,

merci beaucoup !

bonne soirée

Annadrill
Commenter la réponse de Annadrill

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.