Autor Zpráva
snazimse
Profil
Zdravím,

mám takový problém,
dal jsem si klasickou podmínku z formuláře,kde ověřuju tel.číslo.
Ale prostě mi to nefunguje,když tam mám více parametrů v if případě POST.
Když to dám do elseif v pohodě,ale jinak ne,funguje to celé nějak špatně.
Tak nevím,jestli to nezvládá provést ten skript,najednou?
Poradí,někdo v čem je problém? Díky moc!

if( trim($_POST['telefon']) == '' && (!(is_numeric($_POST['telefon'])))  && (!(strlen($_POST['telefon']) <= 9)) ) {
 
 $chyba_tel = 'Špatně zadané číslo telefonu!'; 
 
 $chyba_total = true;
 } else {
 
 $data['telefon'] = trim($_POST['telefon']);
 
 
 }
lionel messi
Profil
snazimse:
Poradí,někdo v čem je problém?
Výstrel naslepo: celkom sa mi nepozdáva umiestnenie operátorov negácie, skús takto: if( trim($_POST['telefon']) == '' && (!is_numeric($_POST['telefon'])) && (!strlen($_POST['telefon']) <= 9) )
snazimse
Profil
Díky,ale výsledek pořád stejný!
lionel messi
Profil
Tak skús: if( !trim($_POST['telefon']) || (!is_numeric($_POST['telefon'])) || (!strlen($_POST['telefon']) <= 9) )
Predpokladám, že chceš použiť operátor or, nie and.
Alphard
Profil
lionel messi:
Predpokladám, že chceš použiť operátor or, nie and.
Samozřejmě, elseif dělá OR, ale i s tou opravou to nedává moc smysl.

Proč třeba tohle? !(strlen($_POST['telefon']) <= 9))
Uživatelé rádi zadávají +420..., 777 603... apod. Naopak nevidím důvod povolovat cokoliv kratšího než 9 znaků.
Pleca
Profil
if (empty(trim($_POST['telefon'])) || (!is_numeric($_POST['telefon')) || (!(strlen($_POST['telefon']) <= 9) {
$error = 'Neplatne tel. cislo!';
}

co tohle??
mimochodec
Profil
No já nevím, ale mě by hláška "Špatně zadané číslo telefonu!" bez bližšího popisu moc nenadchla a kdybych se třeba v případě zápisu "+420 777 888 999" dost rychle nedozvěděl, jestli tomu skriptu vadí mezera, délka, plusko nebo co vlastně, asi by mě to dost rozzuřilo a pokud bych opravdu službu od toho webu nepotřeboval, zavřel bych ho.
Tím chci říct: nejdřív se pokus vyjít vstříc tím, že mezery a nečíselné znaky si tam vymlátíš sám. A hlavně: když i pak budeš přesvědčen, že jsem napsal něco, co nesplňuje podmínky, nepiš 'Špatně zadané číslo telefonu!', ale 'máš tam to a to špatně'.
Tori
Profil
A pokud by se to mělo provozovat i v jiném než českém kontextu, tak by bylo dobré zohlednit i oddělení meziměstské volačky: 02/1234 5678.
snazimse
Profil
Samozřejmě máte pravdu,není to zcela správné.
Ale jde mi spíše o to proč to skript nezvládne a nefunguje,tím způsobem,jak má.
S tím operátorem nebo to funguje,ale nějak mi nedochází proč, použít tento operátor,když mají obě podmínky platit zároveň.

Díky!
mimochodec
Profil
snazimse:
S tím operátorem nebo to funguje,ale nějak mi nedochází proč, použít tento operátor,když mají obě podmínky platit zároveň.

Jestli se ti nezdá chování operátorů v prvním příspěvku, tak tam vyhodnocuješ stav, kdy je zadaný text prázdný a zároveň není číslo a zároveň jeho délka není rovna nebo kratší než devět. Vlož tam nečíselný text, který bude zároveň prázdný a zároveň delší než devět znaků a ten if bude splněn.

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:

0