IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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: Obratná reakce na formulář

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

Aktivity
Avatar
Michal Kuba
Tvůrce
Avatar
Michal Kuba:25.12.2014 17:33

Zdravím.
Mám kontaktní formulář, ve kterém chci reagovat na dvě věci -> Dobře a špatně vyplněný formulář. Přičemž, pokud u správného vyplnění vyskočí zelená hláška a při špatném červená.

Takovýto mám kód přímo nad formulářem:

<?php
            if ($hlaska){
            echo('<p style="background:blue;">' . htmlspecialchars($hlaska) . '</p>');}


            $jmeno = (isset($_POST['jmeno'])) ? $_POST['jmeno'] : '';
            $email = (isset($_POST['email'])) ? $_POST['email'] : '';
            $zprava = (isset($_POST['zprava'])) ? $_POST['zprava'] : '';
        ?>

Pokud nastavím ještě else a v něm echo hlaska2 (= tak mám označenou proměnnou, pokud je něco špatně).

Co s tím? :)

 
Odpovědět
25.12.2014 17:33
Avatar
Odpovídá na Michal Kuba
Uživatel sítě :25.12.2014 19:48

A kde se ti provede zpracování dotazu z formuláře? Nad tímto kusem kódu? Z toho co jsem pochopil tak se ti nevypíše hláška, kterou požaduješ. o_O

Nahoru Odpovědět
25.12.2014 19:48
Chybami se člověk učí, běžte se učit jinam!
Avatar
Ori I
Člen
Avatar
Odpovídá na Michal Kuba
Ori I:25.12.2014 20:48

použi nejakú knižnicu ktorá to rieši, alebo si napíš svoje kratšie riešenie

Knižnica napríklad https://github.com/Wixel/GUMP , celkom použiteľná aj s návodom na jednoduché pochopenie

Editováno 25.12.2014 20:49
 
Nahoru Odpovědět
25.12.2014 20:48
Avatar
Michal Kuba
Tvůrce
Avatar
Odpovídá na Uživatel sítě
Michal Kuba:25.12.2014 21:08

Kód, který zpracovává formulář je zde:

<?php
mb_internal_encoding("UTF-8");
$hlaska = '';
$hlaska2 = '';
if (isset($_GET['uspech']))
        $hlaska = 'Email byl úspěšně odeslán, brzy vám odpovíme.';
if ($_POST)
{
       if (isset($_POST['jmeno']) && $_POST['jmeno'] &&
                        isset($_POST['email']) && $_POST['email'] &&
                        isset($_POST['zprava']) && $_POST['zprava'] &&
                        isset($_POST['rok']) && $_POST['rok'] == date('Y'))
        {
            $hlavicka = 'From:' . $_POST['email'];
            $hlavicka .= "\nMIME-Version: 1.0\n";
            $hlavicka .= "Content-Type: text/html; charset=\"utf-8\"\n";
            $adresa = '[email protected]';
            $predmet = 'Nová zpráva z mailformu';
            $uspech = mb_send_mail($adresa, $predmet, $_POST['zprava'], $hlavicka);
            if ($uspech)
            {
                $hlaska = 'Email byl úspěšně odeslán, brzy vám odpovíme.';
                header('Location: mailform.php?uspech');
                exit;
            }
            else
                $hlaska2 = 'Email se nepodařilo odeslat. Zkontrolujte adresu.';
        }
        else
                $hlaska2 = 'Formulář není správně vyplněný!';
}
?>

Podle mě tu musím mít problém se zavedením těch proměnných, nebo ne?

Editováno 25.12.2014 21:08
 
Nahoru Odpovědět
25.12.2014 21:08
Avatar
Vojtěch
Člen
Avatar
Odpovídá na Michal Kuba
Vojtěch:25.12.2014 21:19

Uprav to takto:

if ($hlaska){
             echo('<p style="background:blue;">' . htmlspecialchars($hlaska) . '</p>');}
elseif ($hlaska2){
             echo('<p style="background:red;">' . htmlspecialchars($hlaska) . '</p>');}

edit: ještě mě napadá, že možná budeš muset ošetřit v podmínce jestli je proměnná prázdná.

Editováno 25.12.2014 21:22
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
25.12.2014 21:19
Avatar
Michal Kuba
Tvůrce
Avatar
Odpovídá na Vojtěch
Michal Kuba:25.12.2014 21:23

Díky, takto to funguje jak má :-)

 
Nahoru Odpovědět
25.12.2014 21:23
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 6 zpráv z 6.