Avatar
Michal Kuba
Redaktor
Avatar
Michal Kuba:

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
Marek Z.
Redaktor
Avatar
Odpovídá na Michal Kuba
Marek Z.:

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
Člen
Avatar
Odpovídá na Michal Kuba
Ori:

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
Redaktor
Avatar
Odpovídá na Marek Z.
Michal Kuba:

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 = 'estorycz@gmail.com';
            $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:

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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět 25.12.2014 21:19
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Vojtěch
Michal Kuba:

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.