Nicht ausgefüllte Formularfelder in DB Speichern

Peter Klein

Erfahrenes Mitglied
Hallo

Wenn ich Daten aus einem Formular in der Datenbank speichern möchte klappt alles ohne Probleme.

Lässt man eine Checkbox leer und klickt auf senden, so klappt alles, und zusätzlich kommt eine NOTICE-Warnung.
Diese kann man ja unterdrücken.
Aber wie bekommt man sie weg, bzw. wenn ein Feld leer bleibt in dem Fall die Checkbox?


Peter
 
Aber warum verbesserst du nicht den Code so, das die Warnung nicht auftritt?

Hi

das mein ich ja. Ich lasse per Query die Daten in die DB schreiben und dann kommt wie gesagt bei einem leeren Feld(Checkbox) die Meldung "NOTICE: undefined index:xxx in C:\pfad zur datei on line 63 als beispiel.

Habe gerade keinen code zur hand. Zur Not schreibe ich gleich schnell was wie ich es mache.
 
Du könntest aber zB abfragen, ob die Checkox aktiviert wurde. Wenn ja änderst du den SQL-String so, das die checkbox mit berücksichtigt wird. Wenn nicht, dann eben nicht ;)

PS: Code wäre hilfreich...
 
Das mache ich ja in der Abfrage bevor man absendet.
Hier mal der Code:
PHP:
<?php

include 'config.php';
$empfaenger	=	"postmaster@localhost";

$dblink	=	mysql_connect('localhost','root','');
			mysql_select_db('emails',$dblink);
			
			
function valid_email($str)
	{
		return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
	}

		$fehler				=	'';
		$ok					=	'';
		
if ( isset($_POST['absenden']) ) {
		$ausgabe_name		=	'';
		$ausgabe_telefon	=	'';
		$ausgabe_email		=	'';
		$ausgabe_text		=	'';
		$ausgabe_betreff	=	'';
		$ausgabe_rueckruf	=	'';
		$ausgabe_ipadresse	=	"IP-Adresse: " . $_SERVER['REMOTE_ADDR'] . "\n";
		

	if ( isset($_POST['name']) && $_POST['name'] != '' ) {
		$ausgabe_name	.=	'Name: ' . htmlspecialchars($_POST['name']) . "\n";
	}else {
		$fehler	.=	"<span style=\"color: red;\">Bitte den Namen angeben!</span><br />";
	}
	
	if ( isset($_POST['telefon']) && $_POST['telefon'] != '' ) {
		$ausgabe_telefon	.=	'Telefonnummer: ' . htmlspecialchars($_POST['telefon']) . "\n";
	}
	
	if ( isset($_POST['emailadresse']) && $_POST['emailadresse'] != '' && valid_email($_POST['emailadresse'])== TRUE ) {
		$ausgabe_email	.=	'E-Mailadresse: ' . htmlspecialchars($_POST['emailadresse']) . "\n";
	}else {
		$fehler .= "<span style=\"color: red;\">E-Mailadresse korrekt?</span><br />";
	}
	
	if ( isset($_POST['betreff']) && $_POST['betreff'] != '' ) {
		$ausgabe_betreff	.=	'Betreff: ' . htmlspecialchars($_POST['betreff']) . "\n";
	}
	
	if ( isset($_POST['texteingabe']) && $_POST['texteingabe'] != '' ) {
		$ausgabe_text	.=	'Anschreiben: ' . htmlspecialchars($_POST['texteingabe']) . "\n";
	}else {
		$fehler .= "<span style=\"color: red;\">Bitte eine Nachricht angeben!</span>";
	}
	
	if ( isset($_POST['rueckruf'])) {
		$ausgabe_rueckruf	.=	'Kunde bittet um R&uuml;ckruf.' . "\n";
	}
	
	$emailinhalt	=	$ausgabe_name . $ausgabe_text . $ausgabe_telefon . $ausgabe_email . $ausgabe_rueckruf . $ausgabe_ipadresse;
	
	if ($fehler == '') {
	  if($dblink) {
		mysql_select_db('anfragen', $dblink);
		$sql	=	"INSERT INTO 
						anfragen (Name,Telefon,Email,Betreff,Nachricht,Rueckruf,Datum) 
					VALUES 
						('".htmlspecialchars($_POST['name'])."',
						'".htmlspecialchars($_POST['telefon'])."',
						'".htmlspecialchars($_POST['emailadresse'])."',
						'".htmlspecialchars($_POST['betreff'])."',
						'".htmlspecialchars($_POST['texteingabe'])."',
						'".htmlspecialchars($_POST['rueckruf'])."',
						NOW())";
		
		mysql_query($sql);
	    }
		
      @mail($empfaenger, $_POST['betreff'] . " von " . $_POST['name'], $emailinhalt);
	  $ok	=	"<div style=\"text-align:center; border: 1px solid #000;background: #ccc;\">Die E-Mail wurde versendet,<br /> vielen Dank f&uuml;r Ihre Anfrage.</div>";
    } else {
      $fehlerausgabe	=	$fehler;
    }
	

}


?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" id="kontaktformular">
				<?php echo $ok; ?>
				<?php echo $fehler; ?>
				<dl>	
					<dt><label for="name">Name:<span class="kleinrot">*</span> </label></dt>	
					<dd><input type="text" name="name" id="name" value="
					<?php if(isset($_POST['name']) && $_POST['name']){
					echo htmlspecialchars($_POST['name']);
					} ?>" />
					</dd>
				
					<dt><label for="telefon">Telefon: </label></dt>
					<dd><input type="text" name="telefon" id="telefon" value="
					<?php if(isset($_POST['telefon']) && $_POST['telefon']){
					echo htmlspecialchars($_POST['telefon']);
					} ?>" /></dd>
					
					<dt><label for="emailadresse">E-Mail:<span class="kleinrot">*</span> </label></dt>
					<dd><input type="text" name="emailadresse" id="emailadresse" value="
					<?php if(isset($_POST['emailadresse']) && $_POST['emailadresse']){
					echo htmlspecialchars($_POST['emailadresse']);
					} ?>" /></dd>
				
					<dt><label for="betreff">Betreff: </label></dt>
					<dd><select name="betreff" id="betreff">
					<option value="Sonstiges"
					<?php if(isset($_POST['betreff']) &&$_POST['betreff'] == 'Sonstiges') {
					echo 'selected="selected"';
					} ?>>Sonstiges</option>
					<option value="Webseitenerstellung"
					<?php if(isset($_POST['betreff']) &&$_POST['betreff'] == 'Webseitenerstellung') {
					echo 'selected="selected"';
					} ?>>Anfrage Webseitenerstellung</option>
					<option value="Zusammenarbeit"
					<?php if(isset($_POST['betreff']) &&$_POST['betreff'] == 'Zusammenarbeit') {
					echo 'selected="selected"';
					} ?>>Zusammenarbeit</option>
					</select></dd>
				
					<dt>Ihre Nachricht:<span class="kleinrot">*</span> </dt>
					<dd><textarea name="texteingabe" id="texteingabe" cols="25" rows="5"><?php if(isset($_POST['texteingabe']) && $_POST['texteingabe']) {
					echo htmlspecialchars($_POST['texteingabe']);} ?></textarea></dd>

					<dd><input type="checkbox" name="rueckruf" id="rueckruf" value="rueckruf"
					<?php if(isset($_POST['rueckruf']) && $_POST['rueckruf'] == 'rueckruf'){
					echo 'checked="checked" ';
					} ?> />Bitte um R&uuml;ckruf</dd>
					<dd><span class="kleinrot">* erforderlich</span></dd>
					<dd><input type="submit" name="absenden" id="absenden" value="Abschicken" />
					<input type="reset" name="resetall" id="resetall" value="Zur&uuml;cksetzen" /></dd>
				</dl>
			</form>

Vielleicht hilft es weiter, ich meine die Checkbox mit der Bezeichnung "rueckruf"
 
Okay das habe ich mir schon gedacht.
Du musst abfragen ob der Wert auch wirklich gesetzt ist.
Wie du es schon getan hast:
PHP:
if ( isset($_POST['rueckruf'])) {

Allerdings hast du weiter unten im Quelltext immernoch
PHP:
htmlspecialchars($_POST['rueckruf'])

Und der Wert ist einfach nicht gesetzt wenn du die Checkbox nicht aktiviert hast.
Also vorher einfach Abfragen wie oben, zwischenspeichern und unten so nutzen
wie bisher (nur eben mit der zwischengespeicherten Variable).

Eigentlich kanntest du die Antwort schon selbst, bist wohl nur nicht drauf gekommen ;)

lg
 
Und der Wert ist einfach nicht gesetzt wenn du die Checkbox nicht aktiviert hast.
Also vorher einfach Abfragen wie oben, zwischenspeichern und unten so nutzen
wie bisher (nur eben mit der zwischengespeicherten Variable).

Eigentlich kanntest du die Antwort schon selbst, bist wohl nur nicht drauf gekommen ;)

lg

Wie meinst du das mit dem abfragen?
Ich denke mal bei "gesetz" den Wert in eine Variable schreiben lassen und dann im query diese neu gesetzt variable in die db schreiben lassen.korrekt?
 
Zuletzt bearbeitet:
Zurück