Dynamiczny form - zapis do bazy

0

Witam
mam formularz, w którym są trzy pola input: w pierwszym wybieramy datę, w pozostałych dwóch godziny.
Zrobiłam dodawanie za pomocą przycisku, nowych input'ów - za każdym razem w nowej linii są dodawane trzy inputy, do których wklejane są aktualne wartości z trzech poprzednich inputów (kalendarz i godziny, które możemy zmieniać).
I teraz nie wiem jak zrobić, aby do bazy zapisać grupowo wartości z trzech inputów: datę i dwie godziny.
Na początku pomyślałam o zapisie metodą foreach (stąd name'y nadawałam np. input[]) ale to się sprawdzi tylko w przypadku, gdy każdy input byłby zapisywany do osobnego rekordu, a tutaj muszę zapisywać po trzy inputy na raz.
Ma ktoś jakiś pomysł na to?

0

skoro dodajesz to z javascriptu to nie mozesz sobie javascriptem dodawać łatwych do rozpoznania z poziomu języka po stronie serwera nazw pól?

edit: a jak nie to:
data: <input name="daty[d][]" /> godzina od: <input name="daty[g1][]" /> godzina do: <input name="daty[g2][]" />

potem po stronie serwera zliczasz ilość GET[d], potem pętla for i z górki.

0

Nie wiem czy się zrozumieliśmy. Chodzi mi o to, że muszę do bazy do jednego rekordu zapisać datę, g1 i g2, a takich kompletów mogę mieć kilka - bo formularz jest dynamiczny.

0

zrób taki formularz jak napisałem, a potem zrób sobie jakis var_dump w PHP czy w czymkolwiek robisz po stronie serwera

0

Zaczęłam coś kombinować i pola dodawałam w ten sposób:
HTML
<input name="daty[i]" /> godzina od: <input name="daty[i]" /> godzina do: <input name="daty[i]" />//za i za każdym dodaniem inputów liczba o 1 większa

PHP

$x = $_POST['x']; //zczytywane z ukrytego inputa ile razy były dodane pola z datą i godziną (ile kompletów)
for ($i=1; $i<=$x;$i++){
$data = $_POST['datepicker['.$i.']']; //notice
$g1 = $_POST['godz_od['.$i.']']; //notice
$g2 = $_POST['godz_do['.$i.']']; //notice
//
tutaj zapis do bazy robiłam
//
}
 

Wiem, że zapewne zrobiłam inaczej niż mi podpowiadałeś, ale próbowałam jakoś ze swoimi umiejętnościami i Twoimi radami zrobić coś, co mogłoby działać ;) .
W każdym razie tutaj utknęłam, na pewno w php coś źle zrobiłam, ale nie wiem jak z tego wybrnąć.

Poza tym pojawiają mi się takie błędy:
Notice: Undefined index: godz_od[1] in C:\xampp\htdocs\inz2\submit.php on line 27 (błąd tyle razy mam ile dodałam kompletów).

0

proszę Cię... zrób tak testowo:

data: <input name="daty[d][]" value="data1" /> godzina od: <input name="daty[g1][]" value="godzina1-1" /> godzina do: <input name="daty[g2][]" value="godzina1-2" />
data: <input name="daty[d][]" value="data2" /> godzina od: <input name="daty[g1][]" value="godzina2-1" /> godzina do: <input name="daty[g2][]" value="godzina2-2" />
echo '<pre>'; var_dump($_POST); echo '</pre>';

i wyciągnij wnioski.

KOD HTML MUSI TAKI BYĆ. Inaczej nadgrywasz jedne dane drugimi!

A do wielowymiarowej tablicy dostajesz się o tak (podstawy się kłaniają):
$_POST[d][0] - data1
$_POST[g1][0] - godzin1-1
$_POST[g2][0] - godzin1-2

$_POST[d][1] - data2
itd.

0

Zrozumiałam i faktycznie działa. Bardzo dziękuję :)
Faktycznie o PHP jeszcze niewiele wiem. Uczę się z potrzeby i w praktyce, ale może będzie lepiej. ;)

0

Witajcie
To znowu ja ;)
Mam podobny problem, jednak z małą różnicą. Zapisane rekordy w sposób jak powyżej, wczytuję wraz z checkboxami. Zaznaczone checkboxy zapisuję do bazy (id aktualnego głosu i id odpowiedzi na którą zagłosowano).
Ale chciałabym obok checkboxa z daną odpowiedzią umieszczony był input do którego mogę wprowadzić jakieś dane, które razem ze zaznaczonym checkbox'em zapiszą się w bazie w tym samym rekordzie i wydaje mi się, że sposób opisany powyżej na nazwanie inputów już nie pomoże, bo trzeba także uwzględnić unikalny id odpowiedzi.

Nie wiem czy napisałam to wystarczająco zrozumiale...

0

Przedstaw formularz, będzie prościej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1