Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dane z formularza do bazy danych jako oddzielne rekordy
Forum PHP.pl > Forum > Przedszkole
Przemo75
Witam.
Próbuję dane z jednego formularza z kilkoma polami INPUT typu TEXT (nie wszystkie muszą być wypełnione) zapisać do bazy jako oddzielne rekordy.
Załóżmy, że jest 5 pól typu INPUT, z których wypełniam np. tylko 3. Jak zrobić, aby dane z każdego z wypełnionych pól zostało dodane do bazy jako osobne rekordy.
W zależności od moich kombinacji wartość tego pola jest pusta albo wyświetla "Array".
Walczę z tym już dłuższy czas i nie mogę tego za nic przeskoczyć. Bardzo proszę o pomoc.

  1. <?php
  2. if(isset($_GET['oferta']) && $_GET['oferta']=='dodaj')
  3. {
  4. echo '<br><p class="style4"><b>DODAJ NOWY ASORTYMENT</b></p>';
  5. echo '<form method="post" action="main_asortyment.php?oferta=dopisz">
  6. <table border="0" width="100%">
  7. <tr>
  8. <td class="style3">Produkty kategorii:</td>
  9. <td></td>
  10. </tr>';
  11.  
  12. for ($i = 1; $i <= 35; $i++)
  13. {
  14. <tr>
  15. <td class=\"style3\"></td>
  16. <td><input type=\"text\" name=\"produkt[]\" size=\"60\"></td>
  17. </tr>
  18. ");
  19. }
  20. echo '
  21. <tr>
  22. <td> </td>
  23. <td><input type="submit" value="DODAJ"></td>
  24. </tr>
  25. </table>
  26. </form>';
  27. }
  28. elseif(isset($_GET['oferta']) && $_GET['oferta']=='dopisz')
  29. {
  30. foreach($_POST['produkt'] as $key=>$var)
  31. {
  32. $id_kategorii=$key;
  33. $produkt=$var;
  34.  
  35. if (!empty($produkt))
  36. {
  37. $query = "INSERT INTO asortyment VALUES ('0', '$id_kategorii', '$produkt')";
  38. $result = mysql_query ($query);
  39.  
  40. $message='Asortyment został pomyślnie dodany do bazy.';
  41. echo "<p align=\"center\" class=\"style3\">$message</p>";
  42. }
  43. }
  44. }
  45.  
  46. ?>


Nie wygląda to najładniej (3 klamry, jedna po drugiej) ale teraz działa.
nospor
1) Cały blok, który ma się wykonywać w FOREACH ma być w klamrach {} W przeciwnym wypadku wykona się w petli tylko pierwsza linia zaraz po foreach - no a chyba nie oto ci chodzi
2) Musisz dorobić warunek IF, który sprawdzi czy pole ma wartosc czy nie. Jak ma to ma sie wykonać zapytanie
3) Problem z mysql nie ma związku - przenosze
Przemo75
Jak przerobić poniższy kod, aby po wysłaniu pustego formularza (bez wybranej kategorii i wypełnionego chociaż jednego pola) wyświetlało komunikat, np.: Nie wybrałeś kategorii ani nie podałeś produktów.
Teraz działa tak, że wyświetla info o braku kategorii (po wpisaniu tylko produktu(ów) lub produktu (po wybraniu tylko kategorii).
Kombinuję na różne sposoby ale bez powodzenia.
  1. elseif(isset($_GET['oferta']) && $_GET['oferta']=='dopisz_a') // DOPISZ ASORTYMENT
  2. {
  3. $id_kategorii=$_POST['id_kategorii'];
  4. if ($id_kategorii != 0 && !empty($_POST['produkt']))
  5. {
  6. $j=0; //ilosc pol bez danych
  7. foreach($_POST['produkt'] as $produkt)
  8. {
  9. if (!empty($produkt) && $produkt != null)
  10. {
  11. $query = "INSERT INTO asortyment VALUES ('0', '$id_kategorii', '$produkt')";
  12. $result = mysql_query ($query);
  13.  
  14. $message1='<br><br>Asortyment o nazwie <b>'.$produkt.'</b> został pomyślnie dodany do bazy.</b>';
  15. echo "<p align=\"center\" class=\"style8\">$message1</p>";
  16. }
  17. else{
  18. $j++;
  19. }
  20. }
  21. if ($j == $il_prod)
  22. {
  23. echo '<p align=\"center\" class=\"style8\"><b>Wprowadź produkty!</b></p>';
  24. echo '<p align=\"center\" class=\"style8\"><a href="java script:history.back()" >POWRÓT</a></p>';
  25. }
  26. }
  27. else{
  28. echo '<p align=\"center\" class=\"style8\"><b>Nie wybrałeś kategorii!</b></p>';
  29. echo '<p align=\"center\" class=\"style8\"><a href="java script:history.back()" >POWRÓT</a></p>';
  30. }
  31. }
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.