ugrás a tartalomhoz

Űrlapból érkező szám ellenőrzése

Anonymous · 2006. Júl. 28. (P), 23.21
Fiúk, van-e arra függvény, hogy egy form-ból jövő adatot leellenőrizzem, hogy szám-e vagy betű-e? Mert nem találtam ilyet.
Példa: bekérem az ember magasságát, mert számolni akarok vele. Ha betűt ír, akkor nem jó.
Szóval kipróbáltam egy olyat, hogy:

$mag=settype($mag,"integer");

de ez mindig 1-et ad a $mag értékének...

Mi a megoldás?
 
1

is_int

Anonymous · 2006. Júl. 28. (P), 23.27
Hogyne volna:
http://hu2.php.net/manual/hu/function.is-int.php

Esetleg:
http://hu2.php.net/manual/hu/function.is-numeric.php
2

Meg gettype() is

Joó Ádám · 2006. Júl. 29. (Szo), 00.44
Ez is hasznos lehet:

http://hu.php.net/manual/hu/function.gettype.php
8

Biztos?

Dualon · 2006. Júl. 30. (V), 00.52
Űrlapból érkező adat numerikus mivoltának ellenőrzésére?
3

mégtovább...

Anonymous · 2006. Júl. 29. (Szo), 07.57
Köszi, ezeket megnézem, de az érdekesség még az lehet, hogy ha valaki olyan számot ad meg, hogy például: 165,2.
Ez ugye lebegőpontos, ezért próbáltam a fent leírt módon egész számmá alakítani, de az volt a gond, hogy mindig 1-es értéket adott bármilyen számnak.


Van ebben valami hiba: $mag=settype($mag,"integer");

Kösz
4

szvsz ez lesz a te barátod

toxin · 2006. Júl. 29. (Szo), 08.02
http://hu.php.net/manual/hu/function.ctype-digit.php , ill. form ellenörzésre a a http://hu.php.net/manual/hu/ref.ctype.php család a séf ajánlata :)

üdv t

hopp visszavontam, csak a témanyitó hozzászólást néztem, az is_numeric lesz jó nálad
5

mégtovább...

Anonymous · 2006. Júl. 29. (Szo), 11.24
Természetesen abban van a hiba. Ilyenkor az okos porgramozó nem kapkod fűhöz-fához, hanem elszörföl a php manual oldalra, és megnézi, hogy az általa nem jól használt parancsot hogyan is kellene használnia.
http://hu.php.net/manual/hu/function.settype.php

Itt észreveszi, hogy a settype parancs boolean visszatérési értékkel bír,
bool settype ( mixed &var, string type )
ami azt jelenti, hogy ha sikeres a változó típusának beállítása, akkor 1, he nem, akkor 0. Aztán továbbolvas, és észreveszi a példákat is:
settype($ize, "integer"); // $ize most 5 
(integer)settype($valami, "string");  // $valami most "1" (string)
Gyulus
15

Nahát, akkor a php-nek kár

toldigabor · 2015. Feb. 28. (Szo), 12.32
Nahát, akkor a php-nek kár volt megcsinálni ezt az is_string, is_integer függvényeit, mert a lekérdezősztring-változók értékei is mindig sztring-ként jönnek akár számok, akár karakterláncok. Tényleg ezt a hosszú és (szerintem) "fapados" megoldást kell használni (ezt a dupla settype-os integer kényszerítős "megoldásra" gondoltam az 5. hozzászólásból)? Ez elég macerás egy if-ben, pláne, hogy több $_GET értéket kell vizsgálnom.
6

Köszönöm az eddigieket, de további gondjaim is vannak...

Anonymous · 2006. Júl. 29. (Szo), 23.30
Az első kérdésem megoldódott, köszönöm a segítséget, de itt az újabb problémám:

- van egy ilyen írásom:

<?php
$mag=$_POST['mag'];

print "Megjött az adat: ".$mag."<br><br>";

//megvizsgálom:
print "Az adat típusa: ".gettype($mag)."<br><br>";

print "<b>Azt vizsgálom, szám-e vagy betű:</b><br>";
if (is_numeric("$mag")== TRUE){
print "__________ez egy szám<br><br>";
} else {
print "__________ez nem szám<br><br>";
}

print "<b>Azt vizsgálom, egész szám-e:</b><br>";
if (is_int("$mag")== TRUE){
print "__________ez egész szám<br><br>";
} else {
print "__________ez nem egész szám<br><br>";
}
?>

A gond a gettype-nál van, ha egész számot írok be, akkor is string-et ír.
Ezt hol rontom el?
9

String típus

Dualon · 2006. Júl. 30. (V), 01.07
Az űrlap szöveges mezőjéből érkező adat mindig string típusú lesz.
Összetettebb ellenőrzésekre általában a preg_match a legjobb választás, de a fenti kódod is jó, ha ennyi elég.
Mindenesetre kicsit tömörebben így nézhet ki (azért írom, mert talán ellesel belőle pár trükköt):
<?php
define('BR', '<br />');

echo 'Megjött az adat: '.$_POST['mag'].BR.BR
 // .'Az adat típusa: '.gettype($mag). <-- felesleges
    .'<b>Azt vizsgálom, szám-e, vagy betű:</b>'.BR
    .'ez '
    .(is_numeric($_POST['mag']) ? 'szám' : 'nem szám')
    .', és '
    .(is_int($_POST['mag']) ? 'egész' : 'nem egész');
?>
Az ördög a részletekben lakozik.
(Úgyhogy remélem, sehol nem rontottam el, mert már ki sem látok a fejemből.)
13

ctype_digit(), a te barátod :)

KergeKacsa · 2006. Júl. 30. (V), 10.53
Ez nézd meg:

http://hu.php.net/manual/hu/function.ctype-digit.php

A függvény igazat ad vissza, ha a változóban csak számok vannak, és hamisat, ha nem csak számok. :)
7

ellenörzés

Kenguru · 2006. Júl. 29. (Szo), 23.40
ereg fügvénnyel. még a vesszőt is le tudod ellenőrizni ha nem egész szám.

http://hu2.php.net/manual/hu/function.ereg.php
10

Legyen inkább preg_match

Dualon · 2006. Júl. 30. (V), 01.11
Lásd manual.
11

ha nem megy

breakline · 2006. Júl. 30. (V), 02.47
ha kezdő akkor jobb az ereg().
12

Érdemes megtanulni

Dualon · 2006. Júl. 30. (V), 07.47
Ez már ugyan off, de abban igazad van (ha erre gondoltál), hogy a POSIX talán barátibb (meg illik ismerni is), de előbb-utóbb érdemes megtanulnia a Perl-kompatibilis reguláris kifejezéseket gazdagabb szolgáltatás-palettája, kicsivel jobb teljesítménye miatt, és akkor miért épp ne most. :)
Szerintem klasszikusan az a terület, amihez megközelítés kell, nem PHP-s gyakorlat.
14

Köszönök mindent

Anonymous · 2006. Júl. 30. (V), 20.29
Köszönök mindent