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 

Votre réponse

10 réponses

Meilleure réponse
TychoBrahe 1310 Messages postés samedi 31 janvier 2009Date d'inscription 5 juin 2013 Dernière intervention - 17 mars 2009 à 10:03
3
Merci
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.

Merci TychoBrahe 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de TychoBrahe
Meilleure réponse
TychoBrahe 1310 Messages postés samedi 31 janvier 2009Date d'inscription 5 juin 2013 Dernière intervention - 17 mars 2009 à 17:56
3
Merci
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'];

Merci TychoBrahe 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 103 internautes ce mois-ci

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
Merci
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
Merci
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
Merci
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
Merci
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
Merci
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
Merci
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
Merci
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
Merci
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.