Hallo miteinander!
Nach viel nachforschen bei Dr. G und diversen Foren, muss ich jetzt doch ein eigenes Thema aufmachen.
Ich schreibe zur zeit an einer "Dynamischen Speisekarte" für einen befreundeten Wirt. Grundlage ist eine Tabelle einer MySQL Datenbank mit den Feldern nr, besch, preis, sel. wobei nr eine Nummerierung darstellt, die manuell festgelegt wird und bei verschieben dementsprechend geändert wird.(1,2,3,...)
Neue Einträge, Einträge löschen und bearbeiten funktioniert. Nur beim ändern der Sortierung kommt es manchmal, nicht immer(!) zu störungen bei der Sortierung, bei der dann nummer doppelt vergeben oder mehrere 2Lücken2 auftauchen oder alle Einträge die gleiche nr bekommen. Aber eben nur manhcmal. Eine regelmäßigkeit wann der Fehler auftritt, habe ich nicht erkennen können. Könnt ihr mir Helfen??
Die vielen echos, auch in den Schleifen, sind nur zur Kontrolle.
Vielen Dank schonmal!
MfG
Harras
Nach viel nachforschen bei Dr. G und diversen Foren, muss ich jetzt doch ein eigenes Thema aufmachen.
Ich schreibe zur zeit an einer "Dynamischen Speisekarte" für einen befreundeten Wirt. Grundlage ist eine Tabelle einer MySQL Datenbank mit den Feldern nr, besch, preis, sel. wobei nr eine Nummerierung darstellt, die manuell festgelegt wird und bei verschieben dementsprechend geändert wird.(1,2,3,...)
Neue Einträge, Einträge löschen und bearbeiten funktioniert. Nur beim ändern der Sortierung kommt es manchmal, nicht immer(!) zu störungen bei der Sortierung, bei der dann nummer doppelt vergeben oder mehrere 2Lücken2 auftauchen oder alle Einträge die gleiche nr bekommen. Aber eben nur manhcmal. Eine regelmäßigkeit wann der Fehler auftritt, habe ich nicht erkennen können. Könnt ihr mir Helfen??
PHP-Code:
<?
$newnr = $_POST['newnr'];
$nr = $_POST['nr'];
echo $nr . " an Position ";
echo $newnr . " verschieben<br>";
$alt = $nr;
$neu = $newnr;
$server='';
$user='';
$dbname = '';
$pw='';
$db = @mysql_connect($server, $user, $pw);
mysql_select_db($dbname, $db);
if (mysql_errno()) die ("MySQL-Error: " . mysql_error());
if ($nr > $newnr){ echo "nr > newnr<br>";
$sql="UPDATE speisekarte SET nr='0' WHERE nr='$nr'";
$result = mysql_query($sql);
$sql="SELECT * FROM speisekarte WHERE (nr >= '$newnr' AND nr < '$nr') ORDER BY nr DESC";
$result = mysql_query($sql);
while($ar = mysql_fetch_array($result)) {
$nrr = $ar["nr"];
$newnrr = $nrr+1;
echo "Verschiebe: " . $nrr . " > " . $newnrr . "<br>";
$query = "UPDATE speisekarte SET nr='$newnrr' WHERE nr='$nrr'";
if (mysql_errno()) die ("MySQL-Error: " . mysql_error());
mysql_query($query);
}
$sql="UPDATE speisekarte SET nr='$neu' WHERE nr=0";
mysql_query($sql);
echo "Ändere id in " . $neu . ".";
}elseif($nr < $newnr){ echo "nr < newnr";
$sql="UPDATE speisekarte SET nr='0' WHERE nr='$nr'";
$result = mysql_query($sql); echo "id[nr] > 0";
$sql="SELECT * FROM speisekarte WHERE (nr <= '$newnr' AND nr > '$nr') ORDER BY nr ASC";
$result = mysql_query($sql);
while($ar = mysql_fetch_array($result)) {
$nrr = $ar["nr"];
$newnrr = $nrr-1;
echo "Verschiebe: " . $nrr . ">" . $newnrr . "<br>";
$query = "UPDATE speisekarte SET nr='$newnrr' WHERE nr='$nrr'";
if (mysql_errno()) die ("MySQL-Error: " . mysql_error());
mysql_query($query);
}
$sql="UPDATE speisekarte SET nr='$neu' WHERE nr=0";
mysql_query($sql);
echo "Ändere id in " . $neu . ".";
}else{
echo "Nix zu verschieben!";
}
?>
Vielen Dank schonmal!
MfG
Harras
Kommentar