Einfügen in Datenbank
Hi,
ich hab ein neues Problem und zwar fügt er in die datenbank immer nach dem aktualisieren neue Datensätze obwohl er das net soll.
Im Quellcode hab ich alles nähere beschrieben und auch den fehler erklärt hoffentlich kann mir einer Helfen.
MfG
Sapzero
ich hab ein neues Problem und zwar fügt er in die datenbank immer nach dem aktualisieren neue Datensätze obwohl er das net soll.
Im Quellcode hab ich alles nähere beschrieben und auch den fehler erklärt hoffentlich kann mir einer Helfen.
// User Tabelle anlegen
mysql_query("CREATE TABLE IF NOT EXISTS tbluser (
UserID INT(1) NOT NULL auto_increment,
Nname varchar(30) character set latin1 collate latin1_general_ci NOT NULL,
Vname varchar(20) character set latin1 collate latin1_general_ci NOT NULL,
Passwort char(32),
Username char(7),
PRIMARY KEY (UserID))");
//Erfolg Tabelle anlegen in der gespeichert werden soll, wenn die User Tabelle GEUPDATED wurde
mysql_query("CREATE TABLE IF NOT EXISTS tblerfolg (
ErfolgID INT(1) NOT NULL,
Erfolg INT(1),
PRIMARY KEY (ErfolgID))");
// Hier wird in die Tabelle Erfolg bei der Spalte Erfolg 0 eingetragen, weil amanfang noch nichts GEUPDATED wurde und somit kein ERFOLG stattfand
mysql_query("INSERT INTO tblerfolg VALUES(1,0)");
// Hier wird geguckt, ob in der Tabelle erfolg eine 0 für nicht GEUPDATED steht oder eine 1 für GEUPDATED und anschließend der Wert in die Variable test gespeichert.
$test = 0;
$erfolggucken = mysql_query ("SELECT * FROM tblerfolg");
//$test = mysql_fetch_object($erfolggucken);
while($test = mysql_fetch_object($erfolggucken))
{
echo $test->Erfolg."<br />";
}
//Hier wird geguckt, ob die variable test auf 0 steht für noch nicht GEUPDATED. Wenn sie auf 1 ist soll sie es nicht machen und wenn es auf 0 steht sol es das nachführende code ausführen.
// --->Hier ist auch der Fehler ich weis net wie ich das beheben kann. Obohl in der test variable 1 steht nach dem ersten ausführen wir trotzdem das nachfolgende ausgeführt.WIESO????
if($test->Erfolg == 0 )
{
//Hier wird ein user in die Tabelle user aufgenommen
mysql_query("INSERT INTO tbluser (Nname, Vname) VALUES('Hans', 'Mustermann')");
//Hier wird nachdem in die Tabelle user etwas eingefügt wurde, die tabelle erfolg GEUPDATED damit sie beim nächsten mal nicht hier wieder rein kommt, weil der INSERT befehl schon ausgeführt wurde.
mysql_query("UPDATE tblerfolg SET Erfolg = 1");
}
//Hier wird der Username für den User festgelegt, der aus den ersten 3 Buchstaben des Vor und -Nachnamens besteht
//Funktioniert ohne Probleme jetzt.
$sql = "SELECT UserID, concat(left(Nname,3),left(Vname,3)) AS Username FROM tbluser WHERE Username is NULL;";
$result = mysql_query($sql) OR die ("Fehler bei der SQL Abfrage:<br/ >" . mysql_error());
while($row = mysql_fetch_object($result))
{
$updateSQL = "UPDATE tbluser SET Username='$row->Username', Passwort = 1234 WHERE UserID = $row->UserID";
if(mysql_query($updateSQL))
echo " Success: UserID: $row->UserID | Username: $row->Username <br />";
else
echo "Fehler bei UserID: $row->UserID | Username: $row->Username <br />";
}
MfG
Sapzero
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 109517
Url: https://administrator.de/contentid/109517
Ausgedruckt am: 14.11.2024 um 09:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo!
In Java ist es so, dass Variablen, die innerhalb eines Blockes (z.B. einer while-Schleife) definiert wurden auch nur dort gelten.
Die Lösung ist einfach:
Die Variable test einfach außerhalb der Schleife definieren und ihr dann in der Schleife einen Wert zuweisen.
Zumindest in Java ist die Variable, und damit hier vielleicht ihr Wert, zugänglich.
Vielleicht hilfts.
In Java ist es so, dass Variablen, die innerhalb eines Blockes (z.B. einer while-Schleife) definiert wurden auch nur dort gelten.
Die Lösung ist einfach:
Die Variable test einfach außerhalb der Schleife definieren und ihr dann in der Schleife einen Wert zuweisen.
Zumindest in Java ist die Variable, und damit hier vielleicht ihr Wert, zugänglich.
Vielleicht hilfts.
Moin Sapzero,
Euch Entwicklern kann man/frau es aber auch nicht Recht machen - der Schnipsel macht doch genau, was Du ihm gesagt hast....
Du hast gesagt:
Wenn aber $test gar kein Objekt ist (sondern nur ein 0815-FALSE-Billichwert),...
> was bitteschön soll denn "echo $test->Erfolg;" anzeigen, um Deinen Erwartungen gerecht zu werden?
Also ich als Code hätte genauso reagiert wie von Dir beschrieben....
P.S.
Speichere/kopiere den Wert "$test->Erfolg" des Datensatzes, den Du hinterher noch brauchst, in einer Variablen (vom "richtigen" Typ),
solange das Objekt $test noch existiert. Also eine Zeile unter der Zeile, in der Du jetzt den Wert "$test->Erfolg" raus-echoest.
Grüße
Biber
Euch Entwicklern kann man/frau es aber auch nicht Recht machen - der Schnipsel macht doch genau, was Du ihm gesagt hast....
Du hast gesagt:
"Hey, solange mysql_fetch_object() tatsächlich ein Objekt zurückliefert (nämlich einen Datensatz),
solange mach irgendwelche Dönekens mit dem Datensatz inner while-Schleife.
Wenn mysql_fetch_object() KEINEN Datensatz (und somit kein Objekt) zurückliefert, sondern ein flapsiges FALSE,
dann brauchst Du ohne Objekt in der Schleife gar nicht erst was versuchen.
Kann ja eh nix werden."
solange mach irgendwelche Dönekens mit dem Datensatz inner while-Schleife.
Wenn mysql_fetch_object() KEINEN Datensatz (und somit kein Objekt) zurückliefert, sondern ein flapsiges FALSE,
dann brauchst Du ohne Objekt in der Schleife gar nicht erst was versuchen.
Kann ja eh nix werden."
Wenn aber $test gar kein Objekt ist (sondern nur ein 0815-FALSE-Billichwert),...
> was bitteschön soll denn "echo $test->Erfolg;" anzeigen, um Deinen Erwartungen gerecht zu werden?
Also ich als Code hätte genauso reagiert wie von Dir beschrieben....
P.S.
Kann mir einer sagen wie ich den Wert, den ich noch in der schleife habe weiter ausserhalb der Schleife nenutzen kann??
Jepp, klar.Speichere/kopiere den Wert "$test->Erfolg" des Datensatzes, den Du hinterher noch brauchst, in einer Variablen (vom "richtigen" Typ),
solange das Objekt $test noch existiert. Also eine Zeile unter der Zeile, in der Du jetzt den Wert "$test->Erfolg" raus-echoest.
Grüße
Biber