Hallo,
also ich hab hier ein Problem, weiß nicht ob das ein Bug ist, was ich und kein anderer der mir geholfen hat versteht!!!!
Also, ich habe Einträge in einer Datenbank. Anhand der Spalte Position möchte ich die hoch und runter verschieben!
Neben dem Eintrag ist ein Pfeil nach oben und wenn man auf den klickt, wird die Url mit der ID des Eintrages aufgerufen. Die ID wird als Variable [COLOR=red]$up[/COLOR] übergeben.
Das Problem ist jetzt das, das die 2. Update-Anweisung irgendwas kaputt macht. Den irgendwie werden die Variablen $newvalue & $oldvalue um 1 subtrahiert. Also springt der Eintrag um 2 Positionen nach oben. Keiner weis warum. Denn wenn ich die 2. Update-Anweisung mal ausklammer bekomm ich bei meine Echo-Ausgaben die richtigen Werte ausgegeben.
[COLOR=red]Mein Idee voran es liegen könnte???[/COLOR]
Ich werde nicht das Gefühl los, das PHP die Select-Abfrage
und die 2. Update-Anweisung
nicht getrennt ausführt sondern, die zusammen fasst und so ausführt.
Dabei scheint er aber die Update-Anweisung vor der Select-Abfrage auszuführen!!!
Weiß jemand wie ich das Problem umgehen kann??????????????
Gibt es vielleicht eine Möglichkeit den Cache der SQL zu leeren vor der 2. Update-Anweisung????
Weiß jemand wo das Problem liegt!
Wäre für Hilfe sehr dankbar!!!
Danke!
also ich hab hier ein Problem, weiß nicht ob das ein Bug ist, was ich und kein anderer der mir geholfen hat versteht!!!!
Also, ich habe Einträge in einer Datenbank. Anhand der Spalte Position möchte ich die hoch und runter verschieben!
Neben dem Eintrag ist ein Pfeil nach oben und wenn man auf den klickt, wird die Url mit der ID des Eintrages aufgerufen. Die ID wird als Variable [COLOR=red]$up[/COLOR] übergeben.
PHP-Code:
if (isset($up)):
# Daten des Eintrages holen, der nach oben gesetzt werden soll
$strSQLcmd='SELECT * FROM bilder WHERE id='.$up;
$result=mysql_query($strSQLcmd, $db_connect);
$data=mysql_fetch_array($result);
//print_r($data);
# Ist die Position größer als 1 kann der Eintrag nach oben verschoben werden
if ($data["position"]>1):
# Der alte Positionswert des gewählten Eintrages
$oldvalue=$data["position"];
echo "Oldvalue: ".$oldvalue."<br>";
# Der neue Positionswert (-1) des gewählten Eintrages
$newvalue=$data["position"]-1;
echo "Newvalue: ".$newvalue."<br>";
# Hier wird der Eintrag der die neue Position hat, auf die alte Position gesetzt.
# Also Vorheriger Eintrag wird nach nach unten (+1) verschoben
$strSQLcmd1='UPDATE bilder SET position='.$oldvalue.' WHERE position='.$newvalue;
echo $strSQLcmd1."<br>";
if (!$result1=mysql_query($strSQLcmd1)) echo mysql_error();
#!!! Bei Ausführung dieser Abfrage scheint der eigentliche Fehler zu enstehen !!!#
# Hier bekommt der gewählt Eintrag, den neuen Wert (-1) an hand seiner ID zugewiesen
$strSQLcmd2='UPDATE bilder SET position='.$newvalue.' WHERE id='.$up;
echo $strSQLcmd2."<br>";
if (!$result=mysql_query($strSQLcmd2)) echo mysql_error();
endif;
Das Problem ist jetzt das, das die 2. Update-Anweisung irgendwas kaputt macht. Den irgendwie werden die Variablen $newvalue & $oldvalue um 1 subtrahiert. Also springt der Eintrag um 2 Positionen nach oben. Keiner weis warum. Denn wenn ich die 2. Update-Anweisung mal ausklammer bekomm ich bei meine Echo-Ausgaben die richtigen Werte ausgegeben.
[COLOR=red]Mein Idee voran es liegen könnte???[/COLOR]
Ich werde nicht das Gefühl los, das PHP die Select-Abfrage
PHP-Code:
$strSQLcmd='SELECT * FROM bilder WHERE id='.$up;
$result=mysql_query($strSQLcmd, $db_connect);
$data=mysql_fetch_array($result);
PHP-Code:
#!!! Bei Ausführung dieser Abfrage scheint der eigentliche Fehler zu enstehen !!!#
# Hier bekommt der gewählt Eintrag, den neuen Wert (-1) an hand seiner ID zugewiesen
$strSQLcmd2='UPDATE bilder SET position='.$newvalue.' WHERE id='.$up;
echo $strSQLcmd2."<br>";
if (!$result=mysql_query($strSQLcmd2, $db_connect2)) echo mysql_error();
Dabei scheint er aber die Update-Anweisung vor der Select-Abfrage auszuführen!!!
Weiß jemand wie ich das Problem umgehen kann??????????????
Gibt es vielleicht eine Möglichkeit den Cache der SQL zu leeren vor der 2. Update-Anweisung????
Weiß jemand wo das Problem liegt!
Wäre für Hilfe sehr dankbar!!!
Danke!
Kommentar