[PHP][MYSQL] - wspólny numer zamówienia dla wielu produktów, koszyk w php, baza mysql |
[PHP][MYSQL] - wspólny numer zamówienia dla wielu produktów, koszyk w php, baza mysql |
21.07.2020, 18:44:13
Post
#1
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 15.07.2018 Ostrzeżenie: (0%) |
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. Ten post edytował dreamit 21.07.2020, 18:45:14 |
|
|
21.07.2020, 19:52:09
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
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
|
|
|
21.07.2020, 21:24:18
Post
#3
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 15.07.2018 Ostrzeżenie: (0%) |
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 |
|
|
22.07.2020, 13:03:57
Post
#4
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
jako zam_id możesz wygenerować sobie jakiś randomowy ciąg i tego używać jako identyfikatora zamówienia np. UUIDv4
|
|
|
Wersja Lo-Fi | Aktualny czas: 4.05.2024 - 14:57 |