Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] usuwanie rekordów
Forum PHP.pl > Forum > Przedszkole
maxis88
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...
MateuszS
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 ;
maxis88
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
slawny
Pojawia się w miejscu usuniętego ale id ma kolejne.
maxis88
czyli raczej trzeba zmienić pętlę która odczytuje wszystko z tabeli ?
slawny
Nie pętle, zmień zapytanie do bazy, tzn dołóż
order by id
i tyle
skowron-line
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.
maxis88
ok wielkie dzięki za pomoc smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.