Autor | Zpráva | ||
---|---|---|---|
_fantomas Profil |
#1 · Zasláno: 3. 2. 2016, 10:54:59
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'])) 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'] |
||
anonymníí Profil * |
#3 · Zasláno: 3. 2. 2016, 11:29:34
_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 |
#4 · Zasláno: 3. 2. 2016, 11:31:41
_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 |
#5 · Zasláno: 3. 2. 2016, 11:48:54
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 * |
#6 · Zasláno: 3. 2. 2016, 12:02:02
_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 |
#8 · Zasláno: 3. 2. 2016, 12:32:05
Je nutné to ověřovat pomocí regulárniho výrazu?
|
||
_fantomas Profil |
#9 · Zasláno: 3. 2. 2016, 14:12:35
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 * |
#10 · Zasláno: 3. 2. 2016, 17:18:31
_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 |
#11 · Zasláno: 3. 2. 2016, 18:18:15
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 |
#12 · Zasláno: 4. 2. 2016, 11:56:09
a vtej premennej $match ma byť akože čo?
|
||
lionel messi Profil |
#13 · Zasláno: 4. 2. 2016, 11:59:34
_fantomas:
„a vtej premennej $match ma byť akože čo?“ Stačí sa pozrieť do dokumentácie funkcie preg_match. |
||
Časová prodleva: 9 let
|
0