Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Checkboxwert in Kontaktformular

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
workershop
PostRank 8
PostRank 8
Beiträge: 697
Registriert: 19.11.2004, 19:08
Wohnort: Leipzig

Beitrag von workershop » 06.11.2012, 20:29

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>

Anzeige von ABAKUS

von Anzeige von ABAKUS »

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

mano_negra
PostRank 9
PostRank 9
Beiträge: 2812
Registriert: 23.07.2009, 15:29
Wohnort: la luna

Beitrag von mano_negra » 06.11.2012, 20:41

im prinzip genauso wie die anderen felder.
du musst den checkboxen aber auch einen namen und wert geben.

workershop
PostRank 8
PostRank 8
Beiträge: 697
Registriert: 19.11.2004, 19:08
Wohnort: Leipzig

Beitrag von workershop » 06.11.2012, 21:06

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 :(

Anzeige von ABAKUS

von Anzeige von ABAKUS »

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

Jetzt anfragen: 0511 / 300325-0.


Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 06.11.2012, 21:46

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.

mano_negra
PostRank 9
PostRank 9
Beiträge: 2812
Registriert: 23.07.2009, 15:29
Wohnort: la luna

Beitrag von mano_negra » 06.11.2012, 22:09

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.

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 06.11.2012, 22:25

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.

workershop
PostRank 8
PostRank 8
Beiträge: 697
Registriert: 19.11.2004, 19:08
Wohnort: Leipzig

Beitrag von workershop » 06.11.2012, 22:29

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!

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 06.11.2012, 23:24

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>

nerd
PostRank 10
PostRank 10
Beiträge: 4023
Registriert: 15.02.2005, 04:02

Beitrag von nerd » 22.11.2012, 02:47

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.

xoni
PostRank 8
PostRank 8
Beiträge: 692
Registriert: 22.08.2007, 12:14

Beitrag von xoni » 22.11.2012, 09:59

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.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag