Banzak: PHP / mySQL - Update

Beitrag lesen

Hallo,
ich habe folgendes Problem bei einem Update eines Integer-Feldes in der mySQL DB.

Installierte Versionen:

  • PHP Version 5.3.8
    -mySQL 5.0.8

Das ist die Funktion die den Sortierungswert ändert und in die DB schreibt.

function sortIBS($ibs_pro_id,$ibs_id,$direction)  
{  
$db = new DB_Test();  
$db1 = new DB_Test();  
$db2 = new DB_Test();  
  
//## Suchen des betroffenen Elements  
$query="SELECT ibs_sort FROM tab_ibs WHERE ibs_id=".$ibs_id;  
$db->query($query);  
$db->next_record();  
if($db->f("ibs_sort") && $direction==up)  
{  
echo $query1="SELECT ibs_id FROM tab_ibs WHERE ibs_sort=".($db->f("ibs_sort")-1)." AND ibs_pro_id=".$ibs_pro_id;  
$db1->query($query1);  
$db1->next_record();  
//## Ändern des 1sten Elements  
echo $query2="UPDATE tab_ibs SET ibs_sort=6 WHERE ibs_id=".$ibs_id;  
echo "<br>";  
$db2->query($query2);  
while($db2->affected_rows()==-1)  
{  
$db2->query($query2);  
}  
//## Ändern des 2ten Elements  
echo $query2="UPDATE tab_ibs SET ibs_sort=7 WHERE ibs_id=".$db1->f("ibs_id");  
echo "<br>";  
$db2->query($query2);  
while($db2->affected_rows()==-1)  
{  
$db2->query($query2);  
}  
}  
  
if($db->f("ibs_sort") && $direction==down)  
{  
echo $query1="SELECT ibs_id FROM tab_ibs WHERE ibs_sort=".($db->f("ibs_sort")+1)." AND ibs_pro_id=".$ibs_pro_id;  
echo "<br>";  
$db1->query($query1);  
$db1->next_record();  
//## Ändern des 1sten Elements  
echo $query2="UPDATE tab_ibs SET ibs_sort=(ibs_sort+1) WHERE ibs_id=".$ibs_id;  
echo "<br>";  
$db2->query($query2);  
//echo "Anzahl Einträge".mysql_affected_rows()."<br>";  
while($db2->affected_rows()==-1)  
{  
$db2->query($query2);  
}  
//## Ändern des 2ten Elements  
echo $query2="UPDATE tab_ibs SET ibs_sort=(ibs_sort-1) WHERE ibs_id=".$db1->f("ibs_id");  
echo "<br>";  
$db2->query($query2);  
//echo "Anzahl Einträge".mysql_affected_rows()."<br>";  
while($db2->affected_rows()==-1)  
{  
$db2->query($query2);  
}  
}  
} 

Das ist die Ausgabe für die beiden Update-Anweisungen:
UPDATE tab_ibs SET ibs_sort=6 WHERE ibs_id=48
UPDATE tab_ibs SET ibs_sort=7 WHERE ibs_id=49

Und das ist das Ergebnis in der DB:
ibs_id ibs_pro_id ibs_sort
48 5 6
49 5 7
50 5 7

Er schreibt also für das obige Beispiel den Wert für 48 und 49 korrekt, nur weiß ich nicht warum er den Wert für 50 ändert...

Feldtyp für ibs_sort tinyint

Komischerweise schreibt er Werte in z.b. ibs_desc richtig, er macht nur Probleme wenn ich das Feld ibs_sort schreiben möchte... slebst wenn ich die sql hardcoded schreibe geht es nicht...

Das mit dem feld ibs_desc habe ich hardcode in den quelltext geschrieben, das ging....

Danke für Eure Hilfe.