Složitější HTML formulář s odesláním

Velouc

Složitější HTML formulář s odesláním
« kdy: 03. 07. 2011, 14:47:50 »
Podle návodu na http://www.jakdelatweby.cz/php/email.php jsem vytvořil 2 soubory. Je to formulář který se vyplní a odešle se na můj e-mail.
1. soubor: email.php
Kód: [Vybrat]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title>Odesílání emailu</title>
</head>
<body>
<h1>Odesílání emailu</h1>

<form action="posli.php" method="post">
<input name="email" size="25" value="Váš@mail"><br>
<input name="predmet" size="25" value="Předmět"><br>
<input name="spam" size="25"> <strong>= 1 + 1</strong><br>
<textarea name="zprava" rows="6" cols="55">Zpráva...</textarea><br>
<input type="submit" value="Odeslat">
</form>

</body>
</html>

2. soubor: posli.php
Kód: [Vybrat]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title>Odesílání emailu</title>
</head>
<body>
<h1>Odesílání emailu</h1>

<?
$predmet = $_POST['predmet'];
$email = $_POST['email'];
$spam = $_POST['spam'];
$zprava = $_POST['zprava'];

if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2")
{
Mail("vase@adresa.com", $predmet, $zprava, "From: " . $email);
echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>";
}
else
{
echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje, nebo nevíte kolik je 1 + 1.</p>";
}
?>

</body>
</html>

Jede mi to, ale chtěl bych do formuláře přidat výběrové pole, zatrhávací políčko a přepínače.
Jak na to?
« Poslední změna: 06. 07. 2011, 18:07:28 od Petr Krčmář »


Re: Formulář
« Odpověď #1 kdy: 03. 07. 2011, 15:11:30 »
Můj oblíbený web (mám to i offline): http://www.jakpsatweb.cz/html/formulare.html

Velouc

Re: Formulář
« Odpověď #2 kdy: 03. 07. 2011, 15:18:50 »
Když dám do toho formuláře třeba checkbox, nahraju ho na server, vyplním a odešlu, tak mi na e-mail nepřijde že někdo zaškrtl to políčko.

Re: Formulář
« Odpověď #3 kdy: 03. 07. 2011, 16:11:01 »
Kouknul jsem do záloh, před asi deseti lety jsem takhle dělal jeden web.
Použil jsem funkci:
Kód: [Vybrat]
document.Mailer.action="mailto:xxxxxxxxxx@yyyyyyyyyy.cz"
Po stisknutí tlačítka udělá to, že otevře poštovního klienta s předvyplněným mailem a uživatel to odklepne.
Musím říct, že Opera to vůbec nepředvyplní, pro test jsem teď použil Rekonq.
Já tehdy používal jen input ( TYPE="text") a textarea.
Když do formuláře vložím:
Kód: [Vybrat]
<TR height=23>
<TD>Checkbox:</TD>
<TD><input TYPE="checkbox" SIZE=15 NAME="Checkbox"></TD>
</TR>
Pokud zatrhnu, tak se v mailu objeví:
Checkbox=on
když nezatrhnu, tak tam není nic.

Pepe-Cheb

Re: Formulář
« Odpověď #4 kdy: 03. 07. 2011, 16:48:00 »
Kód: [Vybrat]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title>Odesílání emailu</title>
</head>
<body>
<h1>Odesílání emailu</h1>

<?
$predmet = $_POST['predmet'];
$email = $_POST['email'];
$spam = $_POST['spam'];
$zprava = $_POST['zprava'];
if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2")
{
  $subject = "=?utf-8?B?".base64_encode($predmet)."?=";
  $headers = "MIME-Version: 1.0\n";
  $headers .= "Content-Type: text/plain; charset=utf-8\n";
  $headers .= "From: =?UTF-8?B?".base64_encode($predmet)."?=<".$email.">\n";
  mail ("vas@email.cz", $subject, $zprava, $headers);

echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>";
}
else
{
echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje, nebo nevíte kolik je 1 + 1.</p>";
}
?>

</body>
</html>



takto ?


Oxymoron

Re: Formulář
« Odpověď #5 kdy: 03. 07. 2011, 17:59:28 »
Co znamená, že do formuláře přidáš checkbox? Že ho přidáš jenoim do email.php, přičemž posli.php zůstame nezměněný. Pokud ano, pak je problém v tom, že zaškrtuní se sice přenese na server, ale nic to zaškrtnutí nezpracuje. Každý element formuláře je vlastně nová proměnná, takže jí musíš také zpracovat, např.:

když do email.php přidáš
<input type="checkbox" name="zaskrtavatko" value="Zaškrtnuto">


musíš s tím udělat i něco v posli.php, např.

$zaskrtavatko = $_POST['zaskrtavatko'];
$zprava = $zprava."\n\n".$zaskrtavatko;


(předpokládám umístění pod $zprava = $_POST['zprava'];)

Lze požít i funkci isset($_POST['zaskrtavatko']) {}, protože proměnná zaskrtavatko se přenáší pouze pokud je checkbox zaškrtnut.

Patrik

Re: Složitější HTML formulář s odesláním
« Odpověď #6 kdy: 09. 08. 2011, 23:54:16 »
$mail_content = print_r($_POST, true);