Diskuze: Isset OR a AND
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
zřejmě ti chybí závorky které spojí obchod1 a obchod 2
takže takhle
if ((!isset($_POST['Obchod1']) || !isset($_POST['Obchod2'])) && !isset($_POST['pecivo'], $_POST['ovoce'], $_POST['zelenina']))
tak jak to máš ty se ten AND počítá až s obchodem2
Jak říká dez1nd - protože v php má and přednost před or
Super, to pomohlo.. na chvilku. Přidal jsem podmínku $existuje, která mi má zjistit že se v databázi neobjevuje zákazník se stejným emailem. Tahle podmínka funguje ale tu první (tu validaci checkboxů) to zcela ignoruje.
if ($_POST) {
if ((!isset($_POST['obchod1']) || !isset($_POST['obchod2'])) && !isset($_POST['pecivo'], $_POST['ovoce'], $_POST['zelenina']) && (!isset($_POST['po']) || !isset($_POST['ut']) || !isset($_POST['st']) || !isset($_POST['ct']) || !isset($_POST['pa'])))
{
echo "<script>alert('Nejsou vyplněna všechna pole!')</script>";
}
elseif
($existuje)
echo "<script>alert('Tento email je již registrován.')</script>";
else
{
Db::query(' ...
Nehází mi to žádnou chybu.. prostě to tu podmínku ignoruje. A nemůžu přijít na to proč.
Projdi si pořádně větvění programů a hlavně podmínky.
ty teď kontroluješ pole nebo email takže se ti splní jen jedna z nich. Ty
zřejmě potřebuješ kontrolovat zároveň, tzn zkontrolovat vyplněnost a
potom zkontrolovat jestli ten email existuje.
Rozházej to do více ifů. (samostatný if pro pole a samostatný if pro email)
Projdi si pořádně ještě jednou tu podmínku a dej si do pořádku ty závorky. Podle mě je máš napsané dost chaoticky...
proč máš toto
!isset($_POST['pecivo'], $_POST['ovoce'], $_POST['zelenina'])
takto dohromady a toto
(!isset($_POST['po']) || !isset($_POST['ut']) || !isset($_POST['st']) || !isset($_POST['ct']) || !isset($_POST['pa'])
rozdělené?
u toho prvního potřebuji aby bylo vybráno ve všech třech kategoriích ale u toho druhého potřebuji byl vybrán ale stačí jen jeden den.
A nemůže být problém právě toto? Neměl bys to rozdělit a "oANDovat"?
!isset($_POST['pecivo'], $_POST['ovoce'], $_POST['zelenina'])
nahraď:
(!isset($_POST['pecivo']) AND !isset($_POST['ovoce']) AND !isset($_POST['zelenina']))
Zobrazeno 10 zpráv z 10.