Field Type

[Résolu]
Signaler
Messages postés
69
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
4 décembre 2007
-
Messages postés
69
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
4 décembre 2007
-
Bonjour,



Y a t-il une fonction en PHP qui permet de me donner le type d'un champ.



Exemple : si g un tableau $tab = array("0"=>"265",





"1"=>"quelquechose",





"2"=>"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...."...);



de me retourner que le premier élement est un entier, le deuxième est un string, le troisième est un texte ....



merci pour votre réponse

PS: Je ne cherche pas la fonction mysql_field_name ( puisque celle là retourne le type par lequel t'as créé ta base)

11 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Ben là, tu gères les types, voilà, en fonction de ta problématique.

Donc plus besoin de savoir de quel type est ce que tu récupères...c'est bien ce que je disais ;-)



Maintenant y avait un autre moyen...

Tu commences par tester si c'est booléen avec un truc un peu à la con :

if ($myVar true || $myVar false)

// noter le et pas...

// booléen

else if (is_numeric ($myVar) )

// numérique (entier apparemment selon ton code donc

else if (is_string ($myVar))

// chaîne.



Tu élimines ainsi dans l'ordre. Si tu commençais par is_string : tout serait des chaîne/

Si tu commençais par is_numeric : tu perdrais tes booléens.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

var_dump ($tab);
te donnera le type de chacune des entrées de ton tableau.

Sinon tu as aussi gettype (); :
foreach ($tab as $entree)
echo gettype ($entree);
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
ceci dit, la doc précise qu'il vaut mieux utiliser les fonctions is_* () : is_int(), is_string() etc...
Messages postés
69
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
4 décembre 2007

le getType est déconseillé .... je viens de l'utiliser, mais ça me
donne tout comme string, alors que j'en ai des champs numérique !!

g des champs qui prennent la valeur true / false ... mais qd je fais is_bool(... ) ça me donne rien.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Re,



$var = "265"; // $var EST une chaîne...et pas un entier.

$var = 265; // $var est un entier.

$var = "true"; // $var est une chaine, pas un booleen...

etc...
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
"$tab = array("0"=>"265",
"1"=>"quelquechose","

C'est un tableau associatif ca... pas numérique. Comme dit Malalam en faite !
Messages postés
69
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
4 décembre 2007

Mais je vois que vous n'avez pas compris ce que je cherche .... Je ne
contredit pas qu'il s'agit d'un tableau associatif ... Je cherche une
méthode que à partir de ce tableau ( quelque soit) de me retourner
'int' qs c une valeur numérique, et un string quand c une chaine de
caractère ...



je comprend que $var= "256"; est une chaine et pas un entier .... mais je ch à la rendre une valuer numérique
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Là tu demandais comment détecter le type...:

" Y a t-il une fonction en PHP qui permet de me donner le type d'un champ. "



Et cela marche très bien. Tu n'as que des chaînes dans ton tableau,
donc, il renvoie toujours que tu as une chaîne pour chaque entrée de
ton tableau.



Pour convertir :

tu as settype();

ou bien :

$var = '265';

$var = (int) $var;



Maintenant ton problème vient à la base d'une mauvaise gestion des types dans ton code.

Si tu construisais ton tableau correctement (avec des int quand tu veux
un int, des booléens quand tu veux un booléen), tu n'aurais pas ce
problème de n'avoir que des chaînes que tu doives ensuite convertir.



Une aide supplémentaire :

http://fr.php.net/manual/fr/language.types.string.php#language.types.string.conversion
Messages postés
69
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
4 décembre 2007

Y a aucune mauvaise gestion des types, c'est juste question que je ne
voulais pas écrire une centaine de lignes pr expliquer mon problème
.... J'essaye à chaque fois de réduire la problématique pr qu'elle soit
aussi ouverte et interssante pr non pr mon cas, pour tt les utils
!!



Il s'agit d'un moteur de recherche multi critères .... J'ai 4 listes
déroulantes liées ... les trois premières marchent bien, mais je
cherchais à ce que lorsqu'on chosit un élement de la troisième liste, y
a soit un champ de texte ( pr un texte), soit une case à cocher ( pour
un booleén), et aussi pour que je gère bien les erreurs ...



la base au début est construite avec des champs text ... donc je
ne pouvais pas vie mysql_field_type d'extraire le type .... je me suis
dis si jamais je trouve le type de l'élement de la troisième liste, je
pourrai facilement donner le bon champ ds la 4ème colonne au lieu de
laisser à l'utilisateur de rentrer n'importe quelle valeur ...



la je suis entrain d'implémenter autre solution : je me connecvte à ma
base, et je fais un select distinct pour chaque colonne ... si la
colonne prend que des valeurs numériques ( is_numeric) je met un champ
de texte , si elle prend ( false ou true) je met une case à cocher , et
si c un string ( je génère une liste déroulante ( like, = , != ...)



voilà voilà .

.....
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
" Y a t-il une fonction en PHP qui permet de me donner le type d'un champ."

gettype() alors.
Messages postés
69
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
4 décembre 2007

C'est ce que j'ai fait :-) et ça marche super bien.


Merci en tout cas pour vos réponses