Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL] usuwanie rekordów, 'usuniecie' wolnego pola
maxis88
post
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


Witam. Jestem początkujący w sprawach MySQL'a i mam taki mały problem...Mianowicie napisałem skrypcik do mojej stronki, który ma być takim jakby "panelem administracyjnym" żebym mógł usuwać z bazy określone wpisy... Wszystko działa, jednak nie wiem jak zrobić, żeby po usunięciu wiersza pozostałe automatycznie "spadały" na jego miejsce. Aktualnie jest tak, że jak cos usunę a następnie dodam, to nie pojawia mi się na końcu, tylko w miejscu tego usuniętego rekordu...

Będę wdzięczny za wszelkie wskazówki...
Go to the top of the page
+Quote Post
MateuszS
post
Post #2





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


A zastosowales pole id z auto_increment, primary key?

  1. ALTER TABLE `nazwa_twojej_tabeli` ADD `id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ;


Ten post edytował Ociu 26.06.2009, 10:51:23
Powód edycji: Poprawiłem bbCode (ociu)
Go to the top of the page
+Quote Post
maxis88
post
Post #3





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


tak... uzupełnia się niby automatycznie i jest to klucz glówny ...
  1. <?php
  2. $dane_tab="id MEDIUMINT(255) NOT NULL AUTO_INCREMENT,";
  3.            $dane_tab.="nick text NOT NULL,";
  4.            $dane_tab.="fotka int(100) NOT NULL,";
  5.            $dane_tab.="komentarz LONGTEXT NOT NULL,";
  6.            $dane_tab.="ocena INT(100) NOT NULL,";
  7.            $dane_tab.="dodany VARCHAR(80) NOT NULL,";
  8.            $dane_tab.="IP VARCHAR(20) NOT NULL,";
  9.            $dane_tab.="PRIMARY KEY (id)";
  10.            if(!mysql_query("CREATE TABLE komentarze($dane_tab)")){echo "<br />Nie mozna utworzyc tabeli KOMENTARZE<br />";
  11.            die(mysql_error());}else{echo "<br />Tabela KOMENTARZE utworzona pomyslnie !";}
  12. ?>


to moja tabela

Ten post edytował Ociu 26.06.2009, 10:51:43
Powód edycji: Poprawiłem bbCode (ociu)
Go to the top of the page
+Quote Post
slawny
post
Post #4





Grupa: Zarejestrowani
Postów: 214
Pomógł: 26
Dołączył: 7.11.2007
Skąd: Warszawa

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


Pojawia się w miejscu usuniętego ale id ma kolejne.
Go to the top of the page
+Quote Post
maxis88
post
Post #5





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


czyli raczej trzeba zmienić pętlę która odczytuje wszystko z tabeli ?
Go to the top of the page
+Quote Post
slawny
post
Post #6





Grupa: Zarejestrowani
Postów: 214
Pomógł: 26
Dołączył: 7.11.2007
Skąd: Warszawa

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


Nie pętle, zmień zapytanie do bazy, tzn dołóż
order by id
i tyle
Go to the top of the page
+Quote Post
skowron-line
post
Post #7





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Nie rób tego po ID tylko dodaj sobie pole POSITION które będzie kolejnym numerem wpisu
a po usunięciu prosty UPDATE
  1. <?php
  2. $q = 'update tabela set position = position - 1 where position > '. $pozycja_usuniętego wpisu .
  3. ?>

i po temacie.
A kolejne numery pozycji dasz sobie
  1. SELECT MAX( position ) + 1 FROM tabela

numer ostatniej pozycji powiekszony o 1.
Go to the top of the page
+Quote Post
maxis88
post
Post #8





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


ok wielkie dzięki za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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: 24.08.2025 - 22:40