WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » Problem mit MySQL und Duplicate entry » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

Die letzten 5 Postings in diesem Thema » Alle anzeigen
von tschecutto
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.

Nach oben