ZeTu
20.01.2012, 21:07:09
Witam.
Mam kolejny problem gdy usunę z bazy rekord z pola pozycja np. 2 to jest wtedy tak jakby luka 1, 3, 4, 5,... a jak zrobić żeby wszystkie które są poniżej zmieniły swoją pozycję o jeden w górę czyli 3 to 2, 4 to 3, 5 to 4?
Kshyhoo
20.01.2012, 21:16:24
To złe myślenie, popsuje bazę danych - konkretnie zależności między tabelami. Tak musi być. Bazie to nie przeszkadza

A jak się upierasz, to możesz kombinować tak:
UPDATE tabela_z_rekordami SET id_rekordu=id_rekordu-1 WHERE id_rekordu>9 ORDER BY id_rekordu DESC;
Czyli zmniejszysz ID o -1 dla rekordów o numerze większym od9...
ZeTu
20.01.2012, 21:23:48
No ale jak później klikam w górę by przenieść o jeden w górę np. rekord o pozycji 3, to zmienia na 2, ale nie podmienia z pozycją 1, czyli wtedy muszę kliknąć 2 razy by zamienić za pozycję 1.
ZeTu
20.01.2012, 21:30:18
OK to zaraz sprawdzę jak działa.
Tak to ma wyglądać?
mysql_query("UPDATE cmsek_menu SET pozycja=$menurs-1 WHERE pozycja>$menurs ORDER BY pozycja DESC");
Gdzie
$menurs to pozycja jaką usuwamy
Bo zamienia pozycję we wszystkich rekordach.
PS: Moja struktura tabeli wygląda tak; pozycja, nazwa, adres, id
Kshyhoo
20.01.2012, 22:07:46
Masz napisane:
UPDATE // zmień
tabela_z_rekordami // nazwa tabeli
SET // ustaw
id_rekordu=id_rekordu-1 // ID=ID-1, czyli odemnij 1 od numeru rekordu
WHERE // gdzie
id_rekordu>9 //numery ID są większe od 9
ORDER BY id_rekordu DESC; // bleble
Czyli masz rekordy 1, 2, 3, 4, 5, 6, 7, 8, 9, 11... - brak 10.
Po użyciu w/w kodu, wszystkie rekordy począwszy od ID=10 zostaną zmiejszone o 1, innymi słowy, rekord o ID=10 bedzie miał ID=9, ID=11 będzie ID=10, itd...
ZeTu
20.01.2012, 22:27:13
I sie pogubiłem
if ($_POST["Usun"]!="")
$menurs2asd=$menurs-1;
{
$zapytanie3 = mysql_query("DELETE FROM `cmsek_menu` WHERE pozycja='$menurs'"); $zapytanie3a = mysql_query("UPDATE cmsek_menu SET $menurs=$menurs-1 WHERE id>$menurs2asd ORDER BY $menurs2asd DESC"); echo "Podstrona o nazwie xyz została usunięta<br>"; }
I znowu coś źle zrobiłem, wiem co znaczy UPDATE, SET, WHERE, ale nie wiem co podmienić czy mam zostawić np. id_rekordu, czy podmienić pod $menurs itp.
Kshyhoo
20.01.2012, 22:29:47
A chcesz zmienić numery ID rekordów w bazie, czy zrobić menu do przechodzenia pomiędzy rekordami w PHP?
ZeTu
22.01.2012, 00:15:57
Ok zwracam honor źle zrozumiałem
Mogłeś powiedzieć, że wystarczy, że na końcu zmienię na $menurs i by było ok

mysql_query("UPDATE cmsek_menu SET pozycja=pozycja-1 WHERE pozycja>$menurs");
I teraz działa

dzięki