Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Dynamiczne dodawanie pól w formularzu
Forum PHP.pl > Forum > Przedszkole
ichu
Tworzę właśnie prosty system do obsługi zamówień oparty na PHP i MySQL i większość problemów które napotkałem, rozwiązałem dzięki temu forum, ale dotarłem do takiego momentu, w którym muszę założyć nowego posta winksmiley.jpg

Mam formularz, w którym jest pole określające zamawiany towar, typ, ilość oraz miejsce dostawy. Opisałem je taką funkcją:
  1. <?php
  2. function add_Tw_field()
  3. {
  4. echo "<div class=\"towary_form\">";
  5. connect_db();
  6. $query="SELECT IdTw, NazwaTw FROM towary";
  7. $result=mysql_query($query);
  8. $num=mysql_numrows($result);
  9. echo "<div class=\"label\">Towar:</div><div class=\"inputs\"><select class=\"input\" name=\"IdTw\">";
  10. while ($z < $num) 
  11. {
  12. $IdTw=mysql_result($result,$z,"IdTw");
  13. $NazwaTw=mysql_result($result,$z,"NazwaTw");
  14. echo "<option value=\"$IdTw\">$NazwaTw</option>";
  15. $z++;
  16. }
  17. echo "</select></div>";
  18. echo "<div class=\"label\">Typ:</div><div class=\"inputs\"><input class=\"input\" name=\"TypTw\" /></div>";
  19. echo "<div class=\"label\">Ilość:</div><div class=\"inputs\"><input class=\"input\" name=\"IloscTw\" /></div>";
  20. connect_db();
  21. $query="SELECT IdMg, NazwaMg FROM magazyny";
  22. $result=mysql_query($query);
  23. $num=mysql_numrows($result);
  24. echo "<div class=\"label\">Miejsce dostawy:</div><div class=\"inputs\"><select class=\"input\" name=\"IdMg\">";
  25. while ($w < $num) 
  26. {
  27. $IdMg=mysql_result($result,$w,"IdMg");
  28. $NazwaMg=mysql_result($result,$w,"NazwaMg");
  29. echo "<option value=\"$IdMg\">$NazwaMg</option>";
  30. $w++;
  31. }
  32. echo "</select></div></div>";
  33. }
  34. ?>

Wszystko jest ok, jeśli w zamówieniu występuje tylko jedna pozycja. Nie wiem natomiast, jak za pomocą PHP powtórnie wywołać tą funkcję (przy użyciu przycisku button), by otrzymać dwa takie pola, jedno pod drugim. JavaScript chyba nie ma tutaj racji bytu, prawda? Zdaję sobie sprawę, że będzie to musiało odbyć się z przeładowaniem strony, ale nie wiem, jak do tego się zabrać. Pomocy!
Pilsener
Na początek garść rad:
- echo używaj tak:
  1. <?php
  2. echo '<div class="label">Towar:</div><div class="inputs"><select class="input" name="IdTw">';
  3. ?>

- po co mieszasz warstwę prezentacyjną z kodem PHP? W dodatku same divy - HTML to nie tylko divy. Funkcja ma realizować zadanie, zwracać wyniki w postaci np. tablicy. Dopiero ten wynik wstawiasz do szablonu HTML. Czym się różni ta funkcja od fragmentu kodu, który np. includujesz?

Na moje oko to problem masz prosty:
- tworzysz tak zwany "koszyk" z zamówieniami - możesz go przechowywać w pliku tymczasowym, bazie, sesji, a nawet cookies
- dodajesz lub usuwasz pozycje do zamówienia przy pomocy formularza, po każdym dodaniu/usunięciu następuje odświeżenie strony i ponowne wyświetlenie stanu koszyka oraz formularza
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.