[SQL][PHP]Dodanie kilku rekordów do bazy danymiz formularza |
[SQL][PHP]Dodanie kilku rekordów do bazy danymiz formularza |
9.02.2013, 20:17:48
Post
#21
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
O, faktycznie, literówka się wkradła :)
Będę zaglądał mniej więcej do 16-17. Wieczorem już mnie nie będzie. Ten post edytował Michasko 9.02.2013, 20:17:55 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
--wojtek1988-- |
9.02.2013, 20:33:08
Post
#22
|
Goście |
ja bede juz koło 10 to sie odezwe z ciekawym pytaniem.potem dasz mi numer konta i spłace dług .. Ja twoj uczeń
|
|
|
10.02.2013, 15:00:08
Post
#23
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
Dzięki @Michasko juz wiem jak dodać kilka wierszy do bazy poprzez formularz i teraz zastanawiam się czy byłoby możliwe wykonanie wielokrotnego zapytania dodania wierszy a po nim zapytanie do bazy danych dodające jeden wiersz do innej tabeli pobierając z wielokrotnego formularza wybrane rekordy . Opsize to na przykłądzie.
Posiadam tabele produkty oraz PZ(dokument przyjecia produktów). W jednym dokumencie chciałbym przechowywac nazwe, ilosc i cene netto wszystkich dodanych produktów. Dodanie kilku produktów wykonam ale po nim zapytanie dodające jeden wiersz z kilkoma nazwami, i,ościami oraz cenami netto wyżej dodanych produktów. Co na ten temat myślą mistrzowie?? |
|
|
10.02.2013, 15:11:41
Post
#24
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
Czekaj czekaj, bo teraz znikąd pojawia nam się 'dokument'. Jaki dokument?
Jeśli chodzi o kilka produktów w jednym wierszu...nie ma sensu. Wygeneruj sobie ID np. danego zamówienia (czy tam przyjęcia) i dodaj tyle wierszy, ile masz produktów, ale każdy z takim samym ID "zamówienia". Potem wyciągając dane z bazy będziesz sobie wyświetlał wszystkie produkty dla zamówienia X. Ewentualnie w tym wierszu "zamówienia" zrób sobie pole "produkty", a tam porozdzielasz je np. średnikami. Jednak jest to pójście bardzo okrężną i trudniejszą drogą Ten post edytował Michasko 10.02.2013, 15:13:07 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
10.02.2013, 15:33:35
Post
#25
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
Pierwszy wariant jest fajny. W tabeli PZ usunę klucz główny i autoinkrementację z ID bo teraz mam. Zapytanie sql będzie wyglądac analgoicznie dodając produkty i dokumenty tylko, że id ,bądz numer PZ powinien być ten sam przy dodanym towarze co nie?
Obecnie mam powiązany jeden towar z jednym dokumentem a wyświetlam dokumenty tak: dokumenty pz Ten post edytował wojtek1988 10.02.2013, 15:37:51 |
|
|
10.02.2013, 22:01:42
Post
#26
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
Tak. Powiedzmy, ze ja chce od Ciebie zamowic 2 telewizory i 1 mikser. Wtedy do bazy dodajesz 2 rekordy:
Kod ID_zamowienia | ID_produktu | ilosc zakładając, że telewizor ma ID = 7, mikser = 4 Oczywiście możesz dodać dowolną ilość kolumn - grunt, to aby każde zamówienie miało swoje własne ID.3 | 7 | 2 3 | 4 | 1 Generalnie powiem Ci jak ja by to rozwiązał. Trzy tabele, które na pewno byłyby mi potrzebne - zamówienia, produkty i zamowienia_produkty. Oczywiscie dobrze jest też mieć osobne tabele z danymi klientów, magazynów itd. Ale te potrzebne do obsługi zamówień: zamowienia: Kod ID_zamowienia | koszt | wszystkie | dalsze | kolumny | z danymi | zamowienia produkty:Kod ID_produktu | cena | ilosc_na_stanie | dalsze kolumny... zamowienia_produkty:Kod ID_zamowienia | ID_produktu | zamowiona_ilosc I teraz tylko sprytnie to polaczyc Ten post edytował Michasko 10.02.2013, 22:09:03 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
11.02.2013, 06:32:53
Post
#27
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
ale jak miałoby wyglądać zapytanie, które wyświetlałoby nazwy towarów oraz ich ilości o tym samy numerze id dokumentu?
Warunek where id_produkt ale dokłądniej jak? tabela zamówienia to u mnie pz i ma kolumny id_pz | data | nr_dok | id_magazyn | nazwa | sztuk| k_cena_netto | dostawca | przyjal | uwagi i obecnie jeden id oraz nr_dok posiada jedna nazwe i po jednym rekordzie z reszty kolumn. Klucz główny ma teraz id_pz ale jakby miało byc takiesamo w kilku rekordach - towarach to należy usunąc primary key prawda? Nie mam pojęcia jak wyglądałoby takie zapytanie do bazy |
|
|
11.02.2013, 13:07:38
Post
#28
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
Hola hola, nie masz usuwać primary_key. Nie rozumiesz mnie musisz mieć:
- 1 tabelę z wszystkimi zamówieniami - 1 tabelę z wszystkimi produktami - 1 tabelę, która połączy zamówione produkty z konkretnym zamówieniem Spójrz na strukturę, którą przedstawiłem Ci w poprzednim poście I nie "WHERE id_produkt", tylko "WHERE id_pz", bo szukasz wszystkich zamówionych produktów o takim samym ID zamówienia Czyli na przykładzie bazy, którą Ci pokazałem: jeśli chcesz dokładniejszej pomocy - przedstaw też strukturę tabeli produktów i tabeli, którą chcesz połączyć dany dokument z zamówionymi produktami Ten post edytował Michasko 11.02.2013, 13:09:06 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
11.02.2013, 13:47:11
Post
#29
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
tabela produkty wygląda następująco
id_produkt | data | id_magazyn | nazwa | symbol | producent | typ | jednostka | k_cena_netto |k_stawka_vat | k_cena_brutto | marza | cena_netto | stawka_vat | cena_brutto | sztuk | rezerwacja | skladowanie | opis | kody_kreskowe | minimum | waga |gwarancja | data_waznosci | seria | dangerous | uwagi id_produkt - autoinkrment i primary key id_magazyn - foreign key tabela pz(dokument przyjecia) id_pz | data | nr_dok | id_magazyn | nazwa | sztuk| k_cena_netto | dostawca | przyjal | uwagi id_pz - autoinkrement i primary key nr_dok - unikalny index tAbela wiąząca dokumenty z towaramijak powinna wyglądać? |
|
|
11.02.2013, 14:09:33
Post
#30
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
Kod id_pz | id_produkt | zamowiona_ilosc | cena_za_sztuke id_pz - klucz główny i jednocześnie klucz obcy tabeli 'pz'id_produkt - klucz obcy tabeli 'produkty' ilosc - wiadomo cena_za_sztuke - ułatwisz sobie tym tworzenie np. rachunków. W razie gdybyś nie wiedział co to klucz obcy - CLICK. W skrócie - klucz obcy jest to pole, które jest kluczem głównym w innej tabeli. W ten sposób "wiążemy" ze sobą różne tabele. System bazy danych dzięki temu wie, że dane z tych dwóch (lub więcej) tabel są ze sobą powiązane i np. uniemożliwi Ci przypadkowe usunięcie jakiejś danej, albo będzie je aktualizował kaskadowo (jeśli zmienią się w głównej tabeli - zmienią się we wszystkich, aby zachować spójność). Ten post edytował Michasko 11.02.2013, 14:11:58 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
11.02.2013, 15:47:45
Post
#31
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
Tabele mam już zrobione. Teraz należy utworzyć dokument , który wyświetli tyle formularzy dodania towarów ile użytkownik sobie zażyczy. po wypełnieniu danych dokumnety i produktów naciskając przycisk potwierdz tworzą się rekodry nowych towarów w tabeli produkty, jeden dokument pz w tabeli pz oraz tyle wierszy ile produktów w tabeliz amówienia tak?
Wyświetlene dokumentów byłoby następujące. Wyświetlić wszystkie wiersze z tabeli pz czyli nr_dok, kontrahentów oraz całkowity koszt a szczegółowy opis dokumentu pobierałby dane z tabeli zamówienia tak? wtedy wszystkie wiersze o takim samym id_pz @Michasko szefie jak myslisz? Ten post edytował wojtek1988 11.02.2013, 15:54:58 |
|
|
11.02.2013, 16:02:23
Post
#32
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
Jeśli chodzi o wyświetlanie - tak.
Jeśli chodzi o dodawanie - nie wiem. Nie wiem co ma robić Twoja aplikacja, nie wiem czemu dodajesz równocześnie "towary" do tabeli "produkty" i "produkty" do tabeli "zamowienia", ani w ogóle na jakiej zasadzie to działa. Jeśli mógłbyś opisać cały proces od początku do końca, byłoby prościej. Ten post edytował Michasko 11.02.2013, 16:04:47 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
11.02.2013, 17:10:33
Post
#33
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
Już tłumaczę, jest to aplikacja magazynowa. Moduł, który jest ostatni to dokumenty a dokładnie PZ. Obsługa polega na przyjęciu towarów na podstawie dokumentu PZ. Obecnie gdy tworzony jest dokument uzytkownik z listy wyboru kontrahentów wybiera dostawcę, odbiorcą jest przedsiębiorstwo magazynu alewymagane jst podanie imienia i nazwiska reprezentanta przedsiębiorstwa, nr dokumentu to składowa RR-MM/nr . Data pobierana jest funkcja date(). Poniżej są pola opisujące id_towaru(nie obowiązkowe do wypełnienia ponieważ działa funkcja autoinkrement), nazwa , ilosc, cena netto, podatek vat z listy wyboru i potem automatycznie poprzez ajax wypełniane są wartosć VAtu, wartośc brutto. Ponizęj przycisk potwierdz ktory wykonuje 2 zapytania do bazy danych.
Pierwsze dodaje produkt do tabeli produkty( przyjmuje produkt)
Drugie zapytanie dodaje wiersz w tabeli PZ zawierający nazwe , ilosc, cene netto oraz strony transakcji Wyświetlanie działa nasepująco. Użytkownik wchodzi do modułu dokumnetów potem staje przed wyborem typu dokumentów czyli PZ albo WZ Wybiera PZ i widzi tabelę zawierającą wiersze każdy z nich wyświetla wszystkie informacje o pojedycznym dokumencie przyjęcia produktu. A lepiej gdyby była możliwość klikniecia na dany id dokumentu i wyswietlenie lisy towarów powiązanych z nim oraz stony transkacji i koszta Zrobimy to ? Ten post edytował wojtek1988 11.02.2013, 17:20:59 |
|
|
11.02.2013, 17:17:31
Post
#34
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
No dobrze, ale załóżmy, że w magazynie masz 10 telewizorów i ktoś przywozi kolejne 10 dokładnie takich samych. Sumujesz to, czy masz 2 osobne rekordy, w kazdym po 10 telewizorów (chodzi mi o tabelę 'produkty').
Ale generalnie koncepcja dodawania jest OK. Ten post edytował Michasko 11.02.2013, 17:17:54 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
11.02.2013, 18:40:45
Post
#35
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
W tabeli produkty nie wiąże kontrahenta z towarem. Gdybym przyjął towar który juz mam w tabeli to obecnie mogę zrobic to zwiększając ilość ale gdybym miał to zrobić poprzez dokument pz to mysle ze praca nie warta świeczki ?
Zaczynamy programowac?:0 A jak oddzielić nazwy i ilości w tabeli zamowienia_produkty jeśli mam tylko jedną kolumne id_produkt | zamowiona_ilosc | cena_za_sztuke Pomijając pytanie powyżej przemyślałem podpowiedzi @Michaska i doszedłęmdo następujacych wniosków: Będę miał 1 tabele przechowujaća i opisujaca tylko produkty o nazwie produkty, Id_produkt | id_magazyn | nazwa | ilosć i dalej ..... tabelę pz zawierającą informacje o dokumencie pz czyli: id_pz | magazyn przyjecia | kto przyjął | kto dostawcą | uwagi trzecia tabela zamowienia_pz będzie zawierać opis towarów i powiąże je z dokumentem pz poprzez pz_id id_pz | id_towar | ilość przyjęta | cena za sztukę| Tworząc dokument użytkownik powinien wybrac ile pozycji towarów chce miec na dokumencie, po tej czynności powinien wypełnić formularz i zatwierdzić jednym przyciskiem , który wywoła zapytnia do bazy danych , a mianowicie : 1. Dodanie towarów do tabeli produkty ( to umiem zrobić) 2.Utworzyć wiersze o jednakowym id_pz i id_produktu, ilości oraz cenie -tego nie umiem 3. Utworzyć wiersz do tabeli pz opisujacy dany dokument - to umiem Teraz jak wyświetlić dokumenty? Obecnie wyświetlam je w tabeli , każdy wiersz to inny dokument i tutaj nie ma problemu bo dane wyciągam z tabeli pz, ale gdy chciałbym zobaczyc szczegóły dokumentu to co teraz? Chciałbym aby przy każdym z wierszy był napis szczegoły ( option=szczegoły po id_pz)
ale jak połączyć wyświetlanie wszystkiego z tabeli pz z towarami , ilościami i cena za sztuke z tabeli zamowienia_pz ? Ten post edytował wojtek1988 12.02.2013, 07:16:41 |
|
|
12.02.2013, 14:45:33
Post
#36
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
1. Dodaj najpierw rekord do tabeli 'pz' i zapamiętaj sobie 'id_pz' z jakim je dodałeś.
2. Dodaj produkty do tabeli 'produkty' i zapamiętaj wszystkie ID i ilości, jakie je dodawałeś. 3. Dodaj rekordy do tabeli 'zamowienia_pz', każdy o innym ID produktu (te, które zapamiętałeś), ale wszystkie ze stałym ID_pz. Czego konkretnie nie umiesz? Bo nie rozumiem. Przecież wyświetlanie masz dobre, tylko teraz zamiast tabeli 'pz' będziesz wyświetlał z tabeli 'zamowienia_pz'. Przykład:
Oczywiście wszystko pisane na szybko i z palca, więc mogą byc jakieś błędy, ale generalnie powinno być ok. Poza tym mogą wystąpić problemy, jeśli w tym samym czasie kilka osób doda jakieś zamówienia - mogą się pomieszać. Aby temu zapobiec musiałbyś użyć transakcji. I miej na uwadze, że od nowych wersji PHP funkcje typu mysql_query już nie będą obsługiwane, więc radziłbym już teraz poczytać o bibliotece PDO. Ten post edytował Michasko 12.02.2013, 15:20:41 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
12.02.2013, 15:32:29
Post
#37
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
Już wdrażam twój kod
atrybut id_pz w kolumnie zamowienia_pz nie moze byc primary bo bedzie sie powtarzał , prawda? Ten post edytował wojtek1988 12.02.2013, 15:39:27 |
|
|
12.02.2013, 15:46:41
Post
#38
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
Prawda. Twoim kluczem głównym może być produkt_id, o ile w tabeli produkty za każdym razem będziesz generował nowy wiersz (a nie sumował ilość sztuk na magazynie). Może też być całkiem nowa kolumna. Nie jestem pewien, czy tabela może nie mieć klucza głównego (sprawdź to) - jeśli może nie mieć, to go po prostu nie rób.
Ten post edytował Michasko 12.02.2013, 15:50:20 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
12.02.2013, 20:35:09
Post
#39
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.02.2013 Ostrzeżenie: (0%) |
Dodaje mi jedynie "produkty" w reszcie zapytań do tabeli "pz" oraz "zamowienie_pz" wyświetla else " niepowodzenie"
@Michasko mógłbyś poprawić, spojrzeć
Ten post edytował wojtek1988 12.02.2013, 20:36:04 |
|
|
12.02.2013, 21:01:40
Post
#40
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
Jakie masz typy kolumn? w ID pewnie masz typ INT, a starasz sie wstawić "pz_id"...
Poza tym dodaj tam "mysql_error()" po kazdym zapytaniu i sie dowiemy o co chodzi. Ten post edytował Michasko 12.02.2013, 21:02:34 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
Wersja Lo-Fi | Aktualny czas: 18.04.2024 - 08:37 |