petit soucis avec intval() - pfff facile de crier qd on ne sait pas :p

petit soucis avec intval() - pfff facile de crier qd on ne sait pas :p - PHP - Programmation

Marsh Posté le 20-10-2005 à 10:54:27    

youp,
 
 
je récupère les données d'un formulaire et pour m'assurer de bien récupérer un entier, je fais
 
 

Code :
  1. die(intval($_POST['la_variable']));


 
résultat: RIEN
 
 
sans le intval()

Code :
  1. die($_POST['la_variable']);


 
résultat: 6
 
 
j'ai essayé:
 

Code :
  1. intval(''.$_POST[]);
  2. intval(' '.$_POST[]);
  3. intval(' '.$_POST[].' ');
  4. intval($_POST[], 10);


 
 
si quelqu'un a une explication ?
 
 :jap:


Message édité par art_dupond le 20-10-2005 à 13:31:06

---------------
oui oui
Reply

Marsh Posté le 20-10-2005 à 10:54:27   

Reply

Marsh Posté le 20-10-2005 à 11:19:01    

programmation par les pieds
 
http://fr.php.net/manual/fr/function.is-int.php
http://fr.php.net/manual/fr/function.is-numeric.php
 
http://fr.php.net/manual/fr/function.intval.php
 
en gros RTFM et tu apprendras que intval te retourne un entier
donc tu te dis dans ta tête
 
echo intval($maputaindevariable)
 
et puis de toute manière tu lis :  

Citation :


Les chaînes de caractères retournent la plupart du temps 0, cela dépend de les caractères à l'extrême gauche de la chaîne de caractères. La règle courante du transtypage d'entier s'applique.


 
donc soit tu fais un if is_int($salopedevariable)
ou bien un if ($monentier = intval($salopedevariable)) { echo $monentier}
 
là ca taffichera du texte (ton entier koi) seulement si la variable est un entier. Dans le cas contraire ca te botte l'anus.
PS : si ta variable vaut 0 ben ca t'affiche rien non plus
 
donc meilleure solution :  
 
 
if (is_int($salopedevariable)) {
  echo intval($salopedevariable);
}

Message cité 1 fois
Message édité par gatsusat le 20-10-2005 à 11:28:13

---------------
Les CSS c'est bon mangez-en
Reply

Marsh Posté le 20-10-2005 à 11:25:58    

C'est sympa de prendre le temps de répondre (et de la faire bien) mais faudrait voir à être un poil moins agréssif ! :)

Reply

Marsh Posté le 20-10-2005 à 11:31:06    

Surtout que si on enlève les grossièrtés on gagne du temps pour l'écriture du post [:god]


Message édité par KrisCool le 20-10-2005 à 11:31:22

---------------
Loose Change Lies | Bars | Last.fm
Reply

Marsh Posté le 20-10-2005 à 12:59:13    

Oui c'est pas faux, mais encore une fois si l'auteur avait bien pris la peine de taper intvalue() dans php.net (cout => a peu pres 35 sec) il aurait pu s'en rendre compte par lui meme ... m'enfin bon comme d'abitude on va me reservire le "oui mais un forum ça sert a aider les boulets qui sont pas capables de fournir le moindre effort"


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 20-10-2005 à 13:02:10    

gatsusat a écrit :

programmation par les pieds
 
http://fr.php.net/manual/fr/function.is-int.php
http://fr.php.net/manual/fr/function.is-numeric.php
 
http://fr.php.net/manual/fr/function.intval.php
 
en gros RTFM et tu apprendras que intval te retourne un entier
donc tu te dis dans ta tête
 
echo intval($maputaindevariable)
 
et puis de toute manière tu lis :  

Citation :


Les chaînes de caractères retournent la plupart du temps 0, cela dépend de les caractères à l'extrême gauche de la chaîne de caractères. La règle courante du transtypage d'entier s'applique.


 
donc soit tu fais un if is_int($salopedevariable)
ou bien un if ($monentier = intval($salopedevariable)) { echo $monentier}
 
là ca taffichera du texte (ton entier koi) seulement si la variable est un entier. Dans le cas contraire ca te botte l'anus.
PS : si ta variable vaut 0 ben ca t'affiche rien non plus
 
donc meilleure solution :  
 
 
if (is_int($salopedevariable)) {
  echo intval($salopedevariable);
}


 
de numéro 1, j'ai lu le manuel (ici: http://be.php.net/manual/en/function.intval.php )
 
de numéro 2, je vois dans l'exemple:

Code :
  1. echo intval(42);                      // 42
  2. echo intval('42');                    // 42


donc "MaSuperVariable", qu'elle soit déjà en format entier ou qu'elle soit en format "chaine", ca devrait marcher.
 
de numéro 3, je ne comprends pas:

Code :
  1. if (is_int($salopedevariable)) {
  2.   echo intval($salopedevariable);
  3. }


 
si je comprends bien, si ma variable est entière, je peux en extraire la valeur entière ? Super !
 


---------------
oui oui
Reply

Marsh Posté le 20-10-2005 à 13:04:18    

esox_ch a écrit :

Oui c'est pas faux, mais encore une fois si l'auteur avait bien pris la peine de taper intvalue() dans php.net (cout => a peu pres 35 sec) il aurait pu s'en rendre compte par lui meme ... m'enfin bon comme d'abitude on va me reservire le "oui mais un forum ça sert a aider les boulets qui sont pas capables de fournir le moindre effort"


 :cry:


---------------
oui oui
Reply

Marsh Posté le 20-10-2005 à 13:05:55    

esox_ch a écrit :

Oui c'est pas faux, mais encore une fois si l'auteur avait bien pris la peine de taper intvalue() dans php.net (cout => a peu pres 35 sec) il aurait pu s'en rendre compte par lui meme ... m'enfin bon comme d'abitude on va me reservire le "oui mais un forum ça sert a aider les boulets qui sont pas capables de fournir le moindre effort"


d'après ce qu'il avait posté, il avait cherché un minimum  [:dawa]
après c'est sur que tu peu toujours faire plus ! [:dawa]

Reply

Marsh Posté le 20-10-2005 à 13:12:22    

art_dupont, figure toi que dans la vie il n'y a pas que les int et les string... La raison pour laquelle tu vois pas l'utilité de ce qu'a dis gatusu c'est que PHP est un langage excessivement permissif qui laisse faire du tout et du n'importe quoi ..  
Dans un langage fortement typé (comme Java) tu est obbligé de controler que ce que tu utilises est un Int avant de pouvoir le traiter comme tel ...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 20-10-2005 à 13:12:52    

bon, je ne sais pas ce que vous avez...
 
 
 
si j'ai

Code :
  1. $a = "3";
  2. $b = 4;
  3. echo intval($a).intval($b);


 
 
ca me donnera "34"
 
 
là, la variable vient d'un formulaire

Code :
  1. echo $_POST['variable']


me donne 5
 

Code :
  1. echo intval($_POST['variable'])


ne me donne rien.
 
 
 
qu'est-ce que j'ai mal fait que j'aurais dû voir dans le manuel ?  
 
Je veux bien qu'il y ait quelque chose qui m'ait échappé mais je l'ai lu le manuel :cry:


---------------
oui oui
Reply

Marsh Posté le 20-10-2005 à 13:12:52   

Reply

Marsh Posté le 20-10-2005 à 13:14:25    

Fait un coup de is_int() avant , si ca se trouve pour une raison X ou Y il le considere pas comme le bon type
 
Edit: Parcontre apres avoir relu la page de man de is_int ... PHP c'est vraiment un langage n'importe quoi ... des intVal et is_int qui prennent mixed value comme argument  :pfff:

Message cité 2 fois
Message édité par esox_ch le 20-10-2005 à 13:16:51

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 20-10-2005 à 13:15:59    

esox_ch a écrit :

art_dupont, figure toi que dans la vie il n'y a pas que les int et les string... La raison pour laquelle tu vois pas l'utilité de ce qu'a dis gatusu c'est que PHP est un langage excessivement permissif qui laisse faire du tout et du n'importe quoi ..  
Dans un langage fortement typé (comme Java) tu est obbligé de controler que ce que tu utilises est un Int avant de pouvoir le traiter comme tel ...


en l'occurence là c'est un string et je voudrais le passer dans intval()...
 
intval("opzuroze" ) me donnera 0 (ou rien, c'est pareil)
intval("4" ) devrait me donner 4 (ou "4" je m'en fous)
 
hors ca ne le fait pas


---------------
oui oui
Reply

Marsh Posté le 20-10-2005 à 13:16:42    

esox_ch a écrit :

Fait un coup de is_int() avant , si ca se trouve pour une raison X ou Y il le considere pas comme le bon type


il considère ca comme un string (testé avec is_string())


---------------
oui oui
Reply

Marsh Posté le 20-10-2005 à 13:19:12    

Juste un pti doute . Test voir un :
 
$myVar = $_POST['variable'];
echo '['.$myVar.']['.$_POST['variable'].']';
echo intval((int)$myVar);

Message cité 1 fois
Message édité par esox_ch le 20-10-2005 à 13:20:17

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 20-10-2005 à 13:30:34    

esox_ch a écrit :

Juste un pti doute . Test voir un :
 
$myVar = $_POST['variable'];
echo '['.$myVar.']['.$_POST['variable'].']';
echo intval((int)$myVar);


 
youp,  
 
j'ai testé  

Code :
  1. die('['.$myVar.']['.$_POST['variable'].'] :'.intval((int)$myVar));

et ca marche :)
 
c'était quoi ton doute ?
 
 
le problème venait bêtement du fait que die($machin) n'affichait rien, alors que die("".$machin) est ok :sweat:  
Sinon la variable était bien là :pt1cable:  
 
 
merci esox_ch ;)
 
 


---------------
oui oui
Reply

Marsh Posté le 20-10-2005 à 13:54:20    

Mon doute c'est que pour changer PHP en fait a sa tete et caste les variables automatiquement et un peu n'importe comment .
Genre $a = 6; // int
$b = ''.$a; ; //String
$c = $a.$a; ; //String
 
C'est simpas quand ça marche (d0ailleurs meme en java le castage automatique se fait dans certains cas) mais souvent ca fait du nawak


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 20-10-2005 à 14:08:12    

oki :)


---------------
oui oui
Reply

Marsh Posté le 20-10-2005 à 14:38:31    

Ca n'était pas un problème lié à intval :)
C'était un problème lié à die().
 
die() est un alias pour exit().
 
Or, comme le précise la doc, exit() a deux formes:
 
void exit(string) qui affiche un message
void exit(int) qui n'affiche rien
 
;)


---------------
Loose Change Lies | Bars | Last.fm
Reply

Marsh Posté le 20-10-2005 à 16:01:31    

Bah moi des que ca part en live dans le castage de variables automatique, je les castes a la main .. .Comme ça pas de surprises


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 20-10-2005 à 16:24:55    

sauf que là j'attendais un "int"... que j'avais :p
 
sauf que je ne savais pas le coup du die... que je sais maintenant :)
 
 
merci pour l'explication plus précise Kriscool :)


---------------
oui oui
Reply

Marsh Posté le 20-10-2005 à 16:45:47    

mais faut pas utiliser die() n'importe comment, et apparament tu l'utilise un peu sauvageement non ?


---------------
Les CSS c'est bon mangez-en
Reply

Marsh Posté le 20-10-2005 à 17:03:36    

Ca me rappelle le gugus qui throwait des exceptions pour sortir de ses fonctions parcequ'il avait pas compris le "return" :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 20-10-2005 à 17:07:43    

je l'utilise pour vérifier que mes variables arrivent bien quand j'ai une erreur dans une page :o


Message édité par art_dupond le 20-10-2005 à 17:07:58

---------------
oui oui
Reply

Marsh Posté le 20-10-2005 à 17:35:34    

esox_ch a écrit :

... PHP c'est vraiment un langage n'importe quoi ... des intVal et is_int qui prennent mixed value comme argument  :pfff:


 
Evidement qu'ils prennent un mixed comme argument, vérifier qu'un argument n'est pas un int n'a de sens que s'il peut ne pas l'être...  :sarcastic:

Reply

Marsh Posté le 20-10-2005 à 18:23:23    

le is_int oui je me suis laisser un peu aller. Mais le intVal ... mouais ... si on lui passe un truc genre intVal(array()); je suis pas vraiment entousiaste de comment il signale l'erreur ... M'enfin bon il faudra probablement attendre php6 pour une vrai gestion des exceptions


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 20-10-2005 à 19:26:41    

et attendre un genocide complet pour que le PHP devienne un langage reservé aux pro et pas aux kevins du web


---------------
Les CSS c'est bon mangez-en
Reply

Marsh Posté le 21-10-2005 à 09:45:58    

gatsusat a écrit :

et attendre un genocide complet pour que le PHP devienne un langage reservé aux pro et pas aux kevins du web


 
Et au nom de quoi un langage devrait être élitiste ? [:itm]
C'est toujours amusant les gardiens du temple. Je reconnais que d'avoir des gens qui ne comprennent pas ce qu'ils font, qui font n'importe quoi et qui vont te demander pourquoi ça ne fonctionne pas, c'est pas forcément marrant quand tu touches toi-même ta bille, mais sans sa simplicité d'accès, php n'aurait JAMAIS eu le succès qu'il a eu aujourd'hui


---------------
Loose Change Lies | Bars | Last.fm
Reply

Marsh Posté le 21-10-2005 à 10:13:22    

ouais, malheureusement ya 10x trop de mulot et de kevins qui n'arrivent même pas à coder koi ke ce soit en PHP et paf ils se lancent dans les sites web.
 
quand tu utilises un vrai langage objet, tu es sur de ce que tu fais tes actions sont pensées avant 'êtres faites
 
Mais les kevins qui codent en PHP ils se demandent pourquoi ca marche pas. normal 3/4 d'entre eux n'ont pas les erreurs qui s'affichent donc pour débugger, vas y la galère et le reste des kevins, sait à peine faire une concatenation.
 
C'est un langage trop ouvert, un peu comme VB.


---------------
Les CSS c'est bon mangez-en
Reply

Marsh Posté le 21-10-2005 à 10:13:54    

gatsusat a écrit :

et attendre un genocide complet pour que le PHP devienne un langage reservé aux pro et pas aux kevins du web


donc dans ce topic, il n'y aurait qu'une personne digne de faire du php :whistle:  
 
 
 
 :lol:


---------------
oui oui
Reply

Marsh Posté le 21-10-2005 à 10:27:21    

gatsusat a écrit :

ouais, malheureusement ya 10x trop de mulot et de kevins qui n'arrivent même pas à coder koi ke ce soit en PHP et paf ils se lancent dans les sites web.
 
quand tu utilises un vrai langage objet, tu es sur de ce que tu fais tes actions sont pensées avant 'êtres faites
 
Mais les kevins qui codent en PHP ils se demandent pourquoi ca marche pas. normal 3/4 d'entre eux n'ont pas les erreurs qui s'affichent donc pour débugger, vas y la galère et le reste des kevins, sait à peine faire une concatenation.
 
C'est un langage trop ouvert, un peu comme VB.


 
Sur 1000 "mulots et kévins" comme tu dis (ça te fait comment de te sentir supérieur ?) y'en a 100 qui apprendront de leurs erreurs et vont pousser plus loin, et sur les 100 y'en a une poignée qui deviendont bons. Et c'est toujours ça de gagner pour la communauté d'un langage. PHP c'est pas divin, à la base c'est un vieux truc moisi pour mettre à jour un cv sur une page web.
Il n'aurait jamais avancé autant s'il n'avait pas été populaire, et c'est sa popularité qui fait qu'il est disponible facilement chez les hébergeurs aujourd'hui, qu'il y a des tonnes des libs, de packages et de classes disponibles pour accélérer le dev.
 
Maintenant les débutants ne sont qu'une nuisance toute relative, quelques messages rapidement ignorables sur les forums au pire.
Tu n'as pas à maintenir leurs scripts, tu n'as pas à les corriger, tu n'as pas à subir les conséquences de leurs bugs.
 
Alors où est le problème ?
Au niveau de ton égo sans doute  [:kiki]


---------------
Loose Change Lies | Bars | Last.fm
Reply

Marsh Posté le 21-10-2005 à 14:41:01    

On va dire que le marché des developpeurs Web est pourri jusqu'à l'os par ce genre de débutant qui se croit tout permis. Le debat est clos car on pourrait deriver très loin


---------------
Les CSS c'est bon mangez-en
Reply

Marsh Posté le 21-10-2005 à 14:52:22    

gatsusat a écrit :

Le debat est clos car on pourrait deriver très loin


 
Comme tu voudras  :jap:  
 


---------------
Loose Change Lies | Bars | Last.fm
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed