Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Dynamiczne dodawanie wierszy
Forum PHP.pl > Forum > Przedszkole
cube22
Witam!
Potrzebuję podpowiedzi jak się zabrać za dynamiczne dodawanie wierszy do bazy MySQL zawierającej 2 tabele:
1. zapotrzebowanie (zapotrzebowanie_ID, oddzial, finansowanie, kod, sporzadzil)
2. material (material_ID, pozycja, material, ilosc, cena, zapotrzebowanie_ID)
Tabele w relacji jeden do wielu (jedno zapotrzebowanie wiele materialu).
Chciałbym to zrobić za pomocą jednego formularza, ale nie wiem jak to połączyć.
Przy dodawaniu wartości do tabeli zapotrzebowanie używam poniższego kodu, ale nie wiem jak go rozbudować aby była możliwość dodawanie materialu.
Czytałem, że takie rzeczy robić za pomocą Javascriptu, ale pomoce które znalazłem są strasznie rozbudowane. Proszę o wskazówki.
  1. if (isset($_POST['submit'])) {
  2. $oddzial = $_POST['oddzial'];
  3. $finansowanie = $_POST['finansowanie'];
  4. $kod = $_POST['kod'];
  5. $sporzadzil = $_POST['sporzadzil'];
  6. $output_form = false;
  7. if (empty($oddzial) || empty($finansowanie) || empty($kod) || empty($sporzadzil)) {
  8. echo 'Nie wypełniłeś wszystkich pól. Sprawdź wszystkie pozycje i spróbuj ponownie.';
  9. $output_form = true;
  10. }
  11. if (!empty($oddzial) && !empty($finansowanie) && !empty($kod) && !empty($sporzadzil)) {
  12. $zapytanie = "INSERT INTO zapotrzebowanie (finansowanie_id) VALUES ('$finansowanie')";
  13. if(!mysqli_query($dbc, $zapytanie)) {
  14. echo '<pre>'.mysqli_error().'</pre>';
  15. }
  16. }
  17. }
  18. else {
  19. $output_form = true;
  20. }
  21. ?>

  1. <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  2. <label for="oddzial">Oddzial:</label>
  3. <input type="text" id="oddzial" name="oddzial" /><br />
  4. <label for="finansowanie">Finansowanie:</label>
  5. <input type="text" id="finansowanie" name="finansowanie" /><br />
  6. <label for="kod">Kod asortymentu:</label>
  7. <input type="text" id="kod" name="kod" /><br />
  8. <label for="sporzadzil">Sporządził:</label>
  9. <input type="text" id="sporzadzil" name="sporzadzil" /><br />
  10. <input type="submit" name="Submit" value="Wyślij" />
  11. </form>
d3ut3r
Trudno tutaj opisać jakiś uniwersalny mechanizm, jest mnóstwo możliwości. Najprościej do formularza dodać tablicę checkboxów i każdy checkbox będzie oznaczał inny materiał w momencie gdy użytkownik zaznaczy materiały i wyśle formularz ty otrzymasz tablicę z wybranymi materiałami.
Valdi_B
Gdybyś dane do jednej i drugiej tabeli brał z jednego formularza, to pojawia się ograniczenie liczby pól na materiały.
Radzę rozbić na etapy.
1. Najpierw wprowadzasz nowe zapotrzebowanie.
2. Potem - stojąc na liście zapotrzebowań - przy którymś klikasz link "Materiały" i wchodzisz w dopisywanie materiałów.

Ściślej - taki link powinien być wejściem do przeglądu pozycji danego zamówienia,
a tylko jeżeli ta lista jest pusta - od razu wchodzić w dopisywanie.

Oczywiście to co powyżej to tylko szkic.

Edit: (w uzupełnieniu)
Poza tym chyba powinieneś mieć jeszcze tabelę "słownik materiałów" i być może cena powinna być właśnie tam, a nie w wykazie materiałów do danego zamówienia.
d3ut3r
Cytat
Gdybyś dane do jednej i drugiej tabeli brał z jednego formularza, to pojawia się ograniczenie liczby pól na materiały.
Radzę rozbić na etapy.


Możesz to rozwinąć ? Bo nie bardzo rozumiem o jakim ograniczeniu mówisz.
Valdi_B
Miałem na myśli to, że jak w formularzu zrobisz "x" wierszy na materiały, a w danym przypadku materiałów będzie więcej, to trzeba kombinować z dodaniem kolejnych wierszy (na dalsze materiały).

Z drugiej strony, przyszedł mi do głowy przykład stron typu "oferty pracy":
- w formularzu jest pole "file" na załączenie pliku (np.) CV,
- gdy człowiek chce załączyć jeszcze jeden plik, to jest klawisz ekranowy, który poszerzy formularz o dodatkowe pole "file" (i tak można "dorzucać" po 1 wierszu ile razy się chce).

Prawdę mówiąc - właśnie tej kombinacji chciałem uniknąć, ale może przesadziłem i powinieneś skopiować właśnie to rozwiązanie?
cube22
W takim razie chyba najprostszym rozwiązaniem będzie rozbicie tego na 2 formularze, tak jak zaproponował Valdi_B.
Zrobiłbym to tak:
- pierwszy formularz wprowadza dane do tabeli zapotrzebowanie; w nim przycisk "Dalej" bądź "Dodaj materiał/y", który po kliknięciu dodaje zapotrzebowanie i otwiera kolejny formularz
- w 2 formularzu wprowadzam materiał/y dla wcześniej dodanego zapotrzebowania za pomocą przycisku dodaj który przeładowuje listę materiałów (nad miejscem do wprowadzania materiałów można jeszcze wyświetlić dane z poprzedniego formularza).
- po dodaniu materia-łu/ów za pomocą przycisku zatwierdź przenosi nas na listę zapotrzebowań
Co Panowie myślicie o tym rozwiązaniu.
Valdi_B
Zrób jak napisałeś.
Dzięki temu cały projekt będzie podzielony na mniejsze kawałki, nad którymi łatwiej panować.
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.