Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] - wspólny numer zamówienia dla wielu produktów, koszyk w php, baza mysql
dreamit
post 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
Go to the top of the page
+Quote Post
Pyton_000
post 21.07.2020, 19:52:09
Post #2





Grupa: Zarejestrowani
Postów: 7 951
Pomógł: 1393
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
Go to the top of the page
+Quote Post
dreamit
post 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
Go to the top of the page
+Quote Post
Pyton_000
post 22.07.2020, 13:03:57
Post #4





Grupa: Zarejestrowani
Postów: 7 951
Pomógł: 1393
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
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 Wersja Lo-Fi Aktualny czas: 7.08.2020 - 13:39