hallo leute,
vielleicht könnt ihr mir ja helfen.
ich programmiere gerade eine menüstruktur, welche in einer db gespeichert wird, sodass laien neue menüpunkte hinzufügen können.
damit man entscheiden kann, wo ein neuer punkt hinzugefügt wird, speichere ich das ranking des eintrags (nicht id, sondern extra-feld).
meine tabelle in der db sieht so aus
mein bisheriger code sieht so aus
mein problem besteht hier in der dynamik. wenn ich einen eintrag zwischendrin einfüge, müssen sich natürlich alle einträge darunter mitändern (im ranking). ich kriegs einfach nicht gebacken. mit dem obigen habe ich das problem, dass sich der eintrag zwar an der richtigen stelle einfügen lässt, allerdings die folgenden einträge alle den gleichen ranking-wert bekommen und der ranking-wert dem des letzten eintrags +1 entspricht.
weiss einer warum?
vielleicht könnt ihr mir ja helfen.
ich programmiere gerade eine menüstruktur, welche in einer db gespeichert wird, sodass laien neue menüpunkte hinzufügen können.
damit man entscheiden kann, wo ein neuer punkt hinzugefügt wird, speichere ich das ranking des eintrags (nicht id, sondern extra-feld).
meine tabelle in der db sieht so aus
Code:
create table navigation(
id serial not null primary key,
designation varchar(30) not null,
url varchar(100),
sub integer not null,
rank integer not null);
mein bisheriger code sieht so aus
Code:
$prank = $_POST['rank'];
$query = pg_query($conn, "SELECT rank FROM navigation ORDER BY rank");
while($data = pg_fetch_object($query))
{
$rank = $data -> rank;
if($rank >= $prank)
{
$newrank = $rank + 1;
pg_query($conn, "UPDATE navigation SET rank = '$newrank' WHERE rank = '$rank'");
}
}
$query = pg_query($conn, "INSERT INTO navigation (markup,url,target,rank,sub)
VALUES(
'$_POST[markup]',
'$_POST[url]',
'$_POST[target]',
'$prank',
'$_POST[sub]'
)");
pg_close($conn);
mein problem besteht hier in der dynamik. wenn ich einen eintrag zwischendrin einfüge, müssen sich natürlich alle einträge darunter mitändern (im ranking). ich kriegs einfach nicht gebacken. mit dem obigen habe ich das problem, dass sich der eintrag zwar an der richtigen stelle einfügen lässt, allerdings die folgenden einträge alle den gleichen ranking-wert bekommen und der ranking-wert dem des letzten eintrags +1 entspricht.
weiss einer warum?