![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 86 Pomógł: 0 Dołączył: 6.08.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam bazę danych typu InnoDB, w której trzymam listę (katalog) produktów do sprzedania. Gdy klient złoży zamówienie (ten proces działa ok) na określoną liczbę wybranych produktów, to poniższa funkcja aktualizuje liczbę dostępnych egzemplarzy (kolumna 'on_stock') każdego z wybranych produktów. Gdy wykonuję tę operację dla kilku produktów to wszystkie się aktualizują, oprócz pierwszego wybranego przez użytkownika (czyli nie zawsze jest to kwestia 'item_id' = 1, lecz każdego produktu, który jako pierwszy ma zostać zaktualizowany), gdy zamówienie dotyczy tylko pierwszego, sytuacja się powtarza. W omawianej tabeli 'items' są następujące dane ("..." - nazwy kolumn i wiersze nieistotne do zrozumienia problemu): Kod | item_id | ... | on_stock | | 1 | ... | 5 | | 2 | ... | 3 | ... Teraz wywołuję funkcję w której dzieje się coś takiego: Gdy uruchamiam po raz pierwszy w pętli (powtarzanej tyle razy ile jest zamówionych elementów) funkcję set_stock(1, 2) [co powinno ustawić liczbę egzemplarzy pierwszego produktu z '5' na '2'], a w kolejnym wywołaniu pętli już set_stock(2, 1), to dla ID=1 nic się nie zmienia -> jest 5 szt, a dla ID=2 'on_stock' wynosi poprawnie 1 szt. Tak samo jest, gdy kolejność zamawiania produktów jest odwrotna, czyli ID=2 jest aktualizowany jako pierwszy. I to tutaj jest coś nie tak, bo dokładnie sprawdzałem, że przesłane zmienne $item_id i $ammount są prawidłowe - program dotąd działa dobrze):
Ten post edytował lukir 25.03.2007, 23:36:31 -------------------- "Tylko myśl dojrzała i jasna daje się wypowiedzieć w słowach prostych" - prof. Witold Doroszewski
Warsztat: os: Windows XP, serwer: Apache 2.0.55, php: 5.1.4, baza danych: MySQL 4.1.7. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 15:41 |