Field Type

Résolu
b_medamine Messages postés 69 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 4 décembre 2007 - 28 nov. 2005 à 11:31
b_medamine Messages postés 69 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 4 décembre 2007 - 28 nov. 2005 à 15:43
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

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 nov. 2005 à 15:39
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.
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 nov. 2005 à 11:57
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);
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 nov. 2005 à 11:58
ceci dit, la doc précise qu'il vaut mieux utiliser les fonctions is_* () : is_int(), is_string() etc...
0
b_medamine Messages postés 69 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 4 décembre 2007
28 nov. 2005 à 12:00
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.
0

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

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 nov. 2005 à 12:25
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...
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
28 nov. 2005 à 13:46
"$tab = array("0"=>"265",
"1"=>"quelquechose","

C'est un tableau associatif ca... pas numérique. Comme dit Malalam en faite !
0
b_medamine Messages postés 69 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 4 décembre 2007
28 nov. 2005 à 13:49
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
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 nov. 2005 à 14:02
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
0
b_medamine Messages postés 69 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 4 décembre 2007
28 nov. 2005 à 14:10
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à .

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

gettype() alors.
0
b_medamine Messages postés 69 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 4 décembre 2007
28 nov. 2005 à 15:43
C'est ce que j'ai fait :-) et ça marche super bien.


Merci en tout cas pour vos réponses
0
Rejoignez-nous