Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » Problem mit MySQL und Duplicate entry Antworten
Problem mit MySQL und Duplicate entry

tschecutto
Pixelschubser


Beiträge: 6


Hi,

Seit zwei Tagen hält mich jetzt schon ein für mich unverständliches Problem auf:
Ich habe mir ein relativ einfaches User Management System gebastelt, die Informationen über die Benutzer werden in einer MySQL DB gespeichert. Die Mitglieder meiner Seite können sich einloggen und selbst ihr "Mitglieds-Profil" verändern und ich als Admin User kann von allen Mitgliedern die Profile verändern. Einige Infos eines eingeloggten Mitglieds werden in einer Session gespeichert.
Eigentlich klappt das "updaten" der Profile gut, ausser in einem bestimmten Fall: Ich kann, wenn ich als Admin eingeloggt bin, die Profile der Mitglieder nicht mehr verändern, meins (also das Profil des AdminUsers) aber schon noch. Als Fehlermeldung kommt folgendes: Duplicate entry 'tschecutto' for key 3.
Wenn ich aber das session_start am Anfang der Profil-Update-Seite entferne, dann funktioniert das updaten der Mitglieder Infos wieder perfekt, ebenso wenn ich in nicht eingeloggtem Zustand Mitglieder Profile bearbeite.

Das ist die Profil-Update-Seite; die Variable $uid durch einen Link übergeben; die changeUserProfile_Admin Funktion beinhaltet im Wesentlichen ein Formular, in dem die aktuellen Infos aus der DB angezeigt werden und nun verändert werden können.
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44:
include "functions.php";
connectToDB();
session_start();
if (loggedIn()) {
  
  if ($_SESSION['level'] == 1) {
    
        if ($update == 1) {
              $uid = $_SESSION['id'];
              updateUserProfile ($uid);
		      }
        else {
              $uid = $_SESSION['id'];
              echo ("<tr><td>");
              changeUserProfile_User ($uid);
              echo ("</tr></td>");
              }
  }
  elseif ($_SESSION['level'] == 4) {
  
        if ($update == 1) {
		      $uid = $_GET['uid'];
              updateUserProfile ($uid);
		      }
		elseif ($del == 1) {
		      $uid = $_GET['uid'];
		      deleteUser ($uid);
			 }
        else {
              $uid = $_GET['uid'];
			  echo ("<tr><td>");
              changeUserProfile_Admin ($uid);
              echo ("</tr></td>");
              }
  }
  else {echo "fehler";}
}

else {
  print <<< END
  <p>Du bist nicht eingeloggt, bitte erneut <a href="login.php">anmelden</a>!</p>
END;
}


Das ist die die Profil-Update Funktion, die von der UpdateSeite aufgerufen wird:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12:
function updateUserProfile ($uid) {
global $TABLES, $username, $vorname, $nachname, $email, $homepage, $icon, $level, $kommentar;
  $query = "UPDATE " . $TABLES['user'] . " SET UserName='$username', Vorname='$vorname', Nachname='$nachname', eMail='$email', Homepage='$homepage', Icon='$icon', Level='$level', Kommentar='$kommentar' WHERE ID='$uid'";
  $result = mysql_query($query);
  $msg = "Änderungen wurden erfolgreich durchgeführt!"; 
  if ($result) {
	header ("Location: test.php?msg=$msg");
	}
  echo (mysql_error());
}


Das Problem muss meiner Meinung nach mit den Sessions zu tun haben, weil ohne die funktioniert ja alles wie gewollt. Vielleicht hat ja jemand von euch ne Idee, warum immer die Fehlermeldung erscheint.

Diese Nachricht wurde geändert von: tschecutto
  Profil   Editieren   Zitieren
 

Antworten
Nach oben