JeuWeb - Crée ton jeu par navigateur
[Résolu] Stockage nombre entier base MYSQL - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Stockage nombre entier base MYSQL (/showthread.php?tid=3807)

Pages : 1 2


[Résolu] Stockage nombre entier base MYSQL - tog84 - 15-03-2009

Bonsoir,
Quand je veux vérifier l'égalité stricte avec '===' de deux entiers, le résultat n'est pas bon. Les deux valeurs doivent être égales.
Donc pour le premier c'est l'id d'un GET qui est converti avec la fonction intval() pour sécuriser ce retour avant la vérification. Son var_dump est bon, c'est bien un entier.
Le second, c'est l'id d'un nombre stocké dans une BDD mysql dont voici sa structure :
Code PHP :
<?php 
`id_terrain` int(11) unsigned NOT NULL default '0'
Son var_dump retourne un string.
Comment je peux convertir cette entrée dans ma base en véritable entier ?
Je vous remercie pour vos lumières.
Cordialement
tog84


RE: Stockage nombre entier base MYSQL - tog84 - 15-03-2009

Le premier :
var_dump($id_terrain} affiche int(19)

Le second :
var_dump($result->id_terrain} affiche string(2) "19"


RE: Stockage nombre entier base MYSQL - Sephi-Chan - 16-03-2009

Si l'un est une chaîne et l'autre un entier, il est donc normal que la comparaison stricte ne fonctionne pas. Smile

Deux possibilités : caster la chaîne en entier ((int) variable) ou bien utiliser la comparaison large (variable == variable). La deuxième solution est plus lisible/pratique/censée.


Sephi-Chan


RE: Stockage nombre entier base MYSQL - tog84 - 16-03-2009

J'hésitais à utiliser la comparaison plus large pour une question de sécurisation poussée à l'extrême.
Il est vrai que czla me s'implifira beaucoup la recherche des erreurs de code.
Coder en php5 avec des classes qui se multiplient, devient difficile de trouver ces petites coquilles, à moins de faire un var_dump() à chaque fois pour vérifier ses variables.
Merci pour vos deux réponses.
Cordialement

Heureux de vous retrouver après quelques jours d'absence forcée :d


RE: [Résolu] Stockage nombre entier base MYSQL - Anthor - 16-03-2009

Citation :La deuxième solution est plus lisible/pratique/censée.

Ha ouais ? Merde.


RE: [Résolu] Stockage nombre entier base MYSQL - Sephi-Chan - 16-03-2009

Carrément ! Ça n'a pas de sens de faire if((int) $a === $b) alors qu'on sait d'avance que $a sera une chaîne numérique et $b un entier. Smile

Je me suis amusé à faire ça quelques temps... Avant de me rendre compte que c'était inutile et au final nuisait à la clarté du code.

Les égalités strictes, c'est bien pour certaines choses particulières (notamment quand l'une des opérande est un booléen).


Sephi-Chan


RE: [Résolu] Stockage nombre entier base MYSQL - Anthor - 16-03-2009

Ça nuit a la lisibilité de te rappeler que c'est un entier ?

Tu t'en rappelleras quand tu auras bossé sur 10 autres projets ? Et qu'un bug surviendra ?


RE: [Résolu] Stockage nombre entier base MYSQL - Sephi-Chan - 16-03-2009

Je trouve ça très verbeux et plus gênant qu'autre chose au final : le nommage de mes variables suffit à éviter les confusions.
Ce n'est pas comme si c'était une faute de tester une égalité large plutôt qu'autre chose.

Chacun fait comme il veut, après tout.


Sephi-Chan


RE: [Résolu] Stockage nombre entier base MYSQL - Allwise - 16-03-2009

En PHP y a quasiment pas de typage, et c'est très souvent une source d'erreur. Dans un langage typé, il y aurait certes un poil plus de code mais la question ne se poserait même pas. Je pense aussi qu'il vaut mieux transtyper ses variables avant de les comparer plutôt que de laisser le moteur de PHP le faire. Plus de lisibilité, plus de sécurité, plus de cohérence.


RE: [Résolu] Stockage nombre entier base MYSQL - pascal - 16-03-2009

(16-03-2009, 03:36 PM)oxman a écrit : Le nommage de tes variables suffit à éviter les confusions ?
Donc tu nommes tes variables contenant des entiers $iMaVar ou $i_maVar ?
Et les strings $sMaVar ou $s_maVar ?

$mixedMyVar Big Grin

A+

Pascal