Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Insert do tabeli dynamicznie dodawanych pól (JS)
Forum PHP.pl > Forum > PHP
BigZ
Witam!

Poniżej wklejam kawałek kodu (jeden prosty pliczek) z JS-em. Dodaję dynamicznie dane JS-em (buttonami) - dodaje grupę i do niej jedną lub kilka opcji.
Chciałbym to, co otrzymam w postaci tablicy (pod koniec pliku oznaczone kodem php) wysłać do mojej bazki, która ma nastepującą strukturę:

|====GRUPA====|
|------id-----|
|----nazwa----|
|=============|

|====OPCJE====|
|------id-----|
|--id_grupy---| //FK do GRUPA.ID
|----nazwa----|
|=============|


W jaki sposób moge to zrobić? Nie jestem jakoś super doświadczony w php, więc pytam smile.gif Ogólnie zasady INSERT INTO w php znam, ale tylko w przypadku zwykłych zmiennych. Pomoże ktoś wygrzebać się z tych tablic? smile.gif
Przykładowy wynik tego print_r : Array ( [0] => g1o1 ) Array ( [0] => g2o1 [1] => g2o2 [2] => g2o3 )


  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Dokument bez tytułu</title>
  6. <script src="js/jquery-1.5.2.min.js" type="text/javascript"></script>
  7. <script type="text/javascript">
  8. var counter_group = 0;
  9. var limit_group = 10;
  10. var counter_option = 0;
  11. var limit_option = 10;
  12.  
  13. var addInput = function(divName) {
  14. if (counter_option == limit_option - 1) {
  15. alert('You cannot add more options.');
  16. } else {
  17. counter_option++;
  18. var newdiv = document.createElement('div');
  19. newdiv.innerHTML = "<font style='margin-left:50px;'>Option</font> " + (counter_option + 1) + "<input type='text' name='groups[" + counter_group + "][options][]'>";
  20. document.getElementById(divName).appendChild(newdiv);
  21. }
  22. }
  23.  
  24. var addGroup = function(divName) {
  25. if (counter_group == limit_group - 1) {
  26. alert('You cannot add more groups.');
  27. } else {
  28. counter_group++;
  29. counter_option = -1;
  30. var newdiv = document.createElement('div');
  31. newdiv.innerHTML = "Group " + (counter_group + 1) + "<input type='text' name='groups[" + counter_group + "][name]'>";
  32. document.getElementById(divName).appendChild(newdiv);
  33. }
  34. }
  35. </script>
  36. </head>
  37.  
  38. <body>
  39. <form action="costam.php" method="post">
  40. <input type="hidden" name="sent" value="true" />
  41. <div id="dynamicInput">
  42. Group 1
  43. <br>
  44. <input type="text" name="groups[0][name]">
  45. <div id="dynamicInput" style="margin-left:50px;">
  46. Option 1
  47. <br>
  48. <input type="text" name="groups[0][options][]">
  49. </div>
  50. </div>
  51. <input type="button" value="Add another group" onClick="addGroup('dynamicInput');">
  52. <input type="button" value="Add another option" onClick="addInput('dynamicInput');">
  53. <input type="submit" value="Dodaj do bazy" class="alt_btn">
  54. </form>
  55. <?php
  56. if($_POST['sent'])
  57. {
  58. echo 'form sent<br />';
  59. foreach ($_POST['groups'] as $group) {
  60. $name = $group['name'];
  61. print_r($options = $group['options']);
  62. }
  63. }
  64. ?>
  65. </body>
  66. </html>
Mlodycompany
jquery ajax
BigZ
Przepraszam, ze co?

Mam gotowa tablice w php (kolorowa skladnia), tylko nie wiem jak z niej wyciagnac dane, zeby je wyslac do bazy danych. Nie pomylilem dzialow ... W tej chwili wypisuje foreach-em a chce wkladac do tabeli w bazie w odpowiedniej kolejnosci, czy ktos pomoze? Bede bardzo wdzieczny, zalezy mi na czasie..
nospor
Skoro te dane z tablicy wypisujesz foreachem no to masz defacto to już jako zmienne/wartosci. A te normalnie wkładasz do bazy (piszesz, że umiesz wkładać do bazy)
BigZ
Cytat(BigZ @ 16.12.2012, 19:30:07 ) *
Ogólnie zasady INSERT INTO w php znam, ale tylko w przypadku zwykłych zmiennych. Pomoże ktoś wygrzebać się z tych tablic? smile.gif

Nie potrafię operować na tablicach takiego typu, pomoże mi ktoś napisać taki kod? To zapewne tylko kilka linijek .. smile.gif Naprawde bardzo mi na tym zależy..
CuteOne
  1. foreach($tablica as $k => $v) {
  2.  
  3. $pdo -> query("INSERT INTO tabela ('".$v['id']."', '".$v['miasto']."')");
  4. }
BigZ
OK, dzięki CuteOne smile.gif WSZYSTKO DZIALA JAK NALEZY smile.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.