Autor | Zpráva | ||
---|---|---|---|
Honza21 Profil |
#1 · Zasláno: 10. 2. 2020, 12:49:59
Ahoj,
chtěl bych Vás poprosit, jestli by mi někdo neporadil, jak mám napsat JS, aby se mi odeslal email v a něm zapsané hodnoty z formuláře - viz. ZDE UKÁZKA FORMULÁŘE. Umím jen základní "input", ale s tímhle se trápím už několikátý den a pořád mi to nejde zprovoznit. S JS mám málo zkušeností, jen hodně okrajově, takže budu rád, když mi nějaká hodná duše pomůže. Předem děkuji moc za rady. Honza |
||
lionel messi Profil |
#2 · Zasláno: 10. 2. 2020, 12:56:30
Honza21:
„jak mám napsat JS, aby se mi odeslal email v a něm zapsané hodnoty z formuláře“ JavaScript ako taký (v podobe, akej sa zmieňuje trebárs na Jakpsatweb.cz) je klientský jazyk, spracúva sa vo webovom prehliadači používateľa internetu. Webové prehliadače však e-maily fyzicky neodosielajú, to robia servery. Čiže potrebuješ serverový jazyk. Najprv musíme vedieť, aký jazyk podporuje tvoj server (ak nevieš aký, na 99,9% to bude ten najrozšírenejší - PHP) a v ňom si môžeš odosielanie e-mailov naprogramovať. V Javascripte si vieš vytvoriť istú validáciu (ktorú ale treba robiť beztak aj na strane servera) alebo to, kedy sa majú údaje z formulára predať serverovému skriptu. Máš záujem o riešenie v PHP? |
||
Hapipo Profil |
lionel messi:
. . |
||
Honza21 Profil |
#4 · Zasláno: 10. 2. 2020, 13:33:50
lionel messi:
Myslím, že jsem to popletl... Budu rád, když mi pomůžete v PHP, hlavně aby to už fungovalo. Děkuji moc. |
||
Tomášeek Profil |
#5 · Zasláno: 10. 2. 2020, 13:58:45
Honza21:
„Budu rád, když mi pomůžete v PHP, hlavně aby to už fungovalo.“ Pomůžete vs. uděláte za mě. Něco zkus sám, až si nebudeš vědět rady, přijř pro radu. Nečekej, že to tu za tebe někdo bude psát. |
||
Honza21 Profil |
#6 · Zasláno: 10. 2. 2020, 14:46:01
Já to mám vcelku dost a právě nemůžu jen přijít na to, jak to zapsat do toho emailu, aby se to propojilo. Už na to vážně zkouším několikátý den udělat sám, určitě jsem nechtěl, aby to někdo dělal za mě. Chci jen poradit s tím PHP souborem, protože si myslím, že tam je kámen úrazu, proč nefunguje odeslání emailu. Níže posílám to, co mám hotové:
index.php <form method="POST" class="kontakt-form" action="php/contact.php" id="formular"> <div class="container2"> <div class="column-left-"> <label class="container-">Slunečnice <input type="checkbox" checked="checked"> <span class="checkmark"></span> </label> <input type="number" name="quantity" min="0" max="100"><span style="font-size: 18px;"> ks</span> <select id="first" name="first"><option value="">Barva vyberte</option><option value="Červená">Červená</option><option value="Žlutá">Žlutá</option><option value="Oranžová">Oranžová</option><option value="Růžová">Růžová</option><option value="Mix barev">Mix barev</option></select> <br> <label class="container-">Růže <input type="checkbox" checked="checked"> <span class="checkmark"></span> </label> <input type="number" name="quantity" min="0" max="100"><span style="font-size: 18px;"> ks</span> <select id="second" name="second"><option value="">Barva vyberte</option><option value="Červená">Červená</option><option value="Žlutá">Žlutá</option><option value="Oranžová">Oranžová</option><option value="Růžová">Růžová</option><option value="Mix barev">Mix barev</option></select> <br> <label class="container-">Kopretina <input type="checkbox" checked="checked"> <span class="checkmark"></span> </label> <input type="number" name="quantity" min="0" max="100"><span style="font-size: 18px;"> ks</span> <select id="third" name="third"><option value="">Barva vyberte</option><option value="Červená">Červená</option><option value="Žlutá">Žlutá</option><option value="Oranžová">Oranžová</option><option value="Růžová">Růžová</option><option value="Mix barev">Mix barev</option></select> <br> <label class="container-">Sazenice <input type="checkbox" checked="checked"> <span class="checkmark"></span> </label> <input type="number" name="quantity" min="0" max="100"><span style="font-size: 18px;"> ks</span> <select id="fourth" name="fourth"><option value="">Barva vyberte</option><option value="Červená">Červená</option><option value="Žlutá">Žlutá</option><option value="Oranžová">Oranžová</option><option value="Růžová">Růžová</option><option value="Mix barev">Mix barev</option></select> <br> <label class="container-">Tulipán <input type="checkbox" checked="checked"> <span class="checkmark"></span> </label> <input type="number" name="quantity" min="0" max="100"><span style="font-size: 18px;"> ks</span> <select id="fifth" name="fifth"><option value="">Barva vyberte</option><option value="Červená">Červená</option><option value="Žlutá">Žlutá</option><option value="Oranžová">Oranžová</option><option value="Růžová">Růžová</option><option value="Mix barev">Mix barev</option></select> <br> </div> </div> <button type="submit" name="submit" class="kontakt-button">Odeslat</button> </form> <script type="text/javascript"> $("#formular").submit(function(e) { e.preventDefault(); var form = $(this); var url = form.attr('action'); $.ajax({ type: "POST", url: url, data: form.serialize(), success: function(data) { $("#formular").prepend(data); var areas = document.getElementsByClassName("clrthis"); for(var i = 0; i < areas.length; i++){ areas[i].value = ""; } } }); }); </script> contact.php <?php include_once "headers.php"; include_once "db.php"; function check_if_empty($input){ if(empty($input)) return "-"; else return $input; } if((!empty($_POST["email"]) || !empty($_POST["first"])) && !empty($_POST["second"]) && !empty($_POST["third"]) && !empty($_POST["fourth"]) && !empty($_POST["fifth"])){ $to = "info@domena.cz"; $subject = "Objedvávka z webu"; $message = htmlspecialchars(check_if_empty($_POST["first"]))."<br>"; $message .= htmlspecialchars(check_if_empty($_POST["second"]))."<br>"; $message .= htmlspecialchars(check_if_empty($_POST["third"]))."<br><br>"; $message .= htmlspecialchars(check_if_empty($_POST["fourth"]))."<br><br>"; $message .= htmlspecialchars(check_if_empty($_POST["fifth"]))."<br><br>"; $headers = "Content-Type: text/html; charset=UTF-8\r\n"; $headers .= "From: web@domena.cz"; mail($to, $subject, $message, $headers); $stmt = $connection->prepare("INSERT INTO messages (first, second, third, fourth, fifth) VALUES (null, ?, ?, ?, ?)"); $stmt->bind_param("ssss", $first, $second, $third, $fifth); $message = $connection->real_escape_string(htmlspecialchars(check_if_empty($_POST["first"]))); $message = $connection->real_escape_string(htmlspecialchars(check_if_empty($_POST["second"]))); $message = $connection->real_escape_string(htmlspecialchars(check_if_empty($_POST["third"]))); $message = $connection->real_escape_string(htmlspecialchars(check_if_empty($_POST["fourth"]))); $message = $connection->real_escape_string(htmlspecialchars(check_if_empty($_POST["fifth"]))); if($stmt->execute()) echo "Děkujeme, na Vaši objednávku odpovíme nejpozději do 24 hodin."; else echo "Omlouváme se, ale při zpracování došlo k chybě."; } else { echo "Omlouváme se, ale nebyly správně zadané údaje."; //něco chybí, něco zůstalo nevyplněný. } ?> Děkuji |
||
Tomášeek Profil |
Honza21:
„určitě jsem nechtěl, aby to někdo dělal za mě.“ Což nebylo zřejmé, když jsi neukázal ani řádku kódu. Navíc nebylo co debugovat, aniž bychom to viděli... V HTML není pole s name=email , čili podmínka na 12. řádku bude vždy false .
Checkboxy v HTML nemají atribut name , tudíž se neodešlou a jsou tam jaksi navíc (pokud neslouží jen k JS zobrazování/skrývání obsahu).
Pak moc nechápu, k čemu je funkce check_if_empty , kdy ji voláš uvnitř podmínky z řádku 12, která prázdné hodnoty z formuláře nepustí. Namísto toho formát vloženého e-mailu nekontroluješ nikde.
Na řádcích 30-34 si přepisuješ neustále proměnnou $message (bude v ní jen to na řádku 24), kterou pak dál nepoužíváš. Vlastně to celé nedává v tom místě žádný smysl.
Možná tam toho bude víc, tohle je viditelné na první letmý pohled. |
||
Honza21 Profil |
#8 · Zasláno: 10. 2. 2020, 17:01:45
Tomášeek:
Zkouším to podle Vás opravovat, ale nejde mi to. Nemohl by jste mi prosím poslat úpravu v živé ukázce. Budu moc vděčný. |
||
Tomášeek Profil |
Honza21:
Nechce se mi ten kód celý procházet, navíc bez includovaných souborů ho ani nemám šanci rozběhnout (a ne, nechci je poslat). Napsal jsem toho dost, proč to nefunguje, je to základní debugging. Zjisti si, kam se script dostane (do všech větví si vlož nějaká echa ) a koukej, která se ti vypíšou a kde script skončí. Zapni si výpis chybových hlášek, pokud jsou ve scriptu syntaktické chyby. Celé to PHP má pár řádků, neměl by být problém ho rozběhnout, nemyslíš?
|
||
Kajman Profil |
#10 · Zasláno: 10. 2. 2020, 20:56:47
Honza21:
A nepošle se tedy jen mail ale hodnoty se uloží do databáze v pořádku? |
||
lionel messi Profil |
#11 · Zasláno: 10. 2. 2020, 21:15:25
Tomášeek:
„V HTML není pole s name=email , čili podmínka na 12. řádku bude vždy false .“
Len upresním: Určite to nie je žiaduce správanie autorovho skriptu, ale nemyslím si, že tá podmienka bude vždy false. Najprv sa vyhodnotí výraz s || , keďže je v zátvorkách, potom postupne zvyšok. Ak vyplníme všetky ostatné premenné okrem $_POST["email"] hodnotami, ktoré sa nepretypujú na false, podmienka bude true.
So zvyškom tvojho príspevku plne súhlasím. |
||
Tomášeek Profil |
#12 · Zasláno: 10. 2. 2020, 22:04:07
lionel messi:
Máš pravdu, všude jsem tam "viděl" && . Toho ozávorkování a || v první části podmínky jsem si nevšiml.
|
||
Časová prodleva: 4 roky
|
0