Autor Zpráva
_fantomas
Profil
Ahoj, mam na stránke košik kde chcem zadávať množstvo len v čisle od 1-nekonečno
problém je v tom ak v poličku vypĺňam množstvo dá sa doňho napísať aj iné znaky a preto som
použil funkciu aby fungovali znaky len od 1-9 všetko je v poriadku ale funguje to iba z časti
akonáhle zadám číslo napríklad 12e85 tak to je tam aj s tím e.
Potrebujem čisto len korektné množstvo. Používal som toto
if (preg_match("/[1-9]/", $_POST['quantity']))
no zjavne to nie je dostačujúce.
Máte iné nápady?
xaverista
Profil
_fantomas:
Zdravím, buďto můžete proměnou počet ks přetypovat na int
$pocet = (int)$_POST['quantity']
Nebo v podmínce pomocí funkce is_numeric či kontrolovat přímo celé číslo is_int
anonymníí
Profil *
_fantomas:
Když jsi chtěl povolit čísla 1-9, nehledě na chyby v tom reguláru, jak sis představoval třeba počet 10? Ten by projít neměl, nulu zakazuješ.

Ten regulár musí obsahovat zarážku na začátek a konec, tedy ^ a $, pokud chceš kontrolovat celý string. Dále pak, přidat i nulu, nebo na první pozici 1-9, na zbylé pak nepovinně 0-9 bez omezení počtu znaků (0 až n). Ten tvůj kontroluje, zda string obsahuje alespoň jedno číslo mimo nuly, tedy projde i abc1efg.

Druhá možnost je co píše xaverista výše, přetypovat na číslo pomocí (int), to v uvedeném případě vrátí 12. Netextové hodnoty vrátí nulu, tedy nic do košíku nepřidat, nebo z košíku odebrat, pokud se snažíš o změnu množství.
Joker
Profil
_fantomas:
Ten regulární výraz testuje, jestli pole obsahuje nějakou číslici 1-9.
Je potřeba nejen přidat to ^ a $, jak píše anonymníí (poté to bude kontrolovat, jestli je zadaná právě jedna číslice), ale ještě za tu hranatou závorku +, aby mohlo být i více číslic:
/^[1-9]+$/

A samozřejmě to bude kontrolovat jen znaky 1-9, ale takové je zadání.
_fantomas
Profil
No funguje mi príklad od Joker . Vďaka
S tím pretypovaním mi to volajako nefungovalo ale to by som už neriešil.
anonymníí
Profil *
_fantomas:
No funguje mi príklad od Joker . Vďaka
Nefunguje. Zkus zadat 10 kusů, psal jsem o tom výše.
Joker
Profil
anonymníí:
Nefunguje. Zkus zadat 10 kusů
Nicméně v zadání psal číslice 1-9. Čili podle toho „10“ je skutečně neplatný vstup.

edit: Aha, nějak jsem přeskočil to, že jde o množství 1-nekonečno. Tak pak je nemožnost zadat nulu skutečně divná.
xaverista
Profil
Je nutné to ověřovat pomocí regulárniho výrazu?
_fantomas
Profil
Nie, ja proste potrebujem od 0 po nekonečno ale len číslo a kladné
čiže -1 a ani 12e5 nebude platiť anonymníí ano, vďaka za upozornenie.
Monkeys
Profil *
_fantomas:

preg_match('/^[1-9]\d*$/', $retazec, $match)

Uvedom si tiez, ze ak pises ze chces vstup od 0 - nekonecno tak asi nechces aby ti prisla objednavka na 999 999 999 kusov niecoho preto by si to mal obmedzit asi na 3, 4 miesta bud v php alebo JS.

M.
xaverista
Profil
Monkeys:
by si to mal obmedzit asi na 3, 4 miesta bud v php alebo JS.
Určitě to omezit, ale doporučoval bych to omezit minimálně pomocí php, JS se dá vyplnout :-)
_fantomas
Profil
a vtej premennej $match ma byť akože čo?
lionel messi
Profil
_fantomas:
a vtej premennej $match ma byť akože čo?

Stačí sa pozrieť do dokumentácie funkcie preg_match.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: