Autor | Zpráva | ||
---|---|---|---|
magnus87 Profil |
#1 · Zasláno: 13. 7. 2013, 11:59:53
Ahojte, mam formular v ktorom je prvou volbou volba mesta resp volba pobocky
<select class="element select" id="element_4" name="element_4"> <option value="Banská Bystrica" selected="selected">Banská Bystrica</option> <option value="Brezno" >Brezno</option> <option value="Ružomberok" >Ružomberok</option> <option value="Liptovský Mikuláš" >Liptovský Mikuláš</option> </select> potrebujem formular odoslat na mail prislusnej pobocky podla volby uzivatela. Tj mesto = jedna pobocka = jeden mail. Takto ako to je dokazem odosielat len na jeden mail bez ohladu na zvolenu pobocku. Je to moje prve php takze fakt nemam tusenie ako by som to urobil:/ Dakujem za tipy/pomoc/cokolvek:) <?php $prijemca = "bbystrica@domena.sk"; $element_1_1 = $_POST['element_1_1']; //krsne meno $element_1_2 = $_POST['element_1_2']; //priezvisko $element_4 = $_POST['element_4']; //pobocka $element_5 = $_POST['element_5']; //jazyk $element_3 = $_POST['element_3']; //iny jazyk $element_2 = $_POST['element_2']; //tel c $element_6 = $_POST['element_6']; //uroven $element_7 = $_POST['element_7']; //email if ($element_1_1 && $element_1_2 && $element_4 && $element_5 && $element_2 && $element_6 && $element_7){ $hlavicka = "From: " . $odosielatel . " <" . $element_7 . ">\r\n" . "Content-Type: text/plain; charset=windows-1250; format=flowed\n" . "MIME-Version: 1.0\n" . "Content-Transfer-Encoding: 8bit\n" . "Return-Path: <" . $element_7 . "> \n" . "X-Mailer: PHP\n"; mail("$prijemca", "$element_1_1 $element_1_2 $element_5 $element_3", "$element_1_1 $element_1_2 má záujem o ukážkovú hodinu na pobočke $element_4. Zaujíma sa o jazyk $element_5 $element_3 a jeho približná úroveň je $element_6. Kontaktujte ho prosím na telefónnom čísle $element_2 alebo mailom na adrese $element_7.", "from: $element_7"); echo "Váš email bol úspešne odoslaný. Naši pracovníci Vás budú kontaktovať na vašom telefónnom čísle. Ďakujeme za prejavený záujem."; } elseif (($element_1_1 && $element_1_2 && $element_4 && $element_5 && $element_2 && $element_6 && $element_7) == false){ echo "Váš email nebol odoslaný. Nezadali ste všetky povinné údaje. Prosím vyplňte prihlášku znovu. Ďakujeme"; } ?> |
||
quatzael Profil |
magnus87:
Proměnné se nedávají do uvozovek, naopak obyčejný text ano! Ty to máš přesně naopak!! Jednotlivé části textu se spojují tečkou. |
||
xROAL Profil |
#3 · Zasláno: 13. 7. 2013, 12:14:23
switch($element_4){ case "Banská Bystrica":$prijemca="bbystrica@domena.sk"; break; case "Brezno":$prijemca="brezno@domena.sk"; break; case "Ružomberok":$prijemca="ruzomberok@domena.sk"; break; case "Liptovský Mikuláš":$prijemca="lmikulas@domena.sk"; } |
||
Alphard Profil |
#4 · Zasláno: 13. 7. 2013, 12:25:58
Takhle přece ne, když se změní název, musel by se upravovat milion míst. Vytvořte asociativní pole
[mail1 => nazev1, mail2 => nazev2] , z toho vygenerujete formulář i následné zpracování.
magnus87: Ta funkce mail() je zapsána velmi nepřehledně, když jsou argumenty tak dlouhé, je vhodné je předem sestavit do nějaké rozumně pojmenované proměnné. |
||
magnus87 Profil |
#5 · Zasláno: 13. 7. 2013, 16:11:06
quatzael:
ok, zapracujem na tom trošku. xROAL: No recipient addresses found in header Alphard: Neviem to tak urobiť, fakt úplne s tým celým len začínam...áno, uvedomujem si že funkcia mail() je hodne neprehľadná ale to mi zatiaľ nevadí, neobmedzuje to funkčnosť. |
||
quatzael Profil |
#6 · Zasláno: 13. 7. 2013, 16:51:33
Ty value - hodnoty si u těch optionů přepiš (pokud je ještě teda nepotřebuješ k něčemu jinýmu).
Takže, aby to bylo nějak takhle: <select class="element select" id="element_4" name="element_4"> <option value="bbystrica" selected="selected">Banská Bystrica</option> <option value="brezno" >Brezno</option> <option value="ruzomberok" >Ružomberok</option> <option value="lmikulas" >Liptovský Mikuláš</option> </select> A v PHP si udělej něco takovýho: <?php $prijemca = "bbystrica@domena.sk"; $element_1_1 = $_POST['element_1_1']; //krsne meno $element_1_2 = $_POST['element_1_2']; //priezvisko $element_4 = $_POST['element_4']; //pobocka $element_5 = $_POST['element_5']; //jazyk $element_3 = $_POST['element_3']; //iny jazyk $element_2 = $_POST['element_2']; //tel c $element_6 = $_POST['element_6']; //uroven $element_7 = $_POST['element_7']; //email $prijemca = $element_4 . "@domena.sk"; $predmet = $element_1_1 . " " . $element_1_2 . " " . $element_5 . " " . $element_3; $zprava = "$element_1_1 $element_1_2 má záujem o ukážkovú hodinu na pobočke $element_4. Zaujíma sa o jazyk $element_5 $element_3 a jeho približná úroveň je $element_6. Kontaktujte ho prosím na telefónnom čísle $element_2 alebo mailom na adrese $element_7."; $header = "From: " . $element_7; mail($prijemca, $předmět, $zprava, $header); |
||
Časová prodleva: 10 dní
|
|||
magnus87 Profil |
#7 · Zasláno: 23. 7. 2013, 17:20:11
Trošku dosť neskôr som sa k tomu dostal, každopádne po kozmetických úpravách - diakritika v premennej (riadok 17) a odstránenie riadku 2 to funguje presne ako som potreboval. Ďakujem quatzael
|
||
magnus87 Profil |
#8 · Zasláno: 23. 7. 2013, 21:12:24
Tak nakoniec som to celé dal takto:
<?php $krsne_meno = $_POST['krsne_meno']; $priezvisko = $_POST['priezvisko']; $pobocka = $_POST['pobocka']; $jazyk = $_POST['jazyk']; $jazyk2 = $_POST['jazyk2']; $telc = $_POST['telc']; $uroven = $_POST['uroven']; $email = $_POST['email']; if ($pobocka=="Banská Bystrica") $prijemca="bbystrica"; if ($pobocka=="Brezno") $prijemca="brezno"; if ($pobocka=="Ružomberok") $prijemca="ruzomberok"; if ($pobocka=="Liptovský Mikuláš") $prijemca="lmikulas"; if ($krsne_meno && $priezvisko && $pobocka && $jazyk && $telc && $uroven && $email){ $prijemca = $prijemca . "@domena.sk"; $predmet = $krsne_meno . " " . $priezvisko . " " . $jazyk . " " . $jazyk2; $sprava = "$krsne_meno $priezvisko má záujem o ukážkovú hodinu na pobočke $pobocka. Zaujíma sa o jazyk $jazyk $jazyk2 a jeho približná úroveň je $uroven. Kontaktujte ho prosím na telefónnom čísle $telc alebo mailom na adrese $email."; $header = "From: $email\r\n" . "MIME-Version: 1.0\r\n" . "Content-Type: text/plain; charset=UTF-8\r\n" . "Content-Transfer-Encoding: 8bit\r\n"; mail($prijemca, $predmet, $sprava, $header); echo "Váš email bol úspešne odoslaný. Naši pracovníci Vás budú kontaktovať na vašom telefónnom čísle. Ďakujeme za prejavený záujem."; } elseif (($krsne_meno && $priezvisko && $pobocka && $jazyk && $telc && $uroven && $email) == false){ echo "Váš email nebol odoslaný. Nezadali ste všetky povinné údaje. Prosím vyplňte prihlášku znovu. Ďakujeme"; } ?> ...aby mi option value z formulára išlo do mailu vo forme Banská Bystrica a nie bbystrica...funguje to tak ako treba, len by ma zaujímalo či je takéto riešenie OK, prípadne ako by ste to realizovali? |
||
abc Profil |
Ten option by šel vyřešit o něco elegantněji:
static $pobocky = array( "bbystrica" => "Banská Bystrica", "brezno" => "Brezno", ); $prijemca = $pobocky[$_POST['pobocka']]; IF na řádku 14: if (isset($krsne_meno, $priezviesko, ...)) 16. řádek, aby se případně lépe přidávalo další parametry: $predmet = implode(" ", array($krsne_meno, $priezviesko, $jazyk, $jazyk2); $sprava = <<<HEREDOC $krsne_meno $priezvisko má záujem o ukážkovú hodinu na pobočke $pobocka. Zaujíma sa o jazyk $jazyk $jazyk2 a jeho približná úroveň je $uroven. Kontaktujte ho prosím na telefónnom čísle $telc alebo mailom na adrese $email HEREDOC; Mělo by být ošetřené i neodeslání e-mailu: if (mail($prijemca, $predmet, $sprava, $header)) { echo "Váš email bol úspešne odoslaný. Naši pracovníci Vás budú kontaktovať na vašom telefónnom čísle. Ďakujeme za prejavený záujem."; } else { echo "E-mail se nepodařilo odeslat, zkuste to prosím znovu"; } Jsou to většinou takové kosmetické úpravy, které se zase někomu můžou líbit více jinak. Dál bych doporučil začít používat něco s automatickým formátováním kódu (např. Netbeans), jelikož vůbec neodsazujete. Dodatek: 25. řádek - podmínka je takto špatně: buď } elseif (($krsne_meno || $priezvisko || $pobocka || $jazyk || $telc || $uroven || $email) == FALSE) !isset
nebo třeba jen přes else, jelikož to má být jen opak té první podmínky... A ještě drobná poznámka k těm ifům bez složených závorek. Takto se to dá ještě docela přečíst: if ($pobocka=="Banská Bystrica") $prijemca="bbystrica"; if ($pobocka=="Banská Bystrica") $prijemca="bbystrica"; Věřím, že nejsem sám proto bych doporučil zásadně používat delší, ale přehlednější zápis: if ($pobocka=="Banská Bystrica") { $prijemca="bbystrica"; } |
||
Časová prodleva: 4 dny
|
|||
magnus87 Profil |
#10 · Zasláno: 27. 7. 2013, 14:40:48
abc:
Ďakujem. Verím že by to bolo krásne a elegantné riešenie ale nech sa snažím ako chcem, nerozbehal som to :// .....časom keď sa viac naučím asi.... |
||
Časová prodleva: 10 měsíců
|
|||
romano Profil |
quatzael:
> Ty value - hodnoty si u těch optionů přepiš (pokud je ještě teda nepotřebuješ k něčemu jinýmu). > Takže, aby to bylo nějak takhle: > > 1 > 2 > 3 > 4 > 5 > 6 > > <select class="element select" id="element_4" name="element_4"> > <option value="bbystrica" selected="selected">Banská Bystrica</option> > <option value="brezno" >Brezno</option> > <option value="ruzomberok" >Ružomberok</option> > <option value="lmikulas" >Liptovský Mikuláš</option> > </select> > > > A v PHP si udělej něco takovýho: > > 1 > 2 > 3 > 4 > 5 > 6 > 7 > 8 > 9 > 10 > 11 ...... „<select class="element select" id="element_4" name="element_4"> <option value="bbystrica" selected="selected">Banská Bystrica</option> <option value="brezno" >Brezno</option> <option value="ruzomberok" >Ružomberok</option> <option value="lmikulas" >Liptovský Mikuláš</option> </select>“ „<select class="element select" id="element_4" name="element_4"> <option value="bbystrica" selected="selected">Banská Bystrica</option> <option value="brezno" >Brezno</option> <option value="ruzomberok" >Ružomberok</option> <option value="lmikulas" >Liptovský Mikuláš</option> </select>“ „<select class="element select" id="element_4" name="element_4"> <option value="bbystrica" selected="selected">Banská Bystrica</option> <option value="brezno" >Brezno</option> <option value="ruzomberok" >Ružomberok</option> <option value="lmikulas" >Liptovský Mikuláš</option> </select>“ [#6] quatzael, quatzael, quatzael „<select class="element select" id="element_4" name="element_4"> <option value="bbystrica" selected="selected">Banská Bystrica</option> <option value="brezno" >Brezno</option> <option value="ruzomberok" >Ružomberok</option> <option value="lmikulas" >Liptovský Mikuláš</option> </select>“ „<select class="element select" id="element_4" name="element_4"> <option value="bbystrica" selected="selected">Banská Bystrica</option> <option value="brezno" >Brezno</option> <option value="ruzomberok" >Ružomberok</option> <option value="lmikulas" >Liptovský Mikuláš</option> </select>“ quatzael: Zdravím, viem že forum už dlhšie nie je aktívne, ale potrebujem riešiť podobnú požiadavku - na web pod Wordpress vložiť kontaktný formulár (meno,adresa, telefón, email užívateľa, MESTO) a podľa voľby mesta zaslať na email. ALE NAVIAC je pre každé mesto daný zoznam emailových adries, na ktoré má byť formulár zaslaný podľa nasledovného pravidla: - ked prvy zaujemca vyplni formular na webe a zvoli v nom napr. okres Bratislava, email bude odoslany na adresu c.1 zo zoznamu adries v skupine Bratislava - ked druhy zaujemca vyplni formular a zvoli okres Bratislava, email bude odoslany na adresu c.2 zo zoznamu adries v skupine Bratislava - takto by boli formulare odosielane na adresy zo zoznamu pre okres Bratislava, ked sa dostaneme k poslednej adrese v zozname, dalsi formular bude odoslany na prvu adresu zo zoznamu - a znova dookola Zaroven by bolo dobre mat centralny prehlad o odoslanych formularoch (datum vyplnenia, udaje zaujemcu, cielova emailova adresa). |
||
Časová prodleva: 10 let
|
0