Autor Zpráva
kesaj
Profil
Zdravím Vás.

Mám vytvorený mailový formulár, pre mňa trošku zložitejší, lebo tam je veľa polí, ktoré chcem posielať na mail. Nefunguje mi posielanie všetkých položiek - po odoslaní formulára nič nespraví. Chcel by som ho spraviť tak, aby každé pole, ktoré bude vyplnené na formuláry poslalo mailom typu napr. : Prevedenie : Obojstranne biele , ak zákazník začiarkne príslušné políčko. Ďakujem všetkým, ktorý pomôžu.

HTML :

<div class="formular">		
		
<form  action="../objednavka/mail_stevex.php" method="post">

<p>
<tr>
<td class="kontakt"><b>Meno</b></td>
<td class="kontakt"><input name="jmeno" type="text"  /></td>

</tr></p>
<p>
<tr>
<td class="kontakt"><b>E-mail</b></td>
<td class="kontakt"><input name="mail" type="text"  /></td>
</tr></p>
<p>
<tr>
<td class="kontakt"><b>Telefón</b></td>
<td class="kontakt"><input name="telefon" type="text"  /></td>
</tr></p>
<p>
<tr>
<td class="kontakt"><b>Výber z možnosti objednania</b></td>

<td class="kontakt"><select name="predmet">
<option value="Objednávka plastových/hliníkových okien">Plastové/hliníkové okná</option>
<option value="Objednávka plastových/hliníkových dverí">Plastové/hliníkové dvere</option>


</select></td>
</tr></p>

<h2>Celkové rozmery okna / dverí</h2>

<p>
<tr>
<td class="kontakt"><b>Šírka</b></td>

<td class="kontakt"><input name="sirka" type="text"  /></td>
</tr></p>

<p>
<tr>
<td class="kontakt"><b>Výška</b></td>
<td class="kontakt"><input name="vyska" type="text"  /></td>
</tr></p>

<h2>Požadované farebné prevedenie</h2>

<p>
<tr>
<td class="kontakt"><b>Obojstranne biele</b></td>

<td class="kontakt"><input name="prevedenie" type="radio"  /></td>
</tr></p>

<p>
<tr>
<td class="kontakt"><b>1x imitácia dreva (exteriér)</b></td>
<td class="kontakt"><input name="prevedenie" type="radio"  /></td>
</tr></p>

<p>
<tr>
<td class="kontakt"><b>2x imitácia dreva (ext. a int.)</b></td>
<td class="kontakt"><input name="prevedenie" type="radio"  /></td>
</tr></p>

<h2>Doplnky</h2>

<p>
<tr>
<td class="kontakt"><b>Interiérové žalúzie</b></td>
<td class="kontakt"><input name="doplnky" type="checkbox"  /></td>
</tr></p>

<p>
<tr>
<td class="kontakt"><b>Sieťky proti hmyzu</b></td>
<td class="kontakt"><input name="doplnky" type="checkbox"  /></td>
</tr></p>

<p>
<tr>
<td class="kontakt"><b>Vnútorné parapety</b></td>
<td class="kontakt"><input name="doplnky" type="checkbox"  /></td>
</tr></p>

<p>
<tr>
<td class="kontakt"><b>Vonkajšie parapety</b></td>
<td class="kontakt"><input name="doplnky" type="checkbox"  /></td>
</tr></p>

<h2>Montáž</h2>

<p>
<tr>
<td class="kontakt"><b>Montáž do peny bez murárskych prác</b></td>
<td class="kontakt"><input name="montaz" type="radio"  /></td>
</tr></p>

<p>
<tr>
<td class="kontakt"><b>Montáž kompletná s murárskymi prácami</b></td>
<td class="kontakt"><input name="montaz" type="radio"  /></td>
</tr></p>

<p>
<tr>
<td class="kontakt"><b>Bez montáže</b></td>

<td class="kontakt"><input name="montaz" type="radio"  /></td>
</tr></p>

<h2>Množstvo</h2>

<p>
<tr>
<td class="kontakt"><b>Počet kusov</b></td>
<td class="kontakt"><input name="mnozstvo" type="text"  /></td>
</tr></p>

<h2>Doplňujúce informácie</h2>
<p>
<tr>

<td class="kontakt"><textarea cols="30" rows="5" name="text" onclick="if (this.value=='Tu môžete zanechať svoj odkaz&hellip;') this.value='';">Tu môžete zanechať svoj odkaz&hellip;</textarea></td>
</tr></p>

<h2>Overenie proti spam robotom</h2>

<p>
<tr>
<td class="kontakt"><strong>Opíšte číslo z obrázka</strong>  </td>

<td> <input name="spam" size="7" type="text"/>
<img src="images/vzorec.jpg"  alt="Ochrana proti spamu" style="float:none; padding-left:25px;" /></td>


</tr></p>
<p>
<input type="submit" value="Odoslať" />
<input type="reset" value="Reset" />
</p>


<p>

<td class="kontakt"><strong>Ak máte problém s odoslaním formulára, použite prosím kontaktné údaje z <a href="index.php?page=kontakt"><span>tejto stránky</span></a> </strong>  </td>
</p>


</form>
</div>


PHP :

<?php
$jmeno = $_POST['jmeno'];/*takto proměnné přidělíme to co bylo odesláno ve formuláři metodou POST s atributem name="jmeno"*/
$telefon = $_POST['telefon'];
$mail = $_POST['mail'];
$predmet = $_POST['predmet'];
$schodzka = isset($_POST['schodzka']) ? 'Zákazník má záujem o prezentačnú schôdzku.' : '';
$spam = $_POST['spam'];
$sirka = $_POST['sirka'];
$vyska = $_POST['vyska'];
$prevedenie = $_POST['prevedenie'];
$doplnky = $_POST['doplnky'];
$montaz = $_POST['montaz'];
$mnozstvo = $_POST['mnozstvo'];


$text = $_POST['text'];

$sprava ="Meno : $jmeno\r\n Telefon: $telefon\r\n Text: $text\r\n Schodzka: $schodzka\r\n Sirka: $sirka\r\n Vyska: $vyska\r\n";

$prijemce = "martin.jasek@abitec.sk";
/*vyplníte mail, na který se má formulář odesílat*/

$zahlavi = "From: " . $mail . "\r\n"
. "Content-Type: text/plain; charset=UTF-8; format=flowed\n"
    . "MIME-Version: 1.0\n"
    . "Content-Transfer-Encoding: 8bit\n"
    . "X-Mailer: PHP\n";
/*zobrazuje pak v mailu jako kdyby vám mail přišel přímo z tohoto mailu, můžete pak tedy rovnou odpovídat na mail, který uživatel uvedl*/

/*takto zajistíme, aby se mail neodeslal, pokud nejsou všechna pole vyplněna*/
if ( !empty($jmeno) and !empty($mail) and !empty($predmet) and !empty($text) and $spam=="215389") and !empty($vyska) and !empty($sirka) {
mail($prijemce, $predmet, $sprava, $zahlavi, $vyska, $sirka);

echo "<script>alert('Ďakujeme. Vaša správa bola úspešne odoslaná. V krátkom čase Vás budeme kontaktovať.');</script>";

echo "<script type=\"text/javascript\">
setTimeout(\"self.location.replace('http://www.abitec.sk')\", 1*1000)
</script>";


/*toto se vypíše do dokumentu, pokud se mail odešle*/

} else {
echo "<script>alert('Prosíme Vás, aby ste vyplnili všetky údaje, prípadne správne zadali číslo z obrázka a správu odoslali znova. Ďakujeme.');</script>"; /*toto se vypíše pokud nebudou vyplněna všechna pole, mail se neodešle*/
echo "<script type=\"text/javascript\">
setTimeout(\"self.location.replace('index.php?page=abra_objednavka')\", 1*100)
</script>";
}
?>
petr 6
Profil
Klasická chyba, podívej se na parametry funkce mail.

Jinak asi těžko ti na mail bude chodit barevné provedení, když ho do té zprávy nevložíš.
kesaj
Profil
Ďakujem za odpoveď.

Snažil som sa uvedené opraviť - no pri odoslaní formulára sa nič neudeje, nevypíše žiadnu chybu, iba ostane prázdna stránka.

V čom by mohol byť problém? Vďaka za pomoc.

Prikladám upravené PHP :

<?php
$jmeno = $_POST['jmeno'];/*takto proměnné přidělíme to co bylo odesláno ve formuláři metodou POST s atributem name="jmeno"*/
$telefon = $_POST['telefon'];
$mail = $_POST['mail'];
$predmet = $_POST['predmet'];
$schodzka = isset($_POST['schodzka']) ? 'Zákazník má záujem o prezentačnú schôdzku.' : '';
$spam = $_POST['spam'];
$sirka = $_POST['sirka'];
$vyska = $_POST['vyska'];
$prevedenie = $_POST['prevedenie'];
$doplnky = $_POST['doplnky'];
$montaz = $_POST['montaz'];
$mnozstvo = $_POST['mnozstvo'];


$text = $_POST['text'];

$sprava ="Meno : $jmeno\r\n Telefon: $telefon\r\n Text: $text\r\n Schodzka: $schodzka\r\n Sirka: $sirka\r\n Vyska: $vyska\r\n
Prevedenie: $prevedenie\r\n doplnky: $doplnky\r\n  montaz: $montaz\r\n  mnozstvo: $mnozstvo\r\n";

$prijemce = "martin.jasek@abitec.sk";
/*vyplníte mail, na který se má formulář odesílat*/

$zahlavi = "From: " . $mail . "\r\n"
. "Content-Type: text/plain; charset=UTF-8; format=flowed\n"
    . "MIME-Version: 1.0\n"
    . "Content-Transfer-Encoding: 8bit\n"
    . "X-Mailer: PHP\n";
/*zobrazuje pak v mailu jako kdyby vám mail přišel přímo z tohoto mailu, můžete pak tedy rovnou odpovídat na mail, který uživatel uvedl*/

/*takto zajistíme, aby se mail neodeslal, pokud nejsou všechna pole vyplněna*/



if ( !empty($jmeno) and !empty($mail) and !empty($predmet) and !empty($text) and $spam=="215389") and !empty($vyska) and !empty($sirka) 
and !empty($prevedenie) and !empty($doplnky) and !empty($montaz) and !empty($mnozstvo) {
mail($prijemce, $predmet, $sprava, $zahlavi, $vyska, $sirka, $prevedenie, $doplnky, $montaz, $mnozstvo);




echo "<script>alert('Ďakujeme. Vaša správa bola úspešne odoslaná. V krátkom čase Vás budeme kontaktovať.');</script>";

echo "<script type=\"text/javascript\">
setTimeout(\"self.location.replace('http://www.web.abitec.sk')\", 1*1000)
</script>";


/*toto se vypíše do dokumentu, pokud se mail odešle*/

} else {
echo "<script>alert('Prosíme Vás, aby ste vyplnili všetky údaje, prípadne správne zadali číslo z obrázka a správu odoslali znova. Ďakujeme.');</script>"; /*toto se vypíše pokud nebudou vyplněna všechna pole, mail se neodešle*/
echo "<script type=\"text/javascript\">
setTimeout(\"self.location.replace('index.php?page=objednavka')\", 1*100)
</script>";
}
?>
petr 6
Profil
Stále stejná chyba, podívej se na parametry funkce mail, kterou používáš na řádku 37 s příliš mnoha parametry.
kesaj
Profil
Ak som správne pochopil funkcia mail zabezpečuje to, čo sa mi objaví v mailovej správe, ktorá mi príde po odoslaní formulára.
Potrebujem práve, aby mi prišli všetky údaje vo formulári - ako to zabezpečím?
Petr 6
Profil *
kesaj:
Potrebujem práve, aby mi prišli všetky údaje vo formulári - ako to zabezpečím?
Vložíš je do zprávy, která je třetím parametrem funkce mail.
kesaj
Profil
Petr 6:
Ďakujem za odpoveď. Ja však php neovládam - bol som rád, že som spojazdnil jednoduchší mailový formulár, no neviem konkrétne, kde mám zmeniť to čo popisuješ. Nemôžeš mi konkrétne na mojom php kóde pomôcť čo kde mám zadať, aby mi to fungovalo, tak ako som popisoval? Ďakujem za pomoc.
petr 6
Profil
kesaj:
Nemôžeš mi konkrétne na mojom php kóde pomôcť čo kde mám zadať, aby mi to fungovalo, tak ako som popisoval?
Na řádku 37 umaž všechny parametry funkce mail kromě prvních čtyř.
kesaj
Profil
petr 6:
Ďakujem za odpoveď. Spravil som ako píšeš, no stále nič neodošle a zostane prázdna stránka po odoslaní.
kesaj
Profil
PHP kód teraz vyzerá takto :

<?php
$jmeno = $_POST['jmeno'];/*takto proměnné přidělíme to co bylo odesláno ve formuláři metodou POST s atributem name="jmeno"*/
$telefon = $_POST['telefon'];
$mail = $_POST['mail'];
$predmet = $_POST['predmet'];

$spam = $_POST['spam'];
$sirka = $_POST['sirka'];
$vyska = $_POST['vyska'];
$prevedenie = $_POST['prevedenie'];
$doplnky = $_POST['doplnky'];
$montaz = $_POST['montaz'];
$mnozstvo = $_POST['mnozstvo'];


$text = $_POST['text'];

$sprava ="Meno : $jmeno\r\n Telefon: $telefon\r\n Text: $text\r\n Sirka: $sirka\r\n Vyska: $vyska\r\n
Prevedenie: $prevedenie\r\n Doplnky: $doplnky\r\n  Montaz: $montaz\r\n  Mnozstvo: $mnozstvo\r\n";

$prijemce = "martin.jasek@abitec.sk";
/*vyplníte mail, na který se má formulář odesílat*/

$zahlavi = "From: " . $mail . "\r\n"
. "Content-Type: text/plain; charset=UTF-8; format=flowed\n"
    . "MIME-Version: 1.0\n"
    . "Content-Transfer-Encoding: 8bit\n"
    . "X-Mailer: PHP\n";
/*zobrazuje pak v mailu jako kdyby vám mail přišel přímo z tohoto mailu, můžete pak tedy rovnou odpovídat na mail, který uživatel uvedl*/

/*takto zajistíme, aby se mail neodeslal, pokud nejsou všechna pole vyplněna*/



if ( !empty($jmeno) and !empty($mail) and !empty($predmet) and !empty($text) and $spam=="215389") and !empty($vyska) and !empty($sirka) 
and !empty($prevedenie) and !empty($doplnky) and !empty($montaz) and !empty($mnozstvo) {
mail($prijemce, $predmet, $sprava, $zahlavi);




echo "<script>alert('Ďakujeme. Vaša správa bola úspešne odoslaná. V krátkom čase Vás budeme kontaktovať.');</script>";

echo "<script type=\"text/javascript\">
setTimeout(\"self.location.replace('http://www.web.abitec.sk')\", 1*1000)
</script>";


/*toto se vypíše do dokumentu, pokud se mail odešle*/

} else {
echo "<script>alert('Prosíme Vás, aby ste vyplnili všetky údaje, prípadne správne zadali číslo z obrázka a správu odoslali znova. Ďakujeme.');</script>"; /*toto se vypíše pokud nebudou vyplněna všechna pole, mail se neodešle*/
echo "<script type=\"text/javascript\">
setTimeout(\"self.location.replace('index.php?page=objednavka')\", 1*100)
</script>";
}
?>
petr 6
Profil
kesaj:
Spravil som ako píšeš, no stále nič neodošle a zostane prázdna stránka po odoslaní.
Co znamená, že zůstane prázdná stránka?
Nevypíše se ani "Ďakujeme. Vaša správa bola úspešne odoslaná...", ani "Prosíme Vás, aby ste vyplnili všetky údaje..."?
kesaj
Profil
petr 6:
Áno ako píšeš - nič nevypíše, presmeruje na mail_stevex.php a zostane len biela stránka. Ako keby bola chyba niekde v kóde a nespravilo vôbec nič...
sacharoza
Profil *
kesaj: Je chybne ozavorkovana podminka a stane se tam parse error. Kdybyste pouzival debugger, tak tu nemusite cekat nekolik dni na odpoved.

if ( !empty($jmeno) and !empty($mail) and !empty($predmet) and !empty($text) and $spam=="215389") and !empty($vyska) and !empty($sirka) 
and !empty($prevedenie) and !empty($doplnky) and !empty($montaz) and !empty($mnozstvo)) {
kesaj
Profil
Ďakujem, už to funguje.

Potrebujem však ešte doriešiť jednu vec a to , že na mail mi príde prevedenie:on, montaz:on, doplnky:on - čiže iba, že bolo začiarknuté políčko - ako docieliť, aby mi na mail prišlo to, čo dotyčný začiarkol - teda celý text ? napr.: montaz: Montáž kompletná s murárskymi prácami .

Ďakujem za pomoc.
petr 6
Profil
http://www.jakpsatweb.cz/html/formulare.html
kesaj
Profil
Áno, ďakujem peter - ale tam je len popísané, ako vytvárať formuláre HTML - ten mám vytvorený - myslím, že treba skôr nastaviť v php skripte, aby mi neprislo len, že dotyčný začiarkol políčko, ale aj aké políčko - neviem ako to mám v php zapísať. Ďakujem za pomoc.
kesaj
Profil
Ďakujem - mám to vyriešené

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: