Autor | Zpráva | ||
---|---|---|---|
moom Profil |
#1 · Zasláno: 12. 2. 2011, 16:09:24
Dobrý den, prosím, prosím, prosím o radu :)
Potřebuji udělat formulář na stránky a pokaždé jsem řešil jenom odesílání emailu, ale tentokrát potřebuji vybírat políčka pomoci RADIO a SELECT a netuším jak přidat tyto pole do PHP. Mám tento zdrojový kód formuláře: <fieldset> <form action="php/kalkulace.php" method="post"> <ul> <li> <label>Velikost plochy</label> <input type="text" size="6" name="plocha" /> m2</li> <li> <label>Barevné provedení</label> <input type="radio" name="barva" value="natur" /> Přírodní betonová šeď<br /> <input type="radio" name="barva" value="barvene" /> Barevný odstín dle vzorníku RAL </li> <li> <label>Typ plochy</label> <input type="radio" name="typ" value="Stěna" /> Stěna<br /> <input type="radio" name="typ" value="Podlaha" /> Podlaha </li> <li> <label>Lokalita</label> <select name="lokalita"> <option value="Praha">Praha</option> <option value="Brno">Brno</option> </select> </li> <li> <label>Jméno a Příjmení</label> <input name="jmeno" /> </li> <li> <label>Váš email</label> <input name="email" /> </li> <li> <label>Kontaktní telefon</label> <input name="telefon" /> </li> <li> <label>1+10 = <span class="small">Vyplňte prosím součet</span></label> <input name="spam" /> </li> <li> <label>Další poznámky</label> <textarea name="zprava" cols="40" rows="10"></textarea> </li> <li> <label for="submit"> </label> <button class="button" type="submit" value="Odeslat">Odeslat</button> </li> </ul> </form> </fieldset> a v php mám zatím tento kód, ale už netuším jak do odeslaného emailu přidat hodnoty zvolené pomocí RADIO tlačítka a pomocí SELECT: <? $plocha = iconv("utf-8", "windows-1250", $_POST['plocha']); $barva = $_POST['barva']; $typ = $_POST['typ']; $lokalita = $_POST['lokalita']; $jmeno = iconv("utf-8", "windows-1250", $_POST['jmeno']); $email = $_POST['email']; $telefon = iconv("utf-8", "windows-1250", $_POST['telefon']); $predmet = iconv("utf-8", "windows-1250", $_POST['predmet']); $zprava = iconv("utf-8", "windows-1250", $_POST['zprava']); $spam = $_POST['spam']; if ($email!="" and $zprava!="" and $spam=="11") { Mail("mujemail@mujemail.cz", $predmet, "Jmeno:".$jmeno. "Plocha:".$plocha. "\n".$zprava, "From: " .$email. "\nContent-type: text/plain;charset=windows-1250\n"); echo "Váše kalkulace byla úspěšně odeslána."; } else { echo "Váši kalkulaci se nepodařilo odeslat; pravděpodobně jste nevyplnili všechny údaje."; } ?> Nemáte prosím nějakou radu? Prosím, prosím :) |
||
phobos9007 Profil |
#2 · Zasláno: 12. 2. 2011, 16:17:20
Ale dyť to tam už máš :)
|
||
moom Profil |
#3 · Zasláno: 12. 2. 2011, 16:26:17
Omlouvám se, ale už mně to došlo. Nenapadlo mě, že hodnota VALUE je
vlastně to stejné, co by člověk vyplnil v normálním políčku. Děkuji, děkuji Ale přece jenom mám prosím otázku, jak můžu přidat zakončení řádku </br> mezi jednotlivé hodnoty v emailu. Aby každá byla na jednom řádku. Konkrétně takto: Jméno: Plocha: Barva: Typ plochy: Lokalita: Text emailu, pokračování textu... Text emailu, pokračování textu... Dopsal jsem toto: <? $plocha = iconv("utf-8", "windows-1250", $_POST['plocha']); $barva = iconv("utf-8", "windows-1250", $_POST['barva']); $typ = iconv("utf-8", "windows-1250", $_POST['typ']); $lokalita = iconv("utf-8", "windows-1250", $_POST['lokalita']); $jmeno = iconv("utf-8", "windows-1250", $_POST['jmeno']); $email = $_POST['email']; $telefon = iconv("utf-8", "windows-1250", $_POST['telefon']); $predmet = iconv("utf-8", "windows-1250", $_POST['predmet']); $zprava = iconv("utf-8", "windows-1250", $_POST['zprava']); $spam = $_POST['spam']; if ($email!="" and $zprava!="" and $spam=="11") { Mail("email@email.cz", $predmet, "Jmeno:".$jmeno. "Plocha:".$plocha. "Barva:".$barva. "Typ plochy:".$typ. "Lokalita:".$lokalita. "\n".$zprava, "From: " .$email. "\nContent-type: text/plain;charset=windows-1250\n"); echo "Váše kalkulace byla úspěšně odeslána."; } else { echo "Váši kalkulaci se nepodařilo odeslat; pravděpodobně jste nevyplnili všechny údaje."; } ?> |
||
moom Profil |
#4 · Zasláno: 12. 2. 2011, 16:28:13
iconv("utf-8", "windows-1250", správně zobrazovala čeština, stejně tak řádek: "\n".$zprava, "From: " .$email. "\nContent-type: text/plain;charset=windows-1250\n"); ale netuším jestli je to správně :) |
||
phobos9007 Profil |
#5 · Zasláno: 12. 2. 2011, 16:32:54 · Upravil/a: phobos9007
"Jmeno:".$jmeno. "\n" . "Plocha:".$plocha. "\n" . A ta čeština je myslím správně. Stejně bych ti doporučoval přejít na utf-8, jak budeš dělat větší weby, přijde to vhod |
||
moom Profil |
#6 · Zasláno: 12. 2. 2011, 16:49:52
děkuji, děkuji :) a já si celou dobu říkám co znamená to \n
Po pravdě PHP neumím, jenom HTML a CSS, kde všechno mám UTF-8, ale jak to předělat tady zatím netuším :) Mohu se prosím zeptat, proč se umísťují ty tečky, to je něco jako oddělení? |
||
phobos9007 Profil |
#7 · Zasláno: 12. 2. 2011, 16:52:52
Tečka je spojení, spojujeme řetězce a nebo proměnné dohromady.
Nemůžeme to zapsat bez tečky, nefungovalo by to |
||
moom Profil |
#8 · Zasláno: 12. 2. 2011, 16:56:54 · Upravil/a: moom
Když mám doplněné řádky:
iconv("utf-8", "windows-1250", tak se zobrazuje dobře čeština ve vyplněných políčkách Ale bohužel se nezobrazuje správně čeština, pokud napíši toto: "Jméno a Příjmení:".$jmeno. "\n" . Tak v emailu se Jméno a Příjmení zobrazí špatně. Asi to nechám bez diakritiky :) Je to složité, prosím, prosím? A děkuji za vysvětlení tečky, a za čas který mně věnujete. |
||
Segi_L Profil |
#9 · Zasláno: 12. 2. 2011, 18:07:11
tečky sa nemusia dávať pokiaľ sa dávajú zdvojené uvozovky.
"Jméno a Příjmení:$jmeno\n" (všechno mám UTF-8...) Máš súbor uložený jako UTF-8? Ak nie tak si ho ulož. Stránka musí mať kodovanie UTF-8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> Vyhoď funkce iconv() Email posielaj tiež v UTF-8 "From: " .$email. "\nContent-type: text/plain;charset=utf-8\n"); Tak by to malo fungovať, aspoň ja to tak mám všade. |
||
moom Profil |
#10 · Zasláno: 12. 2. 2011, 18:23:36
Paráda, děkuji. Odstranil jsem všechny
iconv a změnil Content-type na utf-8, což vyřešilo všechny problémy. V meta mám kódování UTF-8 a asi odesílání jako windows-1250 právě dělalo tu neplechu. Super děkuji :) Výsledný kód mám tento, pokud by to v budoucnu někoho zajímalo: <? $plocha = $_POST['plocha']; $barva = $_POST['barva']; $typ = $_POST['typ']; $lokalita = $_POST['lokalita']; $jmeno = $_POST['jmeno']; $email = $_POST['email']; $telefon = $_POST['telefon']; $predmet = $_POST['predmet']; $zprava = $_POST['zprava']; $spam = $_POST['spam']; if ($email!="" and $spam=="11") { Mail("muj@email.cz", $predmet, "Jméno zákazníka: ".$jmeno. "\n" . "Telefonní kontakt: ".$telefon. "\n" . "Velikost plochy: ".$plocha. "\n" . "Barva: ".$barva. "\n" . "Typ plochy: ".$typ. "\n" . "Lokalita zakázky: ".$lokalita. "\n" . "\n".$zprava, "From: " .$email. "\nContent-type: text/plain;charset=utf-8\n"); echo "Váše kalkulace byla úspěšně odeslána."; } else { echo "Váši kalkulaci se nepodařilo odeslat; pravděpodobně jste nevyplnili všechny údaje."; } ?> |
||
moom Profil |
#11 · Zasláno: 12. 2. 2011, 18:27:14 · Upravil/a: moom
Prosím, mám ještě jednu otázku, dal by se udělat text
Jméno zákazníka boldem a za dvojtečkou opět normální text. "Jméno zákazníka: ".$jmeno. "\n" . Stejně tak třeba opačně, že by vyplněný údaj byl boldem a kategorie Normál. Jenom, že bych si na závěr úspěšného formuláře rozšířil možnosti v PHP. Ještě jednou děkuji za rychlou pomoc a přeji pěkný víkend :) |
||
Segi_L Profil |
#12 · Zasláno: 12. 2. 2011, 18:37:55
No jasne.
Proste klasické html tagy. "<strong>Jméno zákazníka:</strong> ".$jmeno. "\n" . Akurát musíš email posielať ako html "From: " .$email. "\nContent-type: text/html;charset=utf-8\n"); |
||
moom Profil |
#13 · Zasláno: 12. 2. 2011, 19:55:49
Paráda, díky :) Dobrá rada. Moc, moc děkuji.
A pokud bych chtěl mít tučně, výsledek zadaného pole, tak bych to musel udělat jak. Zkouším umístit .$jmeno. to hlásí chybu, že mám kód špatně. |
||
Segi_L Profil |
#14 · Zasláno: 12. 2. 2011, 20:12:11
"Jméno zákazníka:<strong>$jmeno</strong>\n" Zkouším umístit .$jmeno.mezi tagy string, ale hned mě to hlásí chybu, že mám kód špatně musel by si sem hodiť celý riadok, inak nemožem vedieť kde je chyba. |
||
moom Profil |
#15 · Zasláno: 12. 2. 2011, 23:51:00 · Upravil/a: moom
Paráda, děkuji, děkuji, děkuji. Funguje to dobře. Jenom jsem musel přidat
tečku. Jenom je jediný problém, že najednou se přestanou řádkovat jednotlivé položky. Pokud nechám místo HTML, PLAIN, tak to řádkuje dobře. Ale možná, že BOLD formátování je zbytečné. Celý kód mám tento: <? $plocha = $_POST['plocha']; $barva = $_POST['barva']; $typ = $_POST['typ']; $lokalita = $_POST['lokalita']; $jmeno = $_POST['jmeno']; $email = $_POST['email']; $telefon = $_POST['telefon']; $predmet = $_POST['predmet']; $zprava = $_POST['zprava']; $spam = $_POST['spam']; if ($email!="" and $spam=="11") { Mail("email@email.cz", $predmet, "<strong>Jméno zákazníka:</strong> ".$jmeno. "\n" . "Telefonní kontakt :<strong>$telefon</strong>\n". "Velikost plochy: ".$plocha. "\n" . "Barva: ".$barva. "\n" . "Typ plochy: ".$typ. "\n" . "Lokalita zakázky: ".$lokalita. "\n" . "\n".$zprava, "From: " .$email. "\nContent-type: text/html;charset=utf-8\n"); echo "Váše kalkulace byla úspěšně odeslána."; } else { echo "Váši kalkulaci se nepodařilo odeslat; pravděpodobně jste nevyplnili všechny údaje."; } ?> |
||
Segi_L Profil |
#16 · Zasláno: 13. 2. 2011, 00:35:50
Jasne riadky - tak kedze to nie je plain ale html tak místo
"\n" "<br>" |
||
moom Profil |
#17 · Zasláno: 13. 2. 2011, 00:50:22
Děkuji, děkuji, děkuji... skáču radostí jako blecha :)
Bejt v hospodě, taj bych tě hned pozval na nejlepší Plzeň na Malé Straně (U Hrocha) :) Ještě jednou díky. Funguje to pěkně. A poslední teoretická otázka :) Myslíš, že je to dobré posílat jako HTML. Nebo je lepší PLAIN. Lepší podpora, napříč světem emailových klientů. No mám radost, před spaním mám konečně funkční formulář po celodenní práci a to díky vaší pomoci :) |
||
Segi_L Profil |
#18 · Zasláno: 13. 2. 2011, 01:34:23
Myslíš, že je to dobré
posílat jako HTML. Nebo je lepší PLAIN. Lepší podpora, napříč světem emailových klientů. Ja to zatiaľ neriešim. Posielam v html. Ak sa mi niekto bude sťažovať, tak to budem riešiť. v plainu máš istotu, že ti to zobrazí každý klient. |
||
moom Profil |
#19 · Zasláno: 14. 2. 2011, 11:23:31
Paráda, děkuji :) děkuji
|
||
moom Profil |
#20 · Zasláno: 14. 2. 2011, 11:31:14 · Upravil/a: moom
Mohu prosím ještě jednu otázku. Teď si můžu pomocí RADIO selekce
vybrat za A za B, nebo za C. Ale co když někdo preferuje volbu A i B, nebo dokoce všechny tři... Jak prosím postupovat? Musím ve formuláři oddělit (třeba pomocí čísla) jednotlivá políčka. Třeba takto: <input type="radio" name="typ1" value="Stěna" /> <input type="radio" name="typ2" value="Stěna" /> <input type="radio" name="typ3" value="Stěna" /> Ale jak to potom umístím do PHP, musím pro každý vytvořit toto: $typ1 = $_POST['typ1']; $typ2 = $_POST['typ2']; $typ3 = $_POST['typ3']; Ale jak to zase sečtu tady: Mail("email@email.cz", $predmet, "Jméno zákazníka: " . $jmeno . "\n" . "Telefonní kontakt : " . $telefon . "\n" . "Velikost plochy: " . $plocha . "\n" . "Barva: " . $barva . "\n" . "Typ plochy: " . $typ . "\n" . "Lokalita zakázky: " . $lokalita . "\n" . Nemáte prosím ještě jednu radu :) |
||
Segi_L Profil |
#21 · Zasláno: 14. 2. 2011, 11:49:12 · Upravil/a: Segi_L
Mal by si si preštudovať, aký input služi na čo.
Takto by to šlo, ale to by si ich označil, ale už nie odznačil. V tomto prípade použi Checkbox. <input type="checkbox" name="typ[]" value="Stěna"> <input type="checkbox" name="typ[]" value="Podlaha"> Príklad1 - zaškrtnuté oba Pri odoslani formu sa ti odošle pole typ[] ktore bude obsahovať oba hodnoty $_POST['typ'][0] = "Stěna"; $_POST['typ'][2] = "Podlaha"; $typ = implode('+', $_POST['typ']); //$typ = "Stěna+Podlaha" Príklad2 - zaškrtnuté "Stěna" Pri odoslani formu sa ti odošle pole typ[] ktore bude obsahovať jednu hodnotu $_POST['typ'][0]= "Stěna"; $typ = implode('+', $_POST['typ']); //$typ = "Stěna" Príklad3 - zaškrtnuté "Podlaha" Pri odoslani formu sa ti odošle pole typ[] ktore bude obsahovať jednu hodnotu $_POST['typ'][0]= "Podlaha"; $typ = implode('+', $_POST['typ']); //$typ = "Podlaha" |
||
moom Profil |
#22 · Zasláno: 14. 2. 2011, 12:13:59
No to je nádhera. Děkuji, děkuji, děkuji :)
Ani nechápu jak jsem jsem chtěl použít Radio místo Checkbox. Jsem to ale knedla :) Takže finální PHP mám toto, pokud by to někdy někdo v budoucnu zajímalo: <? $plocha = $_POST['plocha']; $barva = $_POST['barva']; $typ = implode('+', $_POST['typ']); $lokalita = $_POST['lokalita']; $jmeno = $_POST['jmeno']; $email = $_POST['email']; $telefon = $_POST['telefon']; $zprava = $_POST['zprava']; $spam = $_POST['spam']; if ($jmeno!="" and $email!="") { Mail("email@email.cz", "Kalkulace", "<strong>Jméno zákazníka: </strong>" . $jmeno . "<br><strong>Telefonní kontakt: </strong>" . $telefon . "<br><strong>Velikost plochy: </strong>" . $plocha . "<br><strong>Barva: </strong>" . $barva . "<br><strong>Typ plochy: </strong>" . $typ . "<br><strong>Lokalita zakázky: </strong>" . $lokalita . "<br>" . "<br>".$zprava, "From: " .$email. "\nContent-type: text/html;charset=utf-8\n"); echo "Vaše kalkulace byla úspěšně odeslána."; } else { echo "Váši kalkulaci se nepodařilo odeslat; pravděpodobně jste nevyplnili všechny údaje."; } ?> |
||
moom Profil |
#23 · Zasláno: 14. 2. 2011, 12:25:55
V záchvatu radosti musím napsat, že v PHP začínám vidět netušené
možnosti. Nějak ovládám HTML, CSS, ale PHP by člověka pošouplo o kus dál. Jenom si nejsem jistý, jestli se to mám ještě učit, jestli to není na úzkou specializaci. Každopádně jsem si už půjčil v knihovně od Jakuba Macha knihu PHP pro úplné začátečníky :) Jdu najít co znamená implode a co přesně znamenají ty hranaté závorky v INPUT tagu: <input type="checkbox" name="typ[]" value="Stěna"> Ještě jednou děkuji za pomoc a čas. |
||
Časová prodleva: 13 let
|
0