• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Wenn Checkbox gecheckt, dann...

heini555

Neues Mitglied
Hallo Zusammen,

als blutiger Anfänger und schier endloser Fehlersuche frage ich nunmehr hier, ob mir jemand helfen kann.

Ziel ist es, die Daten des Anwenders, die er in Textfelder eingetragen hat, erst dann per e-Mail an den an mich zu versenden, wenn er eine Checkbox aktiviert hat.
HTML:
<form action="formmail.php" method="post">
         <input type="hidden" name="subject" value="Neue Anfrage">
         <input type="hidden" name="access" value="irregeheim">
         
         <p>Vorname*:<br><input size="60" maxlength="60" name="AnwenderVorname"></p>
         <p>Name*:<br><input size="60" maxlength="60" name="AnwenderName"></p>
         <p>Text*:<br><textarea rows="20" cols="80"  wrap="PHYSICAL" id="Kommentartext"  name="Kommentartext"></textarea></p>

         <input type="checkbox" name="Zustimmung" id="Zust"  value=<p>Ja, ich habe die <a  href="nutzungsbedingungen.html">Nutzungsbedingungen</a>  gelesen.<br></p>
         <p><br><input type="submit" name="Schalter" value="Absenden"
</form>


Wie bekomme ich das denn mit if und else hin?

Alternativ wäre auch möglich, den Schlater mit "disabled" auszugrauen, bis die Checkbox aktiviert worden ist.


Kann mir jemand helfen?

Danke
heini
 
Werbung:
Hallo und Willkommen im Forum.

Du hast da endlos viele Syntaxfehler drin. Die solltest du erstmal korrigieren..
Dann ist für uns eher die formmail.php interessant, da kannste dann mit if-Konstrukten arbeiten.
 
Hi,

oh, ich bin doch Anfänger. Welche Fehler meinst Du denn?

Hier mal die php:

PHP:
<?php
  $recipient = "empfänger@empfänger.de";
  Header("Location: http://www.irgendwo.de/response.html");
    $fmtMail= implode("", file("mail.htt"));
  foreach($_POST as $key=> $val) {
    $fmtResponse= str_replace("<$key>", $val, $fmtResponse);
    $fmtMail= str_replace("<$key>", $val, $fmtMail);
  }
  if ($_POST["access"] == "irregeheim") {
    mail($recipient, $_POST["subject"], $fmtMail);
  }
  echo $fmtResponse;
?>


Danke schonmal für Deine Hilfe.
 
Werbung:
Das hier z.B. ist falsch:

HTML:
value=<p>

Da die checkbox genau diesen Fehler aufzeigt, solltest Du dir das als erstes Mal anschauen. Der W3C Validator hilft ungemein bei der Prüfung (google hilft dir den zu finden).

Außerdem ist es nicht sinnvoll Absätze um die Formularfelder zu legen. Für sowas gibt es das <fieldset>-Element.
 
Okay, hab ich alles verstanden. DANKE. Nur hilft mir das nicht unbedingt weiter. Vielleicht kann mir jemand einen Tipp geben, wie ich das mit der Checkbox hinbekomme?

Ich hab mal so versucht:
Code:
<html><head><title>Auswahl</title>
<script type="text/javascript">
function gelesen () {
  if (document.Auswahl.haken.checked == true) {
    var disabled = false;
  } else {
    var disabled = true;
  }
  for (var i = 0; i < document.Auswahl.schalter.length; i++) {
    document.Auswahl.schalter.disabled = disabled;
  }
}
</script>
</head><body>

<form action="" name="Auswahl">


<p><input type="checkbox" name="haken" value="Ja"  onclick="gelesen();"> Ja, ich habe die Nutzungsbedingungen  gelesen<br>
<p><input type="submit" name="schalter" value="Absenden"<br>



Aber natürlich funktioniert das so nicht richtig... :cry::cry:
 
Von den Syntax- und Semantikfehlern mal abgesehen sollte das so funktionieren:

Checkbox
HTML:
<input type="checkbox" name="Zustimmung" id="Zust"><p>Ja, ich habe die <a  href="nutzungsbedingungen.html">Nutzungsbedingungen</a>  gelesen.</p>

formmail.php
PHP:
<?php
if(isset($_POST['Zustimmung'])){ // Wenn Checkbox gecheckt ist
	  $recipient = "empfänger@empfänger.de";
	  Header("Location: http://www.irgendwo.de/response.html");
		$fmtMail= implode("", file("mail.htt"));
	  foreach($_POST as $key=> $val) {
		$fmtResponse= str_replace("<$key>", $val, $fmtResponse);
		$fmtMail= str_replace("<$key>", $val, $fmtMail);
	  }
	  if ($_POST["access"] == "irregeheim") {
		mail($recipient, $_POST["subject"], $fmtMail);
	  }
	  echo $fmtResponse;
} else { // Wenn nicht
	echo "FEHLER! BITTE ZUSTIMMEN! <a href='#' onClick='javascript:history.back(1)'>Zurück</a>";
}
?>

Statt dem javaScript Hitory-Back kann man das auch eleganter lösen. z.B. durch Includen des Formulars.
Dazu müssen aber die $_POST-Variablen in die Values geschrieben werden, damit bereits getätigte Einträge nicht erneut gemacht werden müssen.
 
Werbung:
Zurück
Oben