stadt-husum
Goto Top

Wenn-Dann-Funktion

Guten Tag,

ich stehe gerade vor einem Problem, das ich nicht ohne Hilfe lösen kann.

Ich habe ein Formular in PHP mit einer MySQL-Datenbank.
Im Formular ist eine DropDown-Liste mit 2 Werten (Ja / Nein).
Diese Daten werden aus der Datenbank gezogen und können in dem Formular, um das es hier geht, verändert werden.
Wenn der Wert "Ja" ist, dann erscheint eine Abfrage, ob sich der Benutzer wirklich sicher ist. Bei "Nein" wird einfach nur "Nein" in die Datenbank eingetragen.

Jetzt kommt der Punkt, wo ich gerade nicht weiß, wie er zu lösen ist...

Wenn im Formular vorher schon "Ja" stand soll nicht die Abfrage erscheinen, ob sich der Benutzer sicher ist, sonder die Abfrage einfach überspringen.

Ich hänge da schon lange dran und habe keinen Plan mehr!

Danke schonmal für die Hilfe!

Dennis Baum
Stadt Husum

Content-ID: 115294

Url: https://administrator.de/contentid/115294

Ausgedruckt am: 23.11.2024 um 01:11 Uhr

dog
dog 05.05.2009 um 11:21:57 Uhr
Goto Top
Wenn im Formular vorher schon "Ja" stand soll nicht die Abfrage erscheinen, ob sich der Benutzer sicher ist, sonder die Abfrage einfach überspringen.

Irgendwie seh ich dein Problem nicht.
Du schaffst es doch den aktuellen Wert aus der DB zu holen und du schaffst es ihn wieder zu speichern. Wo ist da das Problem in zwischendurch auch noch gleich zu vergleichen?

Grüße

Max
Stadt-Husum
Stadt-Husum 05.05.2009 um 11:23:50 Uhr
Goto Top
Ich weiß ja nicht, wie das aussehen soll. Das ist es ja.
dog
dog 05.05.2009 um 12:43:08 Uhr
Goto Top
...sorry, aber ich komme nicht mit. Wie soll was aussehen?

Was ist dein bisheriger Code?
masterG
masterG 05.05.2009 um 16:04:59 Uhr
Goto Top
dog
dog 05.05.2009 um 20:33:55 Uhr
Goto Top
OK, ich hab deinen Code bekommen.
Allerdings ist das ein heilloses Chaos - da musst du auf jeden Fall was ändern.

Ich sehe allein vier verschiedene Stellen, an denen platz_erhalten in der DB geändert wird.

Und eine davon, nämlich:

		mysql_query("UPDATE kinder SET platz_erhalten='Ja' WHERE id_kinder= ".$_POST['platz_ist_ja']);  

wird jedes mal automatisch ausgeführt wenn du Seite aufrufst, weil sie an keine Bedingung geknüpft ist.

Dann gibt es noch
mysql_query("UPDATE kinder SET platz_erhalten='Nein' WHERE id_kinder=$_POST[editieren]");  
das genau den obigen Code wieder rückgängig macht.

Und dann gibt es noch
	if(isset($_POST['ja']))  
	{
		include('config/inc_config.php');  
		mysql_query("UPDATE kinder SET platz_erhalten='Ja' WHERE id_kinder= ".$_POST['platz_ist_ja_id']);  
	}
Das reagiert zwar auf deinen Abfragedialog, aber egal was der Benutzer da auswählt, weiter unten wird immer auch gleich das erste Code-Schnipsel wieder ausgeführt...

Ich weiß ehrlich grade nicht so ganz, wo ich hier Anfangen soll, dir fehlen noch eine Menge Grundlagen.

Grüße

Max
Stadt-Husum
Stadt-Husum 06.05.2009 um 08:01:58 Uhr
Goto Top
Hi,

wie ich dir bereits mitgeteilt habe, mache ich das zum Hobby und dann wurde sowas von mir verlangt bei der Arbeit.
hmm... Ich brauche wohl damit dringen Hilfe damit!

Wie kann ich dieses Problem lösen?
Das ich eine if-funktion benötige ist mir klar, aber habe keinen plan von der strukturierung dabei.

Gruß Dennis
nxclass
nxclass 06.05.2009 um 12:04:12 Uhr
Goto Top
vielleicht mal einen kleinen Programm-Ablaufplan erstellen ?

  • Wenn das Formular abgesendet wurde UND Wert im Formular 'Ja' ist UND Wert in der DB 'Nein' ist:
Formular mit Daten aus der DB und Bestätigung anzeigen

  • Wenn das Formular abgesendet wurde UND ( Wert im Formular 'Nein' ist ODER das Formular ein 2. mal Bestätigt wurde:
Daten in die DB speichern und Formular mit Daten aus der DB anzeigen

  • Wenn das Formular nicht gesendet wurde:
Formular mit Daten aus der DB anzeigen
dog
dog 09.05.2009 um 11:19:58 Uhr
Goto Top
Ich hab mal angefangen, dass Script für dich etwas umzuschreiben (es ist noch nicht fertig und ich kann nicht sagen, ob es überhaupt geht). Schau es dir mal genau an (bitte Runterscrollen):

<?php
	$jahr_aktuell = date('Y');  
	$allowedCareTypes = array('Regelgruppe','Krippengruppe','Hort');  
	$allowedCareAmounts = array('Halbtags','Ganztags');  
	$dbKeys = array('nachname','vorname','tag_geb','monat_geb','jahr_geb','strasse','hausnummer','plz','stadt','vorwahl','telefon','mobil',  
	                'nachname_erzbe','vorname_erzbe','tag_anmeldung','monat_anmeldung','jahr_anmeldung','gewuenschte_betreuung','betreuungsumfang',  
	                'integrationsmasnahme','haertefall','platz_erhalten','einrichtungsname');  
	
	include('config/inc_config.php');  
	
	if($_SESSION['id_benutzer'] == '') {  
		header("Location: login.php");  
		exit(0);
	}
	
	function qs($input)
	{
		if($input === NULL)
			return 'NULL';  
		if(is_bool($input))
			return intval($input);
		if(is_float($input) || is_int($input))
			return $input;
		if(get_magic_quotes_gpc())
			$input = stripslashes($input);
		return sprintf("'%s'",mysql_real_escape_string($input));  
	}
	
	function mk_update_query($table,$updateArray,$whereArray)
	{
		$updateCombined = array();
		$whereCombined = array();
		
		foreach ($updateArray as $key => $value) {
			$updateCombined = sprintf('`%s` = %s',$key,qs($value));  
		}
		
		foreach ($whereArray as $key => $value) {
			$whereCombined = sprintf('`%s` = %s',$key,qs($value));  
		}
		
		return sprintf('UPDATE %s SET %s WHERE %s',$table,implode(', ',$updateCombined),implode(' AND ',$whereCombined));  
	}
	
	function assign_from_post(&$array,$keys)
	{
		foreach ($keys as $key) {
			$array[$key] = @$_POST[$key];
		}
		
		return true;
	}
	
	function is_dbool($str)
	{
		$str = strtolower($str);
		
		return ($str == "ja" || $str == "nein");  
	}
	
	try {
		
		$kindQry = mysql_query(sprintf('SELECT * FROM kinder WHERE id_kinder = %u',intval($_REQUEST['id_kinder'])));  
	
		if(!is_resource($kindQry))
			throw new Exception("Datenbankfehler bei der Abfrage!");  
		
		if(mysql_num_rows($kindQry) != 1)
			throw new Exception("Dieses Kind konnte nicht gefunden werden");  
		
		$kindData = mysql_fetch_assoc($kindQry);
		$ID       = &$kindData['id_kinder'];  
			
		if(isset($_POST['form_submitted'])) {  
			$newData = array();
			assign_from_post($newData,$dbKeys);
			
			$errors = array();
			
			if(strlen($newData['nachname']) < 2)  
				$errors = "Der eingegebene Nachname ist zu kurz!";  
			
			if(strlen($newData['vorname']) < 2)  
				$errors = "Der eingegebene Vorname ist zu kurz";  
			
			if($newData['tag_geb'] < 1 || $newData['tag_geb'] > 31)  
				$errors = "Geburtstag: Das ist kein gültiger Tag eines Monats!";  
			
			if($newData['monat_geb'] < 1 || $newData['monat_geb'] > 12)  
				$errors = "Geburtstag: Das ist keine gültige Monatszahl!";  
		
			if($newData['jahr_geb'] < ($jahr_aktuell-7) || $newData['jahr_geb'] > $jahr_aktuell)  
				$errors = "Geburtstag: Die Jahresangabe liegt nicht im Rahmen (muss vierstellig sein)";  
			
			if(strlen($newData['strasse']) < 5)  
				$errors = "Der Straßennahme ist zu kurz";  
				
			if(strlen($newData['hausnummer']) < 1)  
				$errors = "Eine Hausnummer muss angegeben werden!";  
				
			if(strlen($newData['plz']) != 5)  
				$errors = "Die angegebene PLZ ist ungültig!";  
			
			if(strlen($newData['stadt']) < 3)  
				$errors = "Die angegebene Stadt ist ungültig";  
				
			if(strlen($newData['vorwahl']) < 3)  
				$errors = "Die Vorwahl ist ungültig";  
				
			// [...]
			
			if(!in_array($newData['gewuenschte_betreuung'], $allowedCareTypes))  
				$errors = "Die ausgewählte Betreuungsmethode gibt es nicht!";  
				
			if(!in_array($newData['betreuungsumfang'], $allowedCareAmounts))  
				$errors = "Den ausgewählten Betreuungsumfang gibt es nicht!";  
				
			if(empty($newData['integrationsmasnahme']))  
				$newData['integrationsmasnahme'] = "Nein";  
				
			if(!is_dbool($newData['integrationsmasnahme']))  
				$errors = "Fehlerhafte Auswahl bei Integrationsmaßnahme!";  
				
			if(empty($newData['haertefall']))  
				$newData['haertefall'] = "Nein";  
				
			if(!is_dbool($newData['haertefall']))  
				$errors = "Fehlerhafte Auswahl bei Härtefall!";  
			
			if(empty($newData['platz_erhalten']))  
				$newData['platz_erhalten'] = "Nein";  
				
			if(!is_dbool($newData['platz_erhalten']))  
				$errors = "Fehlerhafte Auswahl bei Platz erhalten!";  
				
			$query = mysql_query(sprintf('SELECT einrichtungsname FROM einrichtungen WHERE einrichtungsname = %s',qs($newData['einrichtungsname'])));  
			
			if(mysql_num_rows($query) != 1)
				$errors = "Die ausgewählte Einrichtung gibt es nicht!";  
			
			if(empty($errors)) {
				$queryResult = mysql_query(mk_update_query('kinder',$newData,array('id_kinder' => $_POST['id_kinder'])));  
			
				if(!$queryResult)
					throw new Exception("Beim Aktualisieren der Daten ist ein schwerer Fehler aufgetreten!");  
				
				header("Location: x.php");  
				exit(0);
			}
		}
		
	} catch (Exception $e) {
?>
<html>
	<head>
		<title>Programmfehler!</title>
	</head>
	<body>
		<div id="error">  
			<h1><?php echo $e->getMessage(); ?></h1>
		</div>
	</body>
</html>
<?php
		exit(1);
	}
?>
<html>
	<head>
		<title>Meine Website</title>
		<script type="text/javascript" charset="utf-8">  
			function askContinue () {
				var platzErhaltenBox = document.getElementById('platz_erhalten');  
				
				if(platzErhaltenBox.checked) {
					var check = confirm("Wenn Sie jetzt 'Platz erhalten' markieren wird das Kind danach für Sie nicht mehr sichtbar sein.\nWollen Sie wirklich fortfahren?");  
					return check;
				}
			}
		</script>
	</head>
	<body>
<?php	if(!empty($errors)): ?>
		<div id="errors">  
			Bei der Prüfung sind folgende Fehler aufgetreten:
			<ul>
<?php 	foreach($errors as $errorMsg): ?>
				<li><?php echo $errorMsg ?></li>
<?php 	endforeach; ?>
			</ul>
		</div>
<?php endif; ?>
		<form action="" method="post" onsubmit="return askContinue();">  
			<div>
				<table border="0" width="50%">  
					<tr>
						<td>Nachname:</td>
						<td>
							<INPUT type="text" name="nachname" value="<?php echo $kindData['nachname'] ?>" size="" maxlength=""><br>  
						</td>
					</tr>

					<tr>
						<td>Vorname:</td>
						<td>
							<INPUT type="text" name="vorname" value="<?php echo $kindData['vorname'] ?>" size="" maxlength=""><br>  
						</td>
					</tr>

					<TR>
						<TD>Geburtsdatum:</TD>
						<TD>
							<input type="text" name="tag_geb" maxlength="2" size="2" value="<?php echo $kindData['tag_geb'] ?>"> .   
							<input type="text" name="monat_geb" maxlength="4" size="4" value="<?php echo $kindData['monat_geb'] ?>"> .   
							<input type="text" name="jahr_geb" maxlength="4" size="4" value="<?php echo $kindData['jahr_geb'] ?>">  
						</td>
					</tr>

					<tr>
						<td>Strasse und <br>&nbsp;&nbsp;Hausnummer:</td> 
						<td>
							<INPUT type="text" name="strasse" value="<?php echo $kindData['strasse']; ?>" size="10">  
							<INPUT type="text" name="hausnummer" value="<?php echo $kindData['hausnummer']; ?>" size="2">  
						</td>
					</tr>

					<tr>
						<td>*PLZ und Stadt:	</td> 
						<td>
							<INPUT type="text" name="plz" value="<?php echo $kindData['plz'];?>" size="3" maxlength="8">  
							<INPUT type="text" name="stadt" value="<?php echo $kindData['stadt'];?>" size="9">  
						</td>
					</tr>

					<tr>
						<td>*Telefon:</td> 
						<td>
							<INPUT type="text" name="vorwahl" value="<?php echo $kindData['vorwahl'];?>" size="3" maxlength="5"> /  
							<INPUT type="text" name="telefon" value="<?php echo $kindData['telefon'];?>" size="9" maxlength="">  
						</td>
					</tr>

					<tr>
						<td>Mobil:</td> 
						<td>
							<INPUT type="text" name="mobil" value="<?php echo $kindData['mobil'];?>" size="18" maxlength=""><br>  
						</td>
					</tr>

					<tr>
						<td>
							*Name, Vorname:<br>
							(Erziehungsber.)
						</td> 
						<td>
							<INPUT type="text" name="nachname_erzbe" value="<?php echo $kindData['nachname_erzbe'];?>" size="9" maxlength="">,   
							<INPUT type="text" name="vorname_erzbe" value="<?php echo $kindData['vorname_erzbe'];?>" size="9" maxlength="">  
						</td>
					</tr> 

					<TR>
						<TD>*Anmeldedatum:</TD>
						<TD>
							<input type="text" name="tag_anmeldung" maxlength="2" size="2" value="<?php echo $kindData['tag_anmeldung'] ?>"> .   
							<input type="text" name="monat_anmeldung" maxlength="4" size="4" value="<?php echo $kindData['monat_anmeldung'] ?>"> .   
							<input type="text" name="jahr_anmeldung" maxlength="4" size="4" value="<?php echo $kindData['jahr_anmeldung'] ?>">  
						</TD>
					</TR>

					<TR>
						<TD>*Gew&uuml;nschte <br>&nbsp;&nbsp;Betreuung:</TD>
						<TD>
							<SELECT name="gewuenschte_betreuung">  
<?php 
							foreach ($allowedCareTypes as $type) {
								echo '<option value="'.$type.'"';  
								if($type == $kindData['gewuenschte_betreuung'])  
									echo ' selected="selected"';  
								echo '>'.$type.'</option>';  
							}

 ?>
							</SELECT>
						</TD>
					</TR>

					<TR>
						<TD>*Betreuungsumfang:</TD>
						<TD>
							<SELECT name="betreuungsumfang">  
<?php 
							foreach ($allowedCareAmounts as $type) {
								echo '<option value="'.$type.'"';  
								if($type == $kindData['betreuungsumfang'])  
									echo ' selected="selected"';  
								echo '>'.$type.'</option>';  
							}

 ?>
							</SELECT>
						</TD>
					</TR>

					<TR>
						<TD>*I-Ma&szlig;nahme:</TD>
						<td>
							<input type="checkbox" name="integrationsmasnahme" <?php echo (($kindData['integrationsmasnahme'] == 'Ja')? 'checked="checked"' : '') ?> value="Ja">  
							I-Ma&szlig;nahme anwenden
						</td>
					</TR>
					
					<TR>
						<TD>H&auml;rtefall:</TD>
						<td>
							<input type="checkbox" name="haertefall" <?php echo (($kindData['haertefall'] == 'Ja')? 'checked="checked"' : '') ?> value="Ja">  
						</td>
					</TR>

					<tr>
						<td>&nbsp;&nbsp;Platz erhalten:</td>
						<TD>
							<input type="checkbox" name="platz_erhalten" <?php echo (($kindData['platz_erhalten'] == 'Ja')? 'checked="checked"' : '') ?> value="Ja" id="platz_erhalten">  
						</td>
					</tr>

					<tr>
						<td>Name der Einrichtung:</td>
						<td>
							<select name="einrichtungsname">  
<?php
								$accomodationQuery = mysql_query('SELECT einrichtungsname FROM einrichtungen ORDER BY einrichtungsname ASC');  
								while ($row = mysql_fetch_assoc($accomodationQuery)) {
									$aName = $row['einrichtungsname'];  
									echo '<option value="'.$aName.'"';  
									if($aName == $kindData['einrichtungsname'])  
										echo ' selected="selected"';  
									echo '>'.$aName.'</option>';  
								}

?>
							</select>
						</td>
					</tr>
					
					<tr>
						<td colspan="2">  
							<input type="hidden" name="id_kinder" value="<?php echo $ID; ?>" />  
							<INPUT type="submit" name="form_submitted" value="senden">  
						</td>
					</tr>
				</table>
			</div>
		</form>
	</body>
</html>


<?php
	$jahr_aktuell = date('Y');  
	$allowedCareTypes = array('Regelgruppe','Krippengruppe','Hort');  
	$allowedCareAmounts = array('Halbtags','Ganztags');  
	$dbKeys = array('nachname','vorname','tag_geb','monat_geb','jahr_geb','strasse','hausnummer','plz','stadt','vorwahl','telefon','mobil',  
	                'nachname_erzbe','vorname_erzbe','tag_anmeldung','monat_anmeldung','jahr_anmeldung','gewuenschte_betreuung','betreuungsumfang',  
	                'integrationsmasnahme','haertefall','platz_erhalten','einrichtungsname');  

Bestimmte Datenfelder erlauben auch nur bestimmte Werte. Das notieren wir uns gleich am Anfang, wir werden es später noch brauchen.
Übrigens verwende ich hier einfache Anführungszeichen, weil PHP damit leichter arbeiten kann. Doppelte sollte man NUR verwenden, wenn sich im String Variablen oder Escape-Sequenzen befinden.

	include('config/inc_config.php');  

DIe Konfiguration sollte unabhängig von irgendwelchen if-Bedingungen geladen werden.

	if($_SESSION['id_benutzer'] == '') {  
		header("Location: login.php");  
		exit(0);
	}

Wenn der Benutzer nicht angemeldet ist, wird er auf die Seite login.php weitergeleitet und das Script beendet (wichtig!).

	function qs($input)
	{
		if($input === NULL)
			return 'NULL';  
		if(is_bool($input))
			return intval($input);
		if(is_float($input) || is_int($input))
			return $input;
		if(get_magic_quotes_gpc())
			$input = stripslashes($input);
		return sprintf("'%s'",mysql_real_escape_string($input));  
	}
Die Funktion escapt einen Wert für die Datenbank. Siehe Wikipedia-Artikel zum Thema SQL-Injection!

	function mk_update_query($table,$updateArray,$whereArray)
	{
		$updateCombined = array();
		$whereCombined = array();
		
		foreach ($updateArray as $key => $value) {
			$updateCombined = sprintf('`%s` = %s',$key,qs($value));  
		}
		
		foreach ($whereArray as $key => $value) {
			$whereCombined = sprintf('`%s` = %s',$key,qs($value));  
		}
		
		return sprintf('UPDATE %s SET %s WHERE %s',$table,implode(', ',$updateCombined),implode(' AND ',$whereCombined));  
	}
Die Funktion erzeugt einen UPDATE-Query aus einem Tabellennamen, deinem assoz. Array mit den Werten und einem assoz. WHERE-Array. Dabei werden die Eingaben auch gleich noch escapt!

	function assign_from_post(&$array,$keys)
	{
		foreach ($keys as $key) {
			$array[$key] = @$_POST[$key];
		}
		
		return true;
	}
Die Funktion kopiert einfach nur bestimmte Werte aus dem $_POST-Array in einen angegebenen Array.
Wozu zeige ich später noch.

	function is_dbool($str)
	{
		$str = strtolower($str);
		
		return ($str == "ja" || $str == "nein");  
	}

Die Funktion ist dafür da, um deine Ja/Nein-Felder auf Korrektheit zu Überprüfen.

	try {
Zum Thema try/catch (oder: Exceptions) lies dir am Besten mal das PHP-Handbuch durch: http://de3.php.net/manual/de/language.exceptions.php
Grob gesagt kannst du in einem try-Block irgendeinen Code abarbeiten, aber wenn etwas passiert, was dir nicht passt kannst du den ganzen Code an dieser Stelle sofort abbrechen und PHP springt zum catch-Block.
Das ganze ist um einige eleganter als endlose if-Stapel.

		if(!is_resource($kindQry))
			throw new Exception("Datenbankfehler bei der Abfrage!");  

Hier siehst du so ein Beispiel:
Wenn das ausgewählte Kind in der Datenbank nicht gefunden wird, wird sofort mit jeder weiteren Ausführung abgebrochen und zum catch-Block gesprungen.
Es macht ja auch keinen Sinn weiterzuarbeiten, wenn es das Kind gar nicht gibt.

		if(isset($_POST['form_submitted'])) {  

Der Code wird ausgeführt, wenn das Formular abgesendet wurde.
Das erkläre ich später, weil es logisch auch weiter hinten steht.

	} catch (Exception $e) {
?>
<html>
	<head>
		<title>Programmfehler!</title>
	</head>
	<body>
		<div id="error">  
			<h1><?php echo $e->getMessage(); ?></h1>
		</div>
	</body>
</html>
<?php
		exit(1);
	}

Hier haben wir den catch-Block, der zum try-Block gehört.
catch-Blöcke werden immer NUR dann ausgeführt, wenn in einem try-Block ein Fehler aufgetreten ist.
Hier wird die Fehlermeldung noch einmal angezeigt und das Programm dann beendet, weil ein Weitermachen sinnlos wäre.

		<script type="text/javascript" charset="utf-8">  
			function askContinue () {
				var platzErhaltenBox = document.getElementById('platz_erhalten');  
				
				if(platzErhaltenBox.checked) {
					var check = confirm("Wenn Sie jetzt 'Platz erhalten' markieren wird das Kind danach für Sie nicht mehr sichtbar sein.\nWollen Sie wirklich fortfahren?");  
					return check;
				}
			}
		</script>

Deine Sicherheitsabfrage habe ich mal als Javascript gelöst, weil es eine Menge Arbeit im Vergleich zu PHP spart.
Einziger Nachteil: Hat ein Benutzer Javascript deaktiviert sieht er sie nicht!

<?php	if(!empty($errors)): ?>
		<div id="errors">  
			Bei der Prüfung sind folgende Fehler aufgetreten:
			<ul>
<?php 	foreach($errors as $errorMsg): ?>
				<li><?php echo $errorMsg ?></li>
<?php 	endforeach; ?>
			</ul>
		</div>
<?php endif; ?>

Hier werden Fehler angezeigt, die beim Verarbeiten des Formulars auftraten.
Dazu später mehr.

		<form action="" method="post" onsubmit="return askContinue();">  
Die vorher angelegte Javascript-Funktion wird hier mit dem Formular und der onSubmit-Aktion verbunden.
D.h.: Schickt jemand das Formular ab, kommt ggf. die Abfrage.

							<SELECT name="gewuenschte_betreuung">  
<?php 
							foreach ($allowedCareTypes as $type) {
								echo '<option value="'.$type.'"';  
								if($type == $kindData['gewuenschte_betreuung'])  
									echo ' selected="selected"';  
								echo '>'.$type.'</option>';  
							}

 ?>
							</SELECT>
Die Betreuungsmöglichkeiten haben wir ja oben bereits als Array festgelegt.
Das können wir jetzt einfach über PHP ausgeben und gleichzeitig können wir noch prüfen, ob eins der Felder schon vorausgewählt ist.

<input type="checkbox" name="integrationsmasnahme" <?php echo (($kindData['integrationsmasnahme'] == 'Ja')? 'checked="checked"' : '') ?> value="Ja">  
Deine Ja/Nein-Radiogruppen hab ich mal durch Checkboxen ersetzt, weil es hier mehr Sinn macht.
Der PHP-Code überprüft, ob eine Checkbox vorausgewählt ist oder nicht.

Kommen wir jetzt zum Teil nach dem Absenden des Formulars:

			$newData = array();
			assign_from_post($newData,$dbKeys);
Hier holen wir uns aus $_POST die Daten raus, die uns wirklich interessieren.
Warum zeigt sich später noch.

			$errors = array();
Es ist immer eine gute Idee Variablen vor ihrer Benutzung zu initialisieren.

			if($newData['tag_geb'] < 1 || $newData['tag_geb'] > 31)  
				$errors = "Geburtstag: Das ist kein gültiger Tag eines Monats!";  

1. Grundregel der Webapplikationprogammierung: Vertraue nichts, was vom Benutzer kommt.
Darum: Immer alles auf Korrektheit überprüfen, sonst bekommst du irgendwann ein Problem.

// [...]

Dein Teil hab ich mal dir überlassen.

			if(empty($newData['integrationsmasnahme']))  
				$newData['integrationsmasnahme'] = "Nein";  
				
			if(!is_dbool($newData['integrationsmasnahme']))  
				$errors = "Fehlerhafte Auswahl bei Integrationsmaßnahme!";  

Hier stellen wir zuerst sicher, dass eine nicht ausgewählte Checkbox den Wert "Nein" bekommt und dann prüfen wir, ob dort auch tatsächlich nur Ja oder Nein steht.
Ja, auch sowas lässt sich leicht manipulieren!

			$query = mysql_query(sprintf('SELECT einrichtungsname FROM einrichtungen WHERE einrichtungsname = %s',qs($newData['einrichtungsname'])));  
			
			if(mysql_num_rows($query) != 1)
				$errors = "Die ausgewählte Einrichtung gibt es nicht!";  

Hier überprüfen wir noch mal ob es die angegebene Einrichtung wirklich gibt (also genau eine Zeile bei der Abfrage)

			if(empty($errors)) {

Jeder Fehler wurde als Eintrag im Array $errors gespeichert.
Nur wenn der leer ist machen wir weiter.

$queryResult = mysql_query(mk_update_query('kinder',$newData,array('id_kinder' => $_POST['id_kinder'])));  

Hier versteckt sich der ganze UPDATE-Query.
Darum war es auch wichtig, dass wir aus POST nur die Felder holen, die es auch wirklich als Datenbankspalten gibt.

				header("Location: x.php");  
				exit(0);

Wenn alles geklappt hat leiten wir den Benutzer weiter und beenden das Script.

Grüße

Max