Seite 1 von 1

Checkboxwert in Kontaktformular

Verfasst: 06.11.2012, 20:29
von workershop
Hi,
ich habe gerade ein ganz einfaches Kontaktformular geschrieben, und muss den Wert zweier Checkboxen übergeben (Rückruf oder per Mail).

Wie kann ich jetzt in meinem Script die Checkboxen übergeben, also das bei der Mail dann steht, Kontaktwunsch per Mail oder Telefon? Vielen Dank.

Code: Alles auswählen

<?php
if&#40;isset&#40;$_POST&#91;'submit'&#93;&#41;&#41;&#123;
$to  = 'info@ggggg.de;
$subject = 'Kontaktaufnahme über Kontaktformular';
$message = '
	<table border=0 cellpadding=3 cellspacing=3>
		<tr><td>Vorname</td><td>&#58;</td><td colspan="3">' . $_POST&#91;'vorname'&#93; . '</td></tr>
		<tr><td>Name</td><td >&#58;</td><td  colspan="3">' . $_POST&#91;'nname'&#93; . '</td></tr>
		<tr><td>Straße</td><td >&#58;</td><td  colspan="3">' . $_POST&#91;'strasse'&#93; . '</td></tr>
		<tr><td>PLZ / Ort</td><td >&#58;</td><td  colspan="3">' . $_POST&#91;'ort'&#93; . '</td></tr>
		<tr><td>Land</td><td >&#58;</td><td  colspan="3">' . $_POST&#91;'land'&#93; . '</td></tr>
		<tr><td>Telefon</td><td>&#58;</td><td  colspan="3">' . $_POST&#91;'tel'&#93; . '</td></tr>
		<tr><td>E-Mail</td><td>&#58;</td><td colspan="3">' . $_POST&#91;'email'&#93; . '</td></tr>
		<tr><td>Betreff</td><td>&#58;</td><td colspan="3">' . $_POST&#91;'bet'&#93; . '</td></tr>
		<tr><td>Nachricht</td><td>&#58;</td><td colspan="3">' . $_POST&#91;'nachricht'&#93; . '</td></tr>
	</table>
';
$headers  = 'MIME-Version&#58; 1.0' . "\r\n";
$headers .= 'Content-type&#58; text/html; charset=iso-8859-1' . "\r\n";
$sent=mail&#40;$to, $subject, $message, $headers&#41;;
if&#40;$sent&#41;
	$message="Vielen Dank. Wir haben Ihre Nachricht erhalten.";
else
	$message="Sorry. Ihre Nachricht wurde nicht versendet";

&#125;
?> 

Code: Alles auswählen

<script type="text/javascript">
function check_validate&#40;&#41;
&#123;
	var fname=document.getElementById&#40;'vorname'&#41;.value;
	var nname=document.getElementById&#40;'nname'&#41;.value;
	var tel=document.getElementById&#40;'tel'&#41;.value;
	var email=document.getElementById&#40;'email'&#41;.value;
	var bet=document.getElementById&#40;'bet'&#41;.value;
	var err=document.getElementById&#40;'error'&#41;;
	if&#40;fname==""&#41;
	&#123;
		err.innerHTML="Bitte geben Sie Ihren Vornamen an.";
		return false;
	&#125;
	if&#40;nname==""&#41;
	&#123;
		err.innerHTML="Bitte geben Sie Ihren Namen an.";
		return false;
	&#125;
	if&#40;tel==""&#41;
	&#123;
		err.innerHTML="Bitte geben Sie Ihre Telefonnummer an.";
		return false;
	&#125;
	if&#40;isNaN&#40;tel&#41;|| tel.indexOf&#40;" "&#41;!=-1&#41;&#123;
		 err.innerHTML="Enter numeric value";return false;
	&#125;
	if&#40;email==""&#41;
	&#123;
		err.innerHTML="Bitte geben Sie Ihre E-Mail an.";
		return false;
	&#125;
	var reg = /^&#40;&#91;A-Za-z0-9_\-\.&#93;&#41;+\@&#40;&#91;A-Za-z0-9_\-\.&#93;&#41;+\.&#40;&#91;A-Za-z&#93;&#123;2,4&#125;&#41;$/;
	if&#40;reg.test&#40;email&#41; == false&#41;
	&#123;
		err.innerHTML="Ungültige E-Mail.";
		return false;
    &#125;   
	if&#40;bet==""&#41;
	&#123;
		err.innerHTML="Bitte geben Sie einen Betreff an.";
		return false;
	&#125;
   else&#123;
	document.contactform.submit&#40;&#41;;
   &#125;
&#125;
</script>

Code: Alles auswählen

	<form name="contactform" id="contactform" method="post" action="" enctype="application/x-www-form-urlencoded">
						<div id="error"><? echo $message ?></div>
						<div class="text_box"><label>Vorname*</label><p><input type="text" value="" id="vorname" name="vorname" /></p></div>
				 		<div class="text_box"><label>Name*</label><p><input type="text" value="" id="nname" name="nname" /></p></div>
						<div class="text_box"><label>Straße</label><p><input type="text" value=""  id="strasse" name="strasse"/></p></div>
						<div class="text_box"><label>PLZ / Ort</label><p><input type="text" value="" id="ort" name="ort" /></p></div>
						<div class="text_box"><label>Land</label><p><input type="text" value=""  id="land" name="land"/></p></div>
						<div class="text_box"><label>Telefon*</label><p><input type="text" value="" id="tel" name="tel" /></p></div>
						<div class="text_box"><label>E-Mail*</label><p><input type="text" value="" id="email" name="email" /></p></div>
						<div class="text_box"><label>Betreff*</label><p><input type="text" value="" id="bet" name="bet" /></p></div>
						<div class="text_box"><label>Nachricht</label><span><textarea cols="" rows="" id="nachricht" name="nachricht"></textarea></span></div>

						<p class="bitte">Bitte nehmen Sie Kontakt zu mir auf</p>
						<div class="bitte">
							<p><input type="checkbox" value=""/> per E-Mail</p>
							<p><input type="checkbox" value=""/> Rufen Sie mich an</p>
						</div> 
						<div class="bitte">
							<input type="submit" class="sub_btn" value="Absenden" name="submit" onclick="return check_validate&#40;&#41;"/>
						</div>
					</form>

Verfasst:
von
Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Verfasst: 06.11.2012, 20:41
von mano_negra
im prinzip genauso wie die anderen felder.
du musst den checkboxen aber auch einen namen und wert geben.

Verfasst: 06.11.2012, 21:06
von workershop
Nach 26 Stunden ohne Schlaf komme ich nicht mehr weiter :-)

Code: Alles auswählen

<p><input type="checkbox" id=kontaktm" value="kontaktm"/> per E-Mail</p>
							<p><input type="checkbox" id=kontaktm" value="kontaktt"/> Rufen Sie mich an</p>
Funktioniert erst mal nicht :(

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 06.11.2012, 21:46
von Melegrian
workershop hat geschrieben:Funktioniert erst mal nicht :(
Name und Wert ist klar, wurde bereits geschrieben.

Nur weil ich es gerade hinter mir habe, noch ein paar Anmerkungen. Radio-Buttons und Checkboxen werden nicht auf value getestet, da die ja bereits über einen vorgegebenen Inhalt verfügen, sondern mit checked auf true oder false getestet. Und auf IDs kannst Du verzichten, wenn Du stattdessen getElementsByName verwendest.

Code: Alles auswählen

var etwas = document.getElementsByName&#40;"der_name"&#41;&#91;0&#93;;

if &#40;etwas.checked === true&#41; &#123;... ;&#125;
So erfüllt es wohl seinen Zweck:

Code: Alles auswählen

var reg = /^&#40;&#91;A-Za-z0-9_\-\.&#93;&#41;+\@&#40;&#91;A-Za-z0-9_\-\.&#93;&#41;+\.&#40;&#91;A-Za-z&#93;&#123;2,4&#125;&#41;$/;
So sieht es besser aus:

Code: Alles auswählen

var reg = /^&#40;&#91;a-z0-9_.-&#93;&#41;+\@&#40;&#91;a-z0-9_.-&#93;&#41;+\.&#40;&#91;a-z&#93;&#123;2,4&#125;&#41;$/i;
Wenn i als Modifier gesetzt ist, wird nicht zwischen Groß- und Kleinschreibung unterschieden. Ein Bindestrich gehört ans Ende oder an den Anfang einer Zeichenklasse, damit sich kein neuer Von-Bis-Bereich bilden kann, der Punkt ist ein Punkt innerhalb einer [Zeichenklasse] und kein Meta-Zeichen und muss deshalb nur außerhalb der Zeichenklasse maskiert werden.

Verfasst: 06.11.2012, 22:09
von mano_negra
he?

bei checkboxen hast du die möglichkeit jeder checkbox einen eigenen namen zu geben oder aber den gleichen namen für eine gruppe zu verwenden. dann wird der wert aber als array übergeben und muss bei der auswertung wieder zerlegt werden.

id brauchst du nicht. und eine id sollte immer eindeutig sein, nur einmal auf einer seite verwendet werden.

1.möglichkeit:

Code: Alles auswählen

<p><input type="checkbox" name="kontaktpermail" value="Mail"/> per E-Mail</p>
<p><input type="checkbox" name="kontaktpertel" value="Telefon"/> Rufen Sie mich an</p>

Code: Alles auswählen

$message = 'Kontaktwunsch per&#58; '.$_POST&#91;'kontaktpermail'&#93;.'<br>'.$_POST&#91;'kontaktpertel'&#93;;
der 2. code ist jetzt nicht so schön formatiert, da müsstest noch if abragen oder ähnliches machen um das ganze geordneter darzustellen (eventuell mit kommas, ...)

2.möglichkeit:
gleichen namen (mit [] am ende) geben und array übergeben.

Code: Alles auswählen

<p><input type="checkbox" name="kontaktwunsch&#91;&#93;" value="Mail"/> per E-Mail</p>
<p><input type="checkbox" name="kontaktwunsch&#91;&#93;" value="Telefon"/> Rufen Sie mich an</p>

Code: Alles auswählen

$kontaktwunsch= $_POST&#91;'kontaktwunsch'&#93;;
$kontaktwunsch_formatiert = implode&#40;', ',$kontaktwunsch&#41;;
$message = 'Kontaktwunsch per&#58; '.kontaktwunsch_formatiert;
PS: und wenn nur "entweder oder" möglich sein soll besser radio buttons mit gleichen namen verwenden.

Verfasst: 06.11.2012, 22:25
von Melegrian
workershop hat geschrieben:

Code: Alles auswählen

<p><input type="checkbox" id=kontaktm" value="kontaktm"/> per E-Mail</p>
							<p><input type="checkbox" id=kontaktm" value="kontaktt"/> Rufen Sie mich an</p>
Bei id= fehlen die " hinter = und so kann es nichts werden. Also nicht id=kontaktm" sondern id="kontaktm". Flüchtigkeitsfehler? Dann schlafe Dich erst einmal aus.

Verfasst: 06.11.2012, 22:29
von workershop
mano_negra hat geschrieben:he?

bei checkboxen hast du die möglichkeit jeder checkbox einen eigenen namen zu geben oder aber den gleichen namen für eine gruppe zu verwenden. dann wird der wert aber als array übergeben und muss bei der auswertung wieder zerlegt werden.

id brauchst du nicht. und eine id sollte immer eindeutig sein, nur einmal auf einer seite verwendet werden.

1.möglichkeit:

Code: Alles auswählen

<p><input type="checkbox" name="kontaktpermail" value="Mail"/> per E-Mail</p>
<p><input type="checkbox" name="kontaktpertel" value="Telefon"/> Rufen Sie mich an</p>

Code: Alles auswählen

$message = 'Kontaktwunsch per&#58; '.$_POST&#91;'kontaktpermail'&#93;.'<br>'.$_POST&#91;'kontaktpertel'&#93;;
der 2. code ist jetzt nicht so schön formatiert, da müsstest noch if abragen oder ähnliches machen um das ganze geordneter darzustellen (eventuell mit kommas, ...)

2.möglichkeit:
gleichen namen (mit [] am ende) geben und array übergeben.

Code: Alles auswählen

<p><input type="checkbox" name="kontaktwunsch&#91;&#93;" value="Mail"/> per E-Mail</p>
<p><input type="checkbox" name="kontaktwunsch&#91;&#93;" value="Telefon"/> Rufen Sie mich an</p>

Code: Alles auswählen

$kontaktwunsch= $_POST&#91;'kontaktwunsch'&#93;;
$kontaktwunsch_formatiert = implode&#40;', ',$kontaktwunsch&#41;;
$message = 'Kontaktwunsch per&#58; '.kontaktwunsch_formatiert;
PS: und wenn nur "entweder oder" möglich sein soll besser radio buttons mit gleichen namen verwenden.
Vielen Vielen Dank Euch beiden. Die erste Möglichkeit war genau das was ich brauchte - Danke!

Verfasst: 06.11.2012, 23:24
von Melegrian
Gut und hier ist noch etwas zum Spielen. Nee, nur ein Beispiel wegen checked === true. Bei mehreren gleichnamigen Werten der Name-Attribute kannst Du einer Funktion mit einer For-Schleife das Nummerieren überlassen, bei unterschiedlichen Namen ist es immer 0.

Code: Alles auswählen

<!DOCTYPE html>
<html>

<head>
<title>Daten versenden</title>
<meta charset="windows-1252">
<style type="text/css">body &#123;text-align&#58;center&#125;</style>
<script type="text/javascript">

function SENDE&#40;&#41; &#123;

    var kon = document.getElementById&#40;"ausg"&#41;;
    var ktm = document.getElementsByName&#40;"kontakt"&#41;&#91;0&#93;;
    var ktt = document.getElementsByName&#40;"kontakt"&#41;&#91;1&#93;;

// Nur für Testausgabe!

    if &#40;ktm.checked === true&#41; &#123; kon.innerHTML += ktm.value + "<br>";
    &#125;
    if &#40;ktt.checked === true&#41; &#123; kon.innerHTML += ktt.value + "<br>";
    &#125;
&#125;
</script>
</head>

<body>
<form action="#" method="post" onsubmit="SENDE&#40;&#41;; return false" accept-charset="windows-1252">
    <input type="checkbox" name="kontakt" value="Kontakt per E-Mail"> per E-Mail
    <input type="checkbox" name="kontakt" value="Kontakt per Phone"> Rufen Sie mich an<br>
    <br>
    <input type="reset"  value="Leeren">
    <input type="submit" value="Senden">
</form>
<p id="ausg"></p>
</body>
</html>
Bei JavaScript entfällt dieser Klammer-Operator [] bei gleichnamigen Werten der Name-Attribute, da die DOM-Methoden ohnehin auf den Dokumentenbaum wie auf ein Array zugreifen, doch bei PHP ist es zwingend erforderlich.

Code: Alles auswählen

<!DOCTYPE html>
<html>

<head>
<title>Daten versenden</title>
<meta charset="windows-1252">
<style type="text/css">body &#123;text-align&#58;center&#125;</style>
</head>

<body>
<form action="<?php echo basename&#40;$_SERVER&#91;"PHP_SELF"&#93;&#41;; ?>" method="post" accept-charset="windows-1252">
    <input type="checkbox" name="kontakt&#91;&#93;" value="Kontakt per E-Mail"> per E-Mail
    <input type="checkbox" name="kontakt&#91;&#93;" value="Kontakt per Phone"> Rufen Sie mich an<br>
    <br>
    <input type="reset"  value="Leeren">
    <input type="submit" value="Senden">
</form>
<p>
<?php

for &#40;$i = 0; $i < 2; $i++&#41; &#123;

	if &#40;isset&#40;$_POST&#91;"kontakt"&#93;&#91;$i&#93;&#41; and !empty&#40;$_POST&#91;"kontakt"&#93;&#91;$i&#93;&#41;&#41; &#123;

		echo htmlspecialchars&#40;$_POST&#91;"kontakt"&#93;&#91;$i&#93;&#41;."<br>";
	&#125;
&#125;
?>
</p>
</body>
</html>

Verfasst: 22.11.2012, 02:47
von nerd
Thema ist wohl schon etwas aelter, trotzdem nochmal was dazu:

Das problem ist dass der checkboxwert nur dann uebermittelt wird, wenn die checkbox auch markiert wird! Bei <input type="checkbox" name="test" value="hallo"> wird bei bei checked wird z.b. bei einem GET "form.php? ... &test=hallo" aufgerufen. Bleibt die checkbox leer, wird "test" nicht gesetzt (auch nicht als variable mit einem leerem wert).

Korrekt waere es, wenn du den checkboxwert dann in php z.b. mit

Code: Alles auswählen

if&#40;isset&#40;$_POST&#91;'test'&#93;&#41;&#41;
&#123;
//checkbox markiert
&#125;
else
&#123;
//checkbox nicht markiert
&#125; 
abfragst.

abgesehen davon halte ich den einsatz von checkboxen in diesem fall hier fuer ungeeignet. Entweder will der kunde per email oder per telefon benachrichtigt werden. Alles beides wuerde hoechstens meine mutter machen, die mich anruft um zu fragen ob die email angekommen ist.
In deinem falle waere select-option angebracht, sodass der user zwischen telefon und email waehlen muss.

Verfasst: 22.11.2012, 09:59
von xoni
In deinem falle waere select-option angebracht, sodass der user zwischen telefon und email waehlen muss.
Sehr richtig! Und dafür gibt es die wunderbaren Radio-Buttons.
Es kann immer nur einer der Radio-Buttons ausgewählt sein.
Der Wert des ausgewählten Radio-Buttons wird beim Absenden des Formulars mit übertragen.