Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: {V} P $ y c h o {V} 28 Března 2012, 17:20:09
-
Nazdar, mám problém, mám kód:
if(!is_int($_POST['ID_Process']))
{
echo('<script type="text/javascript">alert("Musíte zadat pouze číslo!");</script>');
return;
}
jenže je problém že ať už tam zadám text nebo číslo, tak mi to furt vypíše ,,Musíte zadat ...''.
Nevím v čem je problém, dřív mi na PHP 5.2 fungovala, ale od verze 5.3 jsou skoro všechny funkce úplně jinak dělaný :/
-
Podle mě todle $_POST['ID_Process'] vrací vždy řetězec. Tj. zadáte číslo 5 jenže $_POST['ID_Process'] = "5"; Ověříte to jednoduše a to tak, že si uděláte var_dump($_POST['ID_Process']);
Možná bude hezčí si udělat regulárek a testovat $_POST['ID_Process'] jestli obsahuje [0-9].
-
Podle mě todle $_POST['ID_Process'] vrací vždy řetězec. Tj. zadáte číslo 5 jenže $_POST['ID_Process'] = "5"; Ověříte to jednoduše a to tak, že si uděláte var_dump($_POST['ID_Process']);
Možná bude hezčí si udělat regulárek a testovat $_POST['ID_Process'] jestli obsahuje [0-9].
Ano, děkuji. Problém je již vyřešen a vyřešil sem to následovnou jednoduchou funkcí po svém ...
function _int($int)
{
if(is_numeric($int) === TRUE)
{
if((int)$int == $int) return TRUE;
else return FALSE;
}else return FALSE;
}
-
is_numeric je určitě náhrada za regulár... navíc rovnou otestuje i kdyby šlo o typ integer. Jen teď nechápu tu kombinaci? Proč rovnou nepoužijete pouze is_numeric??? To je zbytečný to ifování co tam máte.
-
is_numeric je určitě náhrada za regulár... navíc rovnou otestuje i kdyby šlo o typ integer. Jen teď nechápu tu kombinaci? Proč rovnou nepoužijete pouze is_numeric??? To je zbytečný to ifování co tam máte.
Pokud bych použil pouze jen funkci is_numeric() tak by mi to vzalo i ,,1e4'' ale já potřebuju čistě jen integer a to ,ifování'' sem ještě zkrátil, takže momentálně vypadá takto:
function _int($int)
{
if(is_numeric($int) === TRUE && (int)$int == $int) return true;
else return false;
}
-
1e4 je opravdu číslo... no možná by pak hezčí zápis měl opravdu regulární výraz... neboť (int)$int == $int se mi moc nezamlouvá.
-
1e4 je opravdu číslo... no možná by pak hezčí zápis měl opravdu regulární výraz... neboť (int)$int == $int se mi moc nezamlouvá.
Zde je už správná:
function _int($int)
{
if(is_numeric($int) === TRUE && intVal($int) == $int) return true;
else return false;
}
-
Todle je možná ještě hezčí
function _int($int) {
return preg_match("/^[0-9]/", (string)$int);
}
-
Todle je možná ještě hezčí
function _int($int) {
return preg_match("/^[0-9]/", (string)$int);
}
cely zaporny cisla nejsou int? 8)
-
No jo pravda... ani jsem v tu chvíli nepomyslel... je pravda, že se snažím spíš tlačit než psát to přesně za někoho... se mnou se taky nikdo nemaže. Ale máš pravda todle je takový unsigned int.
Tak mu to trochu vylepšíme:
function _int($int) {
return preg_match("/^-?[0-9]/", (string)$int);
}
-
Ještě bych to trošku poupravil, ten pattern by měl vypadat spíše /^-?[0-9]+$/, ten původní by pustil nechtěné číslo 1e3 a spoustu dalších stringů která čísla ani vzdáleně nepřipomínají. btw záleží od požadavků programátora, ale tohle se nebude mít rádo ani s desetinejma číslama,...
-
Ještě bych to trošku poupravil, ten pattern by měl vypadat spíše /^-?[0-9]+$/, ten původní by pustil nechtěné číslo 1e3 a spoustu dalších stringů která čísla ani vzdáleně nepřipomínají. btw záleží od požadavků programátora, ale tohle se nebude mít rádo ani s desetinejma číslama,...
Ano nebude to brát desetinný čísla, ale to ani ta původní funkce autora vlákna, kdy dochází k přetypování string na integer a tím se určitě desetinná část zahodí. Ta funkce by měla kontrolovat, zda-li je číslo typu integer co jsem pochopil. Samozřejmě +$ je určitě ještě lepší dát na konec, ale to už záleží na požadavcích jak jsi psal.