dreamit
21.07.2020, 18:44:13
1) Zrobiłem tabelę produkty, która ma następujące kolumny:
- productid
- price
2) Zrobiłem tabele zamówienia, która ma następujące kolumny:
- id (autoinkrementacja)
- id_zamowienia
- productid
- count
I w ramach jednego zamówienia można zamówić wiele produktów naraz (inaczej mówiąc po prostu koszyk).
Np. zamawiam
- spodnie (productid: 4), sztuk 2
- bluzy (productid) 3, sztuk 5
I chciałbym żeby to wpadało do tabeli zamówienia w takiej formie
- id = 0 (autoinkrementacja)
- id_zamowienia -- ten sam numer zamówienia
- productid = 4
- count = 2
oraz
- id = 1 (autoinkrementacja)
- id_zamowienia -- ten sam numer zamówienia
- productid = 3
- count = 5
I tutaj pojawia się pytanie, w jaki sposób mogę generować numer zamówienia (id_zamowienia), tak żeby był jednakowy (wspólny) dla produktów zamawianych w ramach jednego zamówienia ? (dodam, ze dodanie zamówienia będzie w ramach jednego zapytania do bazy danych)
Myślałem o generowaniu jakiejś liczby z przedziału od 1111111111 do 9999999999 i sprawdzanie czy taki numer jest już w bazie, jak nie to losowanie kolejnego, ale wydaje się to dość kiepskie rozwiązanie.
Pyton_000
21.07.2020, 19:52:09
Dodaj sobie "zamowienia_pozycje" (id, zam_id, produkt_id, ilosc, cena_za_szt, stawka_vat) a w zamowienia generuj 1 zamówienie i wiele pozycji
dreamit
21.07.2020, 21:24:18
Czyli zrobić tak:
1 -- tabela zamówienia, a w niej kolumny
- zam_id
- np. user_id itp
2 -- tabela zamówienia_pozycje, a w niej kolumny
- id (autoinkrementacja)
- zam_id
- produkt_id
- ilosc
- cena_za_szt
- stawka_vat
Wcześniej o ile dodałem rekord z wymyślonym przez siebie zam_id to wiadomo, ze zadziałało tylko nie miało to sensu na sztywno. Teraz jak zrobię tak jak napisałeś (dobry pomysł) i wstawie do bazy kolejny nr zamówienia np. insert into zamowienia values (null, '5') i dajmy na to, że miałem takich zamówień 43 i teraz z autoinkrementacji mi wyjdzie zam_id 44 i tutaj pytanie jak przechwycić nowo dodany numer zamowienia, zebym mógł go użyc w kolejnym zapytaniu dodającym rekordy do tabeli zamowienia_pozycje? użyć mysqli->insert_id ? czy raczej zrobić to w jednym zapytaniu? czy w jakiś sposób sobie gdzieś go zapisać w zmiennej, ale jak? jeśli w jednym zapytaniu to właśnie nie bardzo wiem jak to ugryzc by w zamowienia_pozycje wstawiło mi ten sam numer co w zamowieniach w kolumnie zam_id
Pyton_000
22.07.2020, 13:03:57
jako zam_id możesz wygenerować sobie jakiś randomowy ciąg i tego używać jako identyfikatora zamówienia np. UUIDv4
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.