Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]jak zamienić id w 2 wierszach
neo1986kk
post
Post #1





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


Witam, mam problem z zamiana 2 wierszy, mianowicie zmienia mi się wszystko oprócz id. Zrobiłem dla tego celu osobne zapytanie ale nic się nie dzieje.
  1. $zapytanie1 = "UPDATE `sloter` SET `id`='$id1+1' where `seq`='id1'";
  2. $idzapytania1 = mysql_query($zapytanie1);
  3. if ($zapytanie1){ echo "ZROBIONE <br>"; };
  4.  
  5.  
  6. $zapytanie2 = "UPDATE `sloter` SET `id`='$id-1' where `seq`='$id'";
  7. $idzapytania2 = mysql_query($zapytanie2);
  8. if ($zapytanie2){ echo "ZROBIONE <br>"; };


Czy coś tu jest nie tak?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Taaaa... I jeszcze powiedz, że masz na id ustawiony klucz primary autoincrement... Zgadłem? Wiesz co to powoduje czy nie wiesz o czym mówię? Bo jeśli masz tak ustawione to cud, że Ci pozwoliło na zamianę 3 na 4 już choćby raz. Primary zabrania stosować w kolumnie dwóch identycznych wartości w różnych wierszach. W takim wypadku należy więc lecieć ze zmianą nie od przodu bo Ci wywali zapytanie gdyż w jednym momencie pojawią się dwa wiersze z identyczną wartością. W takie sytuacji modyfikujesz parametr autoincrement tablicy zwiększając go o tyle o ile przesuwasz, a numery posuwając się od ostatniego ku pierwszemu, bo nigdy wtedy nie nastąpi zduplikowanie indeksu. Czyli przesuwasz wszystko o 4 w górę to autoincrement zwiększasz o 4 a rekordy lecąc od tyłu też o 4 robiąc update na tej kolumnie. Tak jak opisałeś, czyli idąc od najmniejszego można by zrobić gdybyś zmniejszał id, bo wtedy po odjęciu nie nastąpi duplikacja indeksu. Ale trochę myślenia perspektywicznego jak widać Ci brakuje i nie przewidujesz jak to wpłynie na bazę.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 17:01