![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
By dodać nowy wiersz (produkt) do bazy, przed procesem wprowadzania danych, muszę pobrać numer id, który dany rekord otrzyma.
Pobieram go prostym zapytaniem MAX (id) +1. Później juz tylko przesyłam ten numer, aż do momentu dodania nowego produktu. Rozwiazanie takie ma jednak wadę - możliwe jest, że w trakcie gdy jeden użytkownik wprowadza dane, inny rozpocznie ten samą czynność i otrzyma ten sam numer id. Stąd pojawia sie konieczność wprowadzenia mechanizmu rezerwowania numerów, czyli oznaczania, które numery id są właśnie wykorzystywane. Zrobiłem to na zasadzie osobnej tablicy, zawierającej kolumny [i]id_wprowadzanego_produktu i data [i] Jednak mam problem. Nie wiem jak pobrać numer wiersza, dla którego nie istnieje jeszcze produkt i który nie jest zarezerwowany, lub rezerwacja jest "przestarzała" A może macie jakieś inne rozwiazania? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Może tak:
Na początku skryptu dodajesz nowy rekord do bazy ale nie wypełniasz go danymi. Chodzi tylko o stowrzenie rekordu o nowej wartości w polu typu AUTOINCREMENT. Zczytujesz mysql_insert_id() - nie obawiaj się, że dostaniesz identyfikator wygenerowany w międzyczasie przez innego usera - mysql_insert_id() dotyczy tylko bierzącego połączenia klienckiego z bazą danych. Jak już masz ID, zapisujesz go jako zmienną sesji i lecisz przez formularze, aż będziesz miał komplet danych. Na końcu ropisz UPDATE w rekordzie z ID, które przechowałeś. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 21:08 |