If Konstrukt vereinfachen

Steffen Giers

Erfahrenes Mitglied
Servus,

Ich arbeite im augenbilck an einem größerem Projekt mit. Das allerdings nur um mich weiter mit PHP zu beschäftigen und zu lernen.

Zur Zeit wird durch mich ein Userkontrollzentrum erstellt. Ähnlich wie hier im Forum. Soweit so gut. Eigentlich funktioniert alles wie es soll. Es geht vielmehr um eine Vereinfachung des Codes.

Der User kann seine Persönlichen Daten ändern wie er möchte und wie gesagt funktioniert das auch alles. Ich habe mir überlegt folgendes If Konstrukt durch eine while schleife zu lösen. Ich denke das bietet isch doch an oder? Nur sind Schleifen nicht unbedingt das was ich schon perfekt behersche...

Also hier der Code...
PHP:
if (isset($PersDatChge)) {
 
 	if ($_REQUEST['vorname'] != $row['vorname']) {
 		$sql = new SQLq("UPDATE `{pre}users`
 			 	 SET vorname ='" .$_REQUEST['vorname']. "'
 			 	 WHERE id ='". $row['id'] ."'");
 		$sql->Close();
 	}
 		
 	if ($_REQUEST['nachname'] != $row['nachname']) {
 		$sql = new SQLq("UPDATE `{pre}users`
 			 	 SET nachname ='" .$_REQUEST['nachname']. "'
 			 	 WHERE id ='". $row['id'] ."'");
 		$sql->Close();
 	}
 		
 	if ($_REQUEST['strasse_hnr'] != $row['strasse_hnr']) {
 			$sql = new SQLq("UPDATE `{pre}users`
 			 		 SET strasse_hnr ='" .$_REQUEST['strasse_hnr']. "'
 	 		 		 WHERE id ='". $row['id'] ."'");
 			$sql->Close();
 	}
 		
 	if ($_REQUEST['plz'] != $row['plz']) {
 		$sql = new SQLq("UPDATE `{pre}users`
 			 	 SET plz ='" .$_REQUEST['plz']. "'
 			 	 WHERE id ='". $row['id'] ."'");
 		$sql->Close();
 	}
 	
 	if ($_REQUEST['ort'] != $row['ort']) {
 		$sql = new SQLq("UPDATE `{pre}users`
 			 	 SET ort ='" .$_REQUEST['ort']. "'
 			 	 WHERE id ='". $row['id'] ."'");
 		$sql->Close();
 	}
 	
 	if ($_REQUEST['telefonnr'] != $row['telefonnr']) {
 		$sql = new SQLq("UPDATE `{pre}users`
 			 	 SET telefonnr ='" .$_REQUEST['telefonnr']. "'
 			 	 WHERE id ='". $row['id'] ."'");
 		$sql->Close();
 	}
 	
 	if ($_REQUEST['mobile'] != $row['mobile']) {
 		$sql = new SQLq("UPDATE `{pre}users`
 			 	 SET mobile ='" .$_REQUEST['mobile']. "'
 			 	 WHERE id ='". $row['id'] ."'");
 		$sql->Close();
 	}
 	
 	if ($_REQUEST['geburtsdatum '] != $row['geburtsdatum ']) {
 		$sql = new SQLq("UPDATE `{pre}users`
 			 	 SET geburtsdatum ='" .$_REQUEST['geburtsdatum ']. "'
 	 		 	 WHERE id ='". $row['id'] ."'");
 		$sql->Close();
 
 	}
 	header("location: http://".$_SERVER['SERVER_NAME']."/usercenter.php");	
 }

Vielleicht hat ja wer ne Idee...? Bye Steffen
 
Seh ich das richtig, dass die Daten von einem Formular kommen? Wozu machst du dir für
jedes Feld extra viel Arbeit. Und dass das mit der Klasse gut für die Geschwindigkeit ist
zweifel ich auch mal an.

Mach doch einfach alles in einem Ritt:
PHP:
$sql = "update `table` set `field1` = '".$_POST['field1']."', `field2` = '".$_POST['field2']."', `fieldn` = '".$_POST['fieldn']."' where `id` = '".$_POST['id']."'";

# ...

echo '
<input type="text" name="field1" value="'.$Row['field1'].'"/>
<input type="text" name="field2" value="'.$Row['field2'].'"/>
<input type="text" name="fieldn" value="'.$Row['fieldn'].'"/>';
 
Ja das siehst du richtig. Die Daten sind ja schon vorhanden. Es werden lediglich die bei der Registrierung eingebenen Daten angezeigt. Diese sollen und können im Benutzkontrollzentrum durch den User geändert werden.

Ich will eigentlich nur die Änderungen speichern. Jetzt macht er das ja eigentlich. Wenn die neuen Daten nicht denen in der Datenbank entsprechen soll er Updaten. Wenn Sie gleich sind braucht er ja nix zu tun. Mir gehts nur darum, dass der Quelltext kürzer und übersichtlicher wird.

Zur Klasse muss ich sagen das der "Projektleiter" möchte das ich es so mache. Ob es was mit der geschwindigkeitb zu tun weiß ich nicht. Ich glaube aber das es bei diesem Script nicht wirklich ins Gewicht fällt.
 
Zurück