public function reorder($newParent, $newIndex) {
if ($newParent != $this->parent_id) { //Move to submenu
//items met $this->parent_id en sort>$this->sort met 1 verminderen
$this->db->query("UPDATE pages SET sort = sort-1 WHERE sort>$this->sort AND parent_id=$this->parent_id");
//daarna items met $newParent en sort>=$newIndex met 1`vermeerderen
$this->db->query("UPDATE pages SET sort = sort+1 WHERE sort>=$newIndex AND parent_id=$newParent");
} else {
if ($newIndex > $this->sort) { //Move DOWN
//items met sort<$newIndex and sort>$this->sort met 1 verminderen
$this->db->query("UPDATE pages SET sort = sort-1 WHERE sort<=$newIndex AND sort>$this->sort AND parent_id=$this->parent_id");
}
if ($newIndex < $this->sort) { //Move UP
//items met sort>$newIndex and sort<$this->sort met 1 vermeerderen
$this->db->query("UPDATE pages SET sort = sort+1 WHERE sort>=$newIndex AND sort<$this->sort AND parent_id=$this->parent_id");
}
}
$this->db->query("UPDATE pages SET sort = $newIndex, parent_id=$newParent WHERE id=$this->id");
}Bovenstaande is mijn code voor het aanpassen van de volgorde van mijn pagina's.
Heb er al erg mee zitten stoeien maar kom er niet uit.
Ik heb bijv in mij db netjes een aantal pagina's: (de nummertjes is de kolom sort)
0 - Pagina 1
1 - Pagina 2
2 - Pagina 3
3 - Pagina 4
4 - Pagina 5
5 - Pagina 6
Als ik dan pagina op positie 0 naar positie 3 verplaats krijg ik
0 - Pagina 2
1 - Pagina 3
2 - Pagina 4
3 - Pagina 1
3 - Pagina 5
3 - Pagina 6
Het eerste stukje klopt wel. maar de laatste 2 3en moet 4 5 zijn
Dit handmatig goed gezet en Pagina 1 weer naar positie 0 verplaatst krijg ik dit:
0 - Pagina 1
0 - Pagina 2
0 - Pagina 3
0 - Pagina 4
1 - Pagina 5
2 - Pagina 6
Wat doe ik fout of zie ik over het hoofd?