Cyperfriend
Der ohne Avatar
- Registriert
- 14 Juli 2013
- Beiträge
- 1.123
Ich habe mir eine tolle Prüf-Struktur aufgebaut und stolper nun über die Verschaltung.
Der Code ist folgender
[src=php]# Eintrag bearbeiten
if(isset($_POST['b_speichern'])) {
# Variablen in einen reinen String umwandeln.
$_POST['benutzername'] = (string)$_POST['benutzername'];
$_POST['email'] = (string)$_POST['email'];
$_POST['rang'] = (string)$_POST['rang'];
# Prüfen, ob Benutzername und Rang ausgefüllt wurden
if($_POST['benutzername'] && $_POST['rang']) {
# Datenbankverbindung herstellen
$db_connect = db_connect();
# Prüfen, ob der Benutzername im Eingabeformular geändet wurde
if($_POST['benutzername'] != $_POST['org_benutzername']) {
# Falls ein Eintrag gefunden wurde, Vorgang abbrechen
$db_read = "select * from db_benutzer where benutzername='".$_POST['benutzername']."'";
$db_result = mysql_query($db_read, $db_connect) or die (mysql_error());
if(mysql_num_rows($db_result) >= 1){
# Code 21 = "Diesen Benutzer gibt es bereits"
$_SESSION['code'] = 21;
header("Location: http://".$_SERVER['HTTP_HOST']."/neu/inventory/benutzer.html");
}
}
else {
[Änderungen in die Datenbank schreiben]
[/src] Das Problem besteht darin, dass ich bei dieser Konstellation alles ändern kann, aber den Benutzernamen nicht. Es wird einfach verworfen.
Baue ich das alles um und mache es so:
[src=php]# Eintrag bearbeiten
if(isset($_POST['b_speichern'])) {
# Variablen in einen reinen String umwandeln.
$_POST['benutzername'] = (string)$_POST['benutzername'];
$_POST['email'] = (string)$_POST['email'];
$_POST['rang'] = (string)$_POST['rang'];
# Prüfen, ob Benutzername und Rang ausgefüllt wurden
if($_POST['benutzername'] && $_POST['rang']) {
# Datenbankverbindung herstellen
$db_connect = db_connect();
# Prüfen, ob der Benutzername im Eingabeformular geändet wurde
if($_POST['benutzername'] != $_POST['org_benutzername']) {
# Falls ein Eintrag gefunden wurde, Vorgang abbrechen
$db_read = "select * from db_benutzer where benutzername='".$_POST['benutzername']."'";
$db_result = mysql_query($db_read, $db_connect) or die (mysql_error());
if(mysql_num_rows($db_result) >= 1){
# Code 21 = "Diesen Benutzer gibt es bereits"
$_SESSION['code'] = 21;
header("Location: http://".$_SERVER['HTTP_HOST']."/neu/inventory/benutzer.html");
}
else {
[Änderungen in die Datenbank schreiben]
[/src] kann ich den Benutzername ändern und er wird auch geprüft, aber alle anderen Änderungen werden nur gespeichert, wenn gleichzeitig auch der Benutzername geändert wird. Bleibt der Benutzername gleich werden alle Änderungen verworfen.
Irgendwie eine ziemlich doofe Situation und ich weis nicht weiter. Hilft jemand weiter?
Der Code ist folgender
[src=php]# Eintrag bearbeiten
if(isset($_POST['b_speichern'])) {
# Variablen in einen reinen String umwandeln.
$_POST['benutzername'] = (string)$_POST['benutzername'];
$_POST['email'] = (string)$_POST['email'];
$_POST['rang'] = (string)$_POST['rang'];
# Prüfen, ob Benutzername und Rang ausgefüllt wurden
if($_POST['benutzername'] && $_POST['rang']) {
# Datenbankverbindung herstellen
$db_connect = db_connect();
# Prüfen, ob der Benutzername im Eingabeformular geändet wurde
if($_POST['benutzername'] != $_POST['org_benutzername']) {
# Falls ein Eintrag gefunden wurde, Vorgang abbrechen
$db_read = "select * from db_benutzer where benutzername='".$_POST['benutzername']."'";
$db_result = mysql_query($db_read, $db_connect) or die (mysql_error());
if(mysql_num_rows($db_result) >= 1){
# Code 21 = "Diesen Benutzer gibt es bereits"
$_SESSION['code'] = 21;
header("Location: http://".$_SERVER['HTTP_HOST']."/neu/inventory/benutzer.html");
}
}
else {
[Änderungen in die Datenbank schreiben]
[/src] Das Problem besteht darin, dass ich bei dieser Konstellation alles ändern kann, aber den Benutzernamen nicht. Es wird einfach verworfen.
Baue ich das alles um und mache es so:
[src=php]# Eintrag bearbeiten
if(isset($_POST['b_speichern'])) {
# Variablen in einen reinen String umwandeln.
$_POST['benutzername'] = (string)$_POST['benutzername'];
$_POST['email'] = (string)$_POST['email'];
$_POST['rang'] = (string)$_POST['rang'];
# Prüfen, ob Benutzername und Rang ausgefüllt wurden
if($_POST['benutzername'] && $_POST['rang']) {
# Datenbankverbindung herstellen
$db_connect = db_connect();
# Prüfen, ob der Benutzername im Eingabeformular geändet wurde
if($_POST['benutzername'] != $_POST['org_benutzername']) {
# Falls ein Eintrag gefunden wurde, Vorgang abbrechen
$db_read = "select * from db_benutzer where benutzername='".$_POST['benutzername']."'";
$db_result = mysql_query($db_read, $db_connect) or die (mysql_error());
if(mysql_num_rows($db_result) >= 1){
# Code 21 = "Diesen Benutzer gibt es bereits"
$_SESSION['code'] = 21;
header("Location: http://".$_SERVER['HTTP_HOST']."/neu/inventory/benutzer.html");
}
else {
[Änderungen in die Datenbank schreiben]
[/src] kann ich den Benutzername ändern und er wird auch geprüft, aber alle anderen Änderungen werden nur gespeichert, wenn gleichzeitig auch der Benutzername geändert wird. Bleibt der Benutzername gleich werden alle Änderungen verworfen.
Irgendwie eine ziemlich doofe Situation und ich weis nicht weiter. Hilft jemand weiter?
Zuletzt bearbeitet:
Gibt der User an, dass der Benutzername geändert werden soll und der neue Name ist schon belegt, wird abgebrochen, ansonsten geht es eben weiter. Dass es nicht weiter geht, wenn der Benutzername nicht geändert wird, hast du mit dem else explizit eingebaut.