php-loser: Datenbankeintrag per Formular

Beitrag lesen

Soooo!

Ich hab nochmal wie blöd gebastelt und dabei kam folgendes raus:

Die add_event.php:

<?php session_start ();  
  
require ('settings.php');  
  
$connectionid = mysql_connect($db_host, $db_user, $db_pass);  
$db_selected = mysql_select_db($db_name, $connectionid);  
  
if (isset ($_POST['Datum'], $_POST['Zeit'], $_POST['Ort'], $_POST['Adresse'])) {  
	if (empty ($_POST['Datum']) || empty($_POST['Zeit']) || empty($_POST['Ort']) || empty($_POST['Adresse'])) {  
		$form_error['Input'] = "Bitte alle Felder ausfüllen";  
		die(); // da sonst das script weiter durchlaufen wird (auch der DB-Eintrag)  
	}  
	  
	// alle Slashes in superglobalen arrays löschen  
	if (get_magic_quotes_gpc()) {  
		$in = array(&$_GET, &$_POST, &$_COOKIE);  
		while (list($k,$v) = each($in)) {  
			foreach ($v as $key => $val) {  
				if (!is_array($val)) {  
					$in[$k][$key] = stripslashes($val);  
					continue;  
				}  
				$in[] =& $in[$k][$key];  
			}  
		}  
		unset($in);  
	}  
	  
	// Überprüfung Datumfeld  
	// $form_error['Datum'] = "Kein gültiges Datum angegeben."  
  
	// Überprüfung Zeitfeld  
	// $form_error['Zeit'] = "Keine gültige Zeitangabe."  
  
	// Überprüfung Adressfeld  
	  
	  
	  
  
  
  
	if (count($form_error) == 0) {  
			if (!$connectionid) {  
				die('Verbindung nicht möglich : ' . mysql_error());  
			}  
  
			if (!$db_selected) {  
   			 	die ('Kann Datebank nicht benutzen : ' . mysql_error());  
			}  
			else {  
			$sql = "INSERT INTO agenda (Datum, Zeit, Ort, Adresse) VALUES ('".$_POST['Datum']."', '".$_POST['Zeit']."', '".$_POST['Ort']."', '".$_POST['Adresse']."')";  
		  
			if (!mysql_query($sql,$connectionid)) {  
				die('Eintrag nicht möglich : ' . mysql_error());  
			}  
		}	  
	}  
}  
  
// Ausgabe des Formulars  
include ('htmlform.php');  
  
  
// Ausgabe der bestehenden Einträge (bisher unformatiert)  
$q = mysql_query("SELECT Datum, Zeit, Ort, Adresse FROM agenda");  
  
while($r = mysql_fetch_assoc($q)) {  
	$arr[] = $r;  
}  
  
echo "<pre>";  
print_r($arr);  
echo "</pre>";  
  
?> 

und die Datei htmlform.php in welcher das Formular ist (getrennt, da es so einfacher "gewartet" werden kann.

<form action="<?php htmlspecialchars($_SERVER['PHP_SELF'])?>" method="post">  
	<fieldset>  
		<ul>  
			<li class="first">Event hinzufügen</li>  
			<?php if (isset($form_error['Input'])){echo '<li class="error">'.$form_error['Input'].'</li>';}?>  
			<?php if (isset($form_error['Datum'])){echo '<li class="error">'.$form_error['Datum'].'</li>';}?>  
			<li><label for="Datum">Datum:</label><input type="text" name="Datum" id="<?php if (isset($form_error[Datum])){echo 'fehler';} ?>" class="text" /></li>  
			<?php if (isset($form_error[Zeit])){echo '<li class="error">'.$form_error[Zeit].'</li>';}?>  
			<li><label for="Zeit">Zeit:</label><input type="text" name="Zeit" id="Zeit<?php if (isset($form_error[Zeit])){echo 'fehler';} ?>" class="text" /></li>  
			<?php if (isset($form_error[Ort])){echo '<li class="error">'.$form_error[Ort].'</li>';}?>  
			<li><label for="Ort">Ort:</label><input type="text" name="Ort" id="Ort<?php if (isset($form_error[Ort])){echo 'fehler';} ?>" class="text" /></li>  
			<?php if (isset($form_error[Adresse])){echo '<li class="error">'.$form_error[Adresse].'</li>';}?>  
			<li><label for="Adresse">Adresse:</label><input type="text" name="Adresse" id="Adresse<?php if (isset($form_error[Adresse])){echo 'fehler';} ?>" class="text" /></li>  
			<li class="last"><input type="submit" value="Hinzufügen" class="submit" /></li>  
		</ul>  
	</fieldset>  
</form>

Nun hab ich aber noch mehrere Probleme, bei denen ich nicht weiterkomme. Gerne würde ich das Schritt für Schritt durchgehen, weil ihr sonst wohl gleich wieder mit umfassenden Antworten auf mich einschlagt von welchen ich nur knapp 1% verstehe. Und bitte antwortet so einfach wie möglich, sonst komm ich bei euren Antworten nicht nach.

Problem 1: Beim ersten laden erscheint das Formular korrekt. Wenn man (korrekte) Eingaben tätigt, werden sie erfolgreich in die Datenbank geschrieben und das Formular sowie die eingetragenen erneut angezeigt. Wenn man alles leer lässt oder nur ein Feld ausfüllt und auf "Hinzufügen" klickt, erscheint nur eine leere Seite. Eigentlich sollte das Formular mit den entsprechenden Fehlermeldungen angezeigt werden.

Problem 2: Die Daten können zwar nur von einer Person eingegeben werden und die weiss wie sie sie eingeben muss, aber dennoch möchte ich die Eingaben überprüfen und in ein für die Datenbank sinnvolles Format bringen (sofern es nicht bereits so ist.) Wie kann ich also überprüfen ob eine gültige Zeit xx:xx und ein gültiges Datum xx.xx.xxxx oder xxxx-xx-xx  (--> für die Datenbank umwandeln in xx.xx.xxxx) eingegeben wurde?