Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

Odeslání složitějšího formuláře na email

JendaKout
verified
rating uzivatele
3. 12. 2015 23:46:26
Ahoj,
mám několik problémů se scriptem, se kterým si lámu hlavu už pár dní.
Potřebuji odladit odesílací formulář, aby vše fungovalo jak má.
Mohl bych požádat o radu a případně rovnou o upravení kódu?
Jedná se o tyhle problémy:
1. Když nezvolím některou povinnou položku * a odkliknu ODESLAT, tak se mi odešle formulář do e-mailu, což by nemělo. Sice mi to ukáže varovnou hlášku o požadovaném vyplnění, jenže se stejně odešle mail.
2. Další problém je, že když si vyberu některou položku ze seznamu (SELECT / OPTION), a jiné povinné položky nevyplním, tak se po kliknutí na ODESLAT neuloží zvolený výběr (prostě ho nezobrazí a musí se znova vybrat požadovaná položka). Přitom u INPUT a TEXTAREA se ukazují - tam to funguje.
Přitom do emailu se vybrané položky zašlou ale na webu nejsou vidět, takže nevidim, co jsem navolil.
3. Rozbalovací box POPTÁVKA/OBJEDNÁVKA: dalo by se udělat, aby po rozbalení se automaticky znovu nezabalila - po kliknutí na odkaz ODESLAT? Normálně by to nevadilo, pokud by vyplnili všechno potřebné, jenomže když nevyplní povinnou položku, tak se zabalí a je potřeba fomulář znovu rozbalit. Což je dost otravné. Buď udělat, že by se dala rozbalovat/zabalovat pouze po kliknutí na POPTÁVKA/OBJEDNÁVKA a ignorovala odkaz ODESLAT nebo se rozbalila na trvalo.
4. Jakmile odkliknu ODESLAT a nejsou vyplněné některé položky *, tak se stránka posune úplně nahoru. Nadalo by se nějak udělat, aby po kliknutí zůstala stát (nerolovala se nahoru)? Pouze když budou mít vše vyplněné, tak se klidně může stránka vyrolovat nahoru.
5. Mohl bych ještě požádat o radu či script na ANTISPAM? Nějak se mi ho nedaří zakomponovat, aby fungoval. Myslím takový ten klasický 1+1= napsat výsledek, a k tomu prázdné neviditelné políčko, které musí zůstat prázdné.
Přikládám kompletní kód formuláře. Mám to udělané v jednom dokumentu, což mi plně vyhovuje.
Předem díky za pomoc a rady.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
formulář
function checkmail($mail){
$mail = trim($mail);
if(strlen($mail)==0) return 0;
if(!preg_match("/^{1,20}+(.){0,20}+(){0,20}@((+.)+(com|net|org|mil|".
"edu|gov|arpa|info|biz|inc|name|{2})|{1,3}.{1,3}.{1,3}.{1,3})$/is",$mail))
return 0;
return $mail;
if (!empty($_POST)) checkmail();
else _print();
}
if(isset($_POST) || ($_POST == 'Odeslat'))
{
$_ERR='';
$_print='';
$format = htmlspecialchars(strip_tags(trim($_POST)));
$material = htmlspecialchars(strip_tags(trim($_POST)));
$barva = htmlspecialchars(strip_tags(trim($_POST)));
$povrchupr = htmlspecialchars(strip_tags(trim($_POST)));
$pocet = htmlspecialchars(strip_tags(trim($_POST)));
$termin = htmlspecialchars(strip_tags(trim($_POST)));
$title = htmlspecialchars(strip_tags(trim($_POST)));
$name = htmlspecialchars(strip_tags(trim($_POST)));
$tel = htmlspecialchars(strip_tags(trim($_POST)));
$email = htmlspecialchars(strip_tags($_POST));
$text = htmlspecialchars(strip_tags(trim($_POST)));
$firma = htmlspecialchars(strip_tags(trim($_POST)));
$ulice = htmlspecialchars(strip_tags(trim($_POST)));
$mesto = htmlspecialchars(strip_tags(trim($_POST)));
$psc = htmlspecialchars(strip_tags(trim($_POST)));
$ic = htmlspecialchars(strip_tags(trim($_POST)));
$dic = htmlspecialchars(strip_tags(trim($_POST)));
if(!isset($format) OR $format == '')
{
$_ERR.='
Vyberte formát!
';
}
elseif(!isset($material) OR $material == '')
{
$_ERR.='
Vyberte materiál!
';
}
elseif(!isset($barva) OR $barva == '')
{
$_ERR.='
Vyberte barvu!
';
}
elseif(!isset($pocet) OR $pocet == '')
{
$_ERR.='
Zvolte požadovaný počet.
';
}
elseif(!isset($povrchupr) OR $povrchupr == '')
{
$_ERR.='
Vyberte povrchovou úpravu!
';
}
elseif(!isset($title) OR $title == '')
{
$_ERR.='
Napište prosím předmět Vaší zprávy!
';
}
elseif(!isset($name) OR $name == '')
{
$_ERR.='
Napište své jméno a příjmení!
';
}
elseif(!isset($tel) OR $tel == '')
{
$_ERR.='
Napište svůj telefon!
';
}
elseif(checkmail($email) === 0)
{
$_ERR.='
Napište svůj e-mail nebo byl zadán nesprávně!
';
}
/*------error----------*/
if($_ERR != '')
{
$_print = $_ERR;
}
else
{
echo'
Děkujeme za Vaší poptávku.
Velmi brzo zašleme na Váš e-mail cenovou nabídku.
';
}
/*-------error konec--------*/
// obsah v zaslaném e-mailu
$mess = '
Možnost vložit libovolný texty
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Formát: '.$format.'
Materiál: '.$material.'
Barva: '.$barva.'
Povrch. úprava: '.$povrchupr.'
Termín: '.$termin.'
Počet: '.$pocet.'
'.$text.'
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Jméno: '.$name.'
Telefon: '.$tel.'
E-mail: '.$email.'
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'.$firma.'
'.$ulice.'
'.$psc.' '.$mesto.'
IČ: '.$ic.'
DIČ: '.$dic.'
';
// $from - odesílatel
$header = "From: $emailrnContent-Type: text/plain";
// $to - příjemce emailu
$to = "mujemail@mojedomena.cz";
if(mail($to, $title, $mess, $header)){
echo '';
} else{
echo '';
}
}
?>
Formát: *
Materiál: *
Barva: *
Povrchová úprava: *
Počet: *
Termín dodání:
umístění fotky
echo $_print;
?>
Poptávkový formulář

Poptávku zasílá:
Předmět zprávy: *
Jméno a příjmení: *
Telefon: *
E-mail: *
Popis poptávky:
Fakturační údaje:
Název společnosti:
Ulice a čp.:
Město:
PSČ:
IČ:
DIČ:

Prostor pro antispam
* Údaje označené hvězdičkou prosím vyplňte.
3. 12. 2015 23:46:26
https://webtrh.cz/diskuse/odeslani-slozitejsiho-formulare-na-email/#reply1157160
1-4 sa dá v podstate celkom elegantne vyriešiť presunutím kontroly vyplnenia povinných položiek pred odoslanie formuláru, tzn. na click buttonu Odoslať. Taktiež to môžeš doplniť HTML5 required atribútmi pre všetky povinné inputy, textarea polia a selecty.
onclick Event…
5. bod by som vyriešil integrovaním Google reCaptcha. Niektoré dnešné boty sú už celkom inteligentné a jednoduché numerické kvízy vedia riešiť, skryté nevypĺňať ...
reCAPTCHA: Easy on Humans, Hard on Bots…
4. 12. 2015 08:13:24
https://webtrh.cz/diskuse/odeslani-slozitejsiho-formulare-na-email/#reply1157159
JendaKout
verified
rating uzivatele
4. 12. 2015 10:00:59
Děkuju za rychlou reakci.
Asi pořád dělám něco špatně, protože to stále nefunguje.
Mohl bych tě požádat, abys mi vložil ukázku toho přesunu a obohacení těmi atributy onclick Event...?
Jsem naprostý amatér a nějak to nedokážu správně poskládat... :-(
4. 12. 2015 10:00:59
https://webtrh.cz/diskuse/odeslani-slozitejsiho-formulare-na-email/#reply1157158
error414
verified
rating uzivatele
8. 12. 2015 19:24:07
jen tak mimochodem ten kod je uplne strasnej :(
1) email se ti odesle protoze odeslani emailu mas v IF bloku ktery se provede po odeslani formulare, aby se neodesilal pri chybe tak tam pridej neco jako
2) protoze aby se vybral option ze selectu je potreba mu nastavit atribut selected="selected"
3) ty to delas pres css coz je podle me docela opruz, nahod si tam jquery a na tohle se pouziva metoda toogle. http://api.jquery.com/toggle/, nebo to udelas na prasaka a zaskrtnes ten checkbox
4) po odeslani by se mela stranka odrolovat na ten formular, tohle muzes udelat kotvou,
pokud budes chtit jine chovani pokud se formular odesle tak skrolovat nekam jinak tak si dej do podminky
5) na tohle uz bylo odpovezeno a slouhlasim s tim.
BTW: timhle stylem se programovalo tak pred 15 lety, doporucuji se podivat na nejaky microframework a napat to v tom. Navic to bude i bezpecnejsi nez porad myslet na html_strip_tags html_special_chars atd.....
8. 12. 2015 19:24:07
https://webtrh.cz/diskuse/odeslani-slozitejsiho-formulare-na-email/#reply1157157
Pro odpověď se přihlašte.
Přihlásit