11-07-2009, 21:11
Źle... Nie zrozumiałeś mnie do końca.
To nie działa tak. Tutaj narzucasz z góry pozycje ("nr" - dodajesz, albo odejmujesz jedno), ale pomyśl co będzie, jeżeli usuniesz jakiś rekord i będziesz próbował coś przesunąć - wtedy nie zadziała, bo nie znajdzie rekordu o 1 mniejszego/większego.
Podrzucę Ci mój kod (przesuwanie w dół):
Kod:
if($_GET['action'] == 'up') {
$liczba = ($nr+1); //rekord o jedna pozycje wyzej
} else {
$liczba = ($nr-1); //rekord o jedna pozycje nizej
}
Podrzucę Ci mój kod (przesuwanie w dół):
Kod:
case 'down':
// Pozycja przesuwanego elementu
$poz = (int)$_GET['poz'];
// Pobieramy ID większej pozycji aby zamienić się z nią
$q = mysql_query("SELECT * FROM `newsy` WHERE `poz`>'$poz' ORDER BY `poz` ASC LIMIT 1");
if ( mysql_num_rows($q) > 0 ) {
$r = mysql_fetch_array($q);
$idNowej = $r['id'];
$pozNowej = $poz;
$pozPrzesuwanej = $r['poz'];
$q = mysql_query("UPDATE `newsy` SET `poz`='$pozPrzesuwanej' WHERE `poz` = '$poz'".$b."");
$q = mysql_query("UPDATE `newsy` SET `poz` = '$pozNowej' WHERE `id` = '$idNowej'".$b."");
header('Location:admin.php?a=menu');
} else {
print '<div class="tip">Nie można już przesunąć w dół.</div>';
}
break;