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?
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.
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.
zrób taki formularz jak napisałem, a potem zrób sobie jakis var_dump w PHP czy w czymkolwiek robisz po stronie serwera
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).
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.
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. ;)
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...
Przedstaw formularz, będzie prościej.