Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] ID przed stworzeniem rekordu, Numer ID przed dodaniem rekordu do bazy
glaacier
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 2.04.2009

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


Witam,

Pisze sobie pewien skrypt, który bazuje na bazach danych MySQL. Skrypt ma byc pewnego rodzaju systemem newsow. Zatrzymałem się jednak na pewnym problemie, któego nie potrafie rozwiązać.

Otóż:

Czy jest jakaś funkcja, opcja, cokolwiek co pozwalałoby mi na zidentyfikowanie numeru ID danego rekordu w tabeli MySQL przed dodaniem  tego rekordu? Kolumna ID jest uzupełniania automatycznie (auto_increment) w tabeli.

Do czego mi to potrzebne?

Otóż chce dodać do newsa zdjęcie. Przynależność zdjęcia rozpoznawana jest w tabeli po unikatowym numerze ID danego newsa. Żeby dodać zdjęcie/a przed dodaniem danego newsa potrzebuje numeru jego ID.

Jakieś sugestie? Odsyłacze do konkretnych kursów, działów kursów? Nie oczekuje gotowców, a raczej wskazówek smile.gif

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
athei
post
Post #2





Grupa: Zarejestrowani
Postów: 389
Pomógł: 141
Dołączył: 11.04.2009

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


O to chodzi http://pl2.php.net/manual/en/function.mysql-insert-id.php ? Jak nie to pobierz sobie ostatni id z tabeli, dodaj 1 i to będzie następny.

Ten post edytował athei 11.02.2010, 21:48:46
Go to the top of the page
+Quote Post
glaacier
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 2.04.2009

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


No wlasnie przy auto_increment jest drobny problem, bo jak dodam +1 do poprzedniego ID to nie zawsze będzie to prawdą, gdyż w momencie kiedy usunę dany rekord i dodam kolejny zostanie mu nadany numer z pominięciem tego ID który został usunięty.

Przykład:

Id 1
Id 2
Id 3 - Kasuje

Dodaje nowy rekord

Otrzymuje:

Id 1
Id 2
Id 4 - to ten rekord ktory dodalem smile.gif

Juz sprawdzam linka, ktorego mi podaleslales.
Go to the top of the page
+Quote Post
athei
post
Post #4





Grupa: Zarejestrowani
Postów: 389
Pomógł: 141
Dołączył: 11.04.2009

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


Jest jeszcze jedno rozwiązanie:
Kod
$sql = "SHOW TABLE STATUS LIKE 'nazwa_tabeli'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$next_id = $row['Auto_increment'];
Go to the top of the page
+Quote Post
glaacier
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 2.04.2009

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


Obydwie odpowiedzi bardzo mi pomogły.

Przy pierwszej, stworzyłem sobie nową tabele, gdzie przy dodawaniu nowego rekordu updatuje numer ostatniego ID. Tutaj jest sens dodania do podanej liczby 1, bo ten numer zawsze bedzie najwiekszy smile.gif

Drugi można by powiedzieć robi to samo, tylko od razu podaje następny numer ID przy dodaniu kolejnego rekordu i jest to na pewno sposób wygodniejszy smile.gif

Dziekuje bardzo za pomoc smile.gif



Go to the top of the page
+Quote Post
Kshyhoo
post
Post #6





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Jeżeli chcesz uzyskać ostatni numer ID, to:
  1. SELECT max(id)+1 AS nr FROM tabela

Mam ten sam problem, numeruję tutoriale i nie mogę polegać na ID ze względu na dziury po usunięciu rekordów. Mam do tego dodatkową kolumnę, gdzie trzymam numer przypisany do tutoriala, zgodny z numerem katalogu z plikami do tutoriala.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 02:43