Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tabele powiązane
Forum PHP.pl > Forum > Bazy danych > MySQL
Lonas
Jak można rozwiązać problem jeśli na fakturze pojawia się więcej niż 1 produkt,
kontrahent jest zapisywany w tabeli, tylko jak teraz zapisać 2 produkty w jednej fakturze, są jakieś przypisania odwołania ?
nospor
zazwyczaj to sie tobi tak:
tabela faktura
tabela produkt. w tabeli produkt masz pole będące kluczem obcym do tabeli faktura. I jesli dwa prosukty naleza do jedenj faktury, to mają one te samo id faktury w tym polu. w ten sposob moze i 1000 produktow nalezec do jedenj faktury
Lonas
Mozesz mi cos podpowiedziec jak to wykonac od strony technicznej ?
nospor
Sądziłem ze w miare jasno to napisałem, chyba sie starzeje smile.gif

faktura
Cytat
id
numer
....innne pola faktury


produkt
Cytat
id
nazwa
id_faktury - to pole zawiera id z tabeli faktura. na tej podstawie bedziesz wiedzial do jakiej faktury nalezy produkt
...inne pola produktu


typy pol se ponadawaj juz sam. Ten problem byl juz poruszany na łamach tego forum pare razy. poszukjaj jesli nadal nie rozumiesz
Lonas
Myśle jak wykonac żeby kiedy dodaje produkty do faktury nr id_faktura pobierał się automatycznie,
są jakieś odwołania w bazie czy np utworzyć pole z którego nr będzie pobierany i przypisywany produktowi.

czyli tworze fakture ma nr id 1
wyswietlam wynik np
1. FV 1/2005 nazwa ... itd
( teraz dodaje produkt )
id_faktura ma się pobierać jakoś z bazy czy np z pola które wyświetla się powyżej, w tym przypadku 1.
nospor
to juz jak ci wygodniej. mozesz z pola, mozesz z bazy, mozesz z sesji.
Skoro dodajesz produkty to wiesz chyba do jakiej faktury.

ps: rozdziele ten temat bo sie juz znacznie oddalil od początkowego smile.gif
SongoQ
Najlepszym rozwiazaniem jest dodac rekord tabeli i zwrocic id faktury a nastepnie dodawac wpisy z tym id, no i oczywiscie w transakcji.
Lonas
a jak moge zwrocić id faktury ?

w tej chwili mam zrobiony dokument:
pobiera kontrahenta z tabeli i pokazuje go w select,
po wybraniu kontrhenta są wpisy do tabeli faktury,
mam teraz problem jak pobrać id faktury kiedy przypisuje jej produkt,
/ przygotowałem kod - jeśli wybiore np kontrahent tomek - to zaraz pokaze mi sie fakura tomek o id np 4 ale tez pokaza sie wczesniejsze faktury tomka z nizszymi id,

jak teraz zrobić żeby pokazywała sie tylko ta o najwyzszym id - i wtedy zostanie ono pobrane do tabeli z produktami faktury

1. Pobranie i wpisanie danych do tabeli faktura :
  1. <?
  2. if (!$nowy)
  3.  
  4.  {
  5. print "Nie zostały wypełnione wszystkie pola";
  6.  }
  7.  
  8. $nazwa = addslashes($nowy);
  9. $id = 0;
  10.  
  11. @$db = mysql_pconnect("localhost", "root");
  12. if (!$db)
  13. {
  14. print "Nie można nawiązać połączenia z bazą danych";
  15. }
  16.  
  17. mysql_select_db("faktury");
  18.  
  19. $query = "insert into faktura values ('".$id."' ,'".$nazwa."' )";
  20. $result = mysql_query($query);
  21.  
  22. if ($result)
  23. print "Towar został dodany do bazy danych.";
  24. else { print "W bazie istnieje już kontrahent o tej nazwie."; }
  25. ?>



2.Wyświetlenie danych:

  1. <?
  2. @$db = mysql_pconnect("localhost", "root");
  3. if (!$db)
  4. {  
  5. print "wystąpił błąd w połączeniu";  
  6. exit;
  7. }
  8.  
  9. mysql_select_db("faktury"); 
  10.  
  11.  
  12.  
  13. $query = "select * from faktura where nazwa like ('".$nazwa."' )";
  14. $result = mysql_query($query);
  15. $num_results = mysql_num_rows($result);
  16.  
  17.  
  18. print "<p>Ilość produktów w bazie danych: ".$num_results."</p>";
  19. for ($i=0; $i <$num_results; $i++) {
  20. $row = mysql_fetch_array($result);
  21.  
  22. print "ID "; 
  23. print stripslashes($row["id"]);
  24.  
  25. print " , Kontrahent: ";
  26. print stripslashes($row["nazwa"]);
  27. print " <br>";  
  28.  
  29.  
  30.  
  31. }
  32. ?>
SongoQ
Zrob takie cos.
  1. <?php
  2.  
  3. $query = "insert into faktura (wymien pola faktury) values (wstaw pola)";
  4.  
  5. ?>


W zapytaniu pomin pole id, i nadaj wlasciowsc temu polu autoincrament, po dodanym zapytaniu uzyj funkcji mysql_insert_id a nastepnie wstawiaj wpisy faktury.
Lonas
No i świetnie tego szukałem, dziękuje
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.