Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Neprovede se ELSE

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Ondřej Pech
Člen
Avatar
Ondřej Pech:1.8.2017 13:28

Ahoj, už hodinu si lámu hlavu na jednoduché podmínce, která vyhodnocuje checkbox. Když je podmínka splněna (check box zaškrtnutý) tak se vše v if provede jak má. když ale podmínka není splněna, tak se neprovede nic. Poradí někdo proč? Díky.

PHP:

// Změna nastavení uživatele
        if ($_POST)
        {
            if ($_POST['upozorneni'])
            {
                $spravceUzivatelu->nastavUpozorneni(1);
                $this->pridejZpravu('Nyní budete dostávat upozornění na nové vzkazy.');
                $this->presmeruj('administrace');
            }

            else
            {
                $this->pridejZpravu('Upozornění na nové vzkazy bylo ZRUŠENO.');
                $spravceUzivatelu->nastavUpozorneni(0);
                $this->presmeruj('administrace');
            }
        }

HTML:

<div class="checkbox">
        <label>
                <input type="checkbox"  name="upozorneni" value="ANO" checked="checked"> Dostávat upozornění na nové vzkazy na můj email <strong><?= $_SESSION['uzivatel']['email'] ?></strong>
         </label>
</div>
 
Odpovědět
1.8.2017 13:28
Avatar
David Oczka
Tvůrce
Avatar
Odpovídá na Ondřej Pech
David Oczka:1.8.2017 13:34

S PHP moc neumím, ale nemá se tam třeba kontrolovat ta hodnota?

if ($_POST['upozorneni'] == 'ANO')
 
Nahoru Odpovědět
1.8.2017 13:34
Avatar
Ondřej Pech
Člen
Avatar
Ondřej Pech:1.8.2017 13:37

Nemusí, nicméně i to jsem už zkoušel. Když není zašktnutý tak $_POST['upozor­neni'] není nastavena (=false)

Vyhodnocení podmínky je dobře, pokud platí provede se. Chyba je v tom že když neplatí tak se neprovede ani ta else větev

Editováno 1.8.2017 13:38
 
Nahoru Odpovědět
1.8.2017 13:37
Avatar
David Oczka
Tvůrce
Avatar
Odpovídá na Ondřej Pech
David Oczka:1.8.2017 13:45

Tak ještě můžeš kontrolovat jestli je tedy nastavena.

if(isset($_POST['upozorneni']))

Případně i s tou kontrolou hodnoty dohromady

if(isset($_POST['upozorneni']) && $_POST['upozorneni'] == 'ANO')

Pak už nevím...

 
Nahoru Odpovědět
1.8.2017 13:45
Avatar
Odpovídá na Ondřej Pech
Uživatel sítě :1.8.2017 13:46

V tom formuláři máš pouze tento input, že? Takže pokud nebude zaškrtnutý pole $_POST vlastně neexistuje.

Takže pouze:

if (isset($_POST['upozorneni']))
            {
                $spravceUzivatelu->nastavUpozorneni(1);
                $this->pridejZpravu('Nyní budete dostávat upozornění na nové vzkazy.');
                $this->presmeruj('administrace');
            }

            else
            {
                $this->pridejZpravu('Upozornění na nové vzkazy bylo ZRUŠENO.');
                $spravceUzivatelu->nastavUpozorneni(0);
                $this->presmeruj('administrace');
            }
Nahoru Odpovědět
1.8.2017 13:46
Chybami se člověk učí, běžte se učit jinam!
Avatar
Ondřej Pech
Člen
Avatar
Ondřej Pech:1.8.2017 13:49

I isset už sem zkoušel. Stejný výsledek :/

 
Nahoru Odpovědět
1.8.2017 13:49
Avatar
Jiří Fencl
Člen
Avatar
Jiří Fencl:1.8.2017 13:50

V tom formulari mas jen ten checkbox? Pridej si else jeste na konec te podminky

if ($_POST)

protoze z toho, co popisujes to vypada, ze v tom POST nic neni a tak se neprovede nic

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
1.8.2017 13:50
Avatar
Jiří Fencl
Člen
Avatar
Jiří Fencl:1.8.2017 13:51

MarekZ : platim pivo....

 
Nahoru Odpovědět
1.8.2017 13:51
Avatar
Ondřej Pech
Člen
Avatar
Ondřej Pech:1.8.2017 14:01

Jo, to je přesně ono, tyjo... díky.
Akorát sem potřeboval vyhodnotit, jestli ten formulář je odeslaný (kdyby ne, tak nic neměnit) tak sem do formuláře přidal ještě jeden prvek (asi by šlo vyhodnocovat i tlačítko ale.. )

<input type="hidden" name="odeslano" value="ano">
 
Nahoru Odpovědět
1.8.2017 14:01
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.