Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Formularz w PHP dodający do SQL kilka danych do jednej tabeli
Forum PHP.pl > Forum > Przedszkole
mowmiheniek
Witam wszystkich.

Jestem początkujący w temacie PHP i SQL. Próbuję od dwóch dni wymyślić jak przekazać kilka danych z formularza PHP do bazy SQL.
Z formularzem dodający jeden rekord do wiersza nie mam problemów, ale mam problem z kilkoma danymi które dodaje przycisk Add.

Poniżej zdjęcie.

Chodzi o dane w kolumnie: Quantity które będą liczbami oraz Date.

Zdjęcie

Liczba wierszy będzie się zmieniać, bo użytkownik będzie miał możliwość dodawać owoce do tabeli w kolumnach "Name" oraz "Bulk".

Do tej pory zrobiłem to tak:

  1. <form action="" method="post">
  2. Date<br>
  3. <input name="date" size=10/><p>
  4. <input type=submit value="..Add..">
  5. </form>
  6.  
  7.  
  8. <table border=1>
  9. <tr>
  10. <td>Name</td>
  11. <td>Quantity</td>
  12. <td>Bulk</td>
  13. </tr>
  14.  
  15.  
  16. <?php
  17.  
  18. $ok = null;
  19.  
  20. if(isset($_POST['name'])){
  21. $date = $_POST['date'];
  22. $quantity = $_POST['quantity'];
  23. $baza = new Db();
  24.  
  25. if(empty($_POST['name'])) {
  26. echo '<b>You left the empty field name';
  27. } else {
  28.  
  29. $wynik = $baza->add("stock_fruits SET date='".$baza->escape($date)."',
  30. quantity='".$baza->escape($quantity)."'");
  31.  
  32.  
  33. if($wynik){
  34. $ok = true;
  35. }else{
  36. $ok = false;
  37. }
  38. }
  39. }
  40.  
  41.  
  42. $baza = new Db();
  43. $stock = $baza->wybierz("* FROM fruits ORDER BY name ASC");
  44.  
  45.  
  46.  
  47. while($stan = mysql_fetch_assoc($stock)){
  48. ?>
  49. <form action="" method="post">
  50. <tr>
  51. <td><?php echo $stan['name']; ?></td>
  52. <td><input name="quantity" size=5/></td>
  53. <td><?php echo $stan['barrel_bulk']; ?></td>
  54. </tr>
  55. </form>
  56. <?php
  57. }
  58. ?>
  59.  
  60. </table><br>



Zastanawiałem się czy to nie zrobić za pomocą array, ale niestety umiejętności i pomysłów mi zabrakło.

Dziękuję za pomoc.
maviozo
Prawdę mówiąc jakoś nie mogę skumać dokładnie, bez pełnego kodu, ale mam kilka porad.
Formularz ze zmienną ilością danych obsłużyłbym właśnie tablicą:
Kod
<input type="text" name="fruit[]"/>
Kilka kolejnych takich pozycji tworzy tablicę dostępną pod $_POST['fruit'][1], $_POST['fruit'][2] itd.
Można pójść dalej:
Kod
<input type="text" name="fruit[apple][]"/>
<input type="text" name="fruit[apple][]"/>
<input type="text" name="fruit[carrot][]"/>
<input type="text" name="fruit[carrot][]"/>
daje:
$_POST['fruit']['apple'][0]
$_POST['fruit']['apple'][1]
$_POST['fruit']['carrot'][0]
$_POST['fruit']['carrot'][1]
Naturalnie można iterować po tablicach za pomocą pętli foreach, dzięki czemu nie musisz znać jej długości. To pierwsza ze spraw.
Dodawanie do bazy danych oczywiście można zrobić przez PDO i bindowanie wartości do jednego zapytania.
Tutaj opis - w połowie strony stosowny przykład dodawania w pętli.
fastlone
+ jeśli chcesz te wszystkie dane dodać na raz, to nie zaczynaj każdym wykonaniem polecenia "while", gdyż dane się prześlą razem.
Masz jeden początek formularza na samej górze, nie zaczynaj go i nie kończ każdym wykonaniem pętli smile.gif
mowmiheniek
Dziękuje maviozo i fastlone, przeczytam i postaram się rozgryźć temat.
Forti
Poczytaj także o serializowaniu danych. Słowo klucz wink.gif
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.