Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Checkbox i input razem zapisywane do rekordu
Forum PHP.pl > Forum > Przedszkole
mx500
Witam wszystkich
Jestem dosyć świeża w php, jeśli tak można napisać.
Mam pewien problem, być może trywialny. Otóż mam aplikację, która wyświetla ankietę. Możliwe odpowiedzi pobieram z bazy danych i wyświetlam w postaci checkbox opis (dana odpowiedź). Z tym nie mam problemu.

Ale chciałabym zrobić coś takiego, że obok checkboxa z odpowiedzią, wyświetla się input, do którego można coś wpisać i razem z głosem wartość tego inputa jest zapisywana do bazy. Wyświetlanie inputa obok checkboxa to żaden problem, tylko nie wiem jak rozwiązać problem wspólnego zapisu, jak zrobić, żeby dany input był przyporządkowany do tego właśnie checkboxa i potem razem z oddanym głosem do jednego rekordu zapisany?

Zapis samych głosów, czyli zaznaczonych checkbox'ów mam:
  1. foreach($_POST['glos'] as $value){
  2. if (isset($_POST['glos']) && !empty($_POST['glos']))
  3. mysql_query("INSERT INTO `glosy` (id_glosu) VALUES ('$value')")
  4. or die('Błąd zapytania: '.mysql_error());
  5. }
  6. else
  7. {return false;}
  8. }



Pozdrawiam smile.gif
Andrzej.W.
A możesz wrzucić wynik
  1. var_dump($_POST);
z przykładowym zaznaczeniem checkboxa i jakimś tekstem w inpucie?
1. Dla 1 zaznaczonej opcji.
2. Dla dwóch zaznaczonych opcji(jeśli jest taka możliwość)

ogółem, przykładowe połaczenie:
  1. $a=$_POST['checkbox'].','.$_POST['input'];


Jako selektora użyłem przecinka, ale to może być np. średnik lub też spacja, lub inny znak, koniecznie pomiędzy apostrofami i kropka za 1 $_POST i przed drugim $_POST
Pozdrawiam.
Andrzej.
mx500
Sorki nie miałam kiedy zajrzeć na forum.
Właśnie chodzi o to, że nie wiem jak się do tego zabrać, żeby ten input przekazywać razem z checkboxem.
Jeśli chodzi o checkboxa:
  1. echo "<input type=\"checkbox\" name=\"glos[]\" value=".$row['id']. ">".$row['dzien']."";


'id' to id rekordu, w którym umieściłam datę, czyli 'dzień'.
Wszystkie zaznaczone checkboxy wysyłam jako tablicę:
  1. foreach($_POST['glos'] as $value){
  2. if (isset($_POST['glos']) && !empty($_POST['glos']))
  3. {if($value == $_POST[''])
  4. mysql_query("INSERT INTO `glosy_dni` (id_dnia) VALUES ('$value')")
  5. or die('Błąd zapytania: '.mysql_error());
  6. }
  7. else
  8. {return false;}
  9. }


A chciałabym dodawać:
"INSERT INTO `glosy_dni` (id_dnia,kto) VALUES ('$value','$_POST['kto']')")
Andrzej.W.
Nie wiem czy dobrze rozumiem, o co Ci chodzi.
Wg. mnie, taki układ formularzy, powinien załatwić sprawę,
  1. <form action="cos.php" method="post">
  2. 1. Które opcje wybierasz?<br>
  3. Opcja numer 1: <input type="checkbox" name="opcja[1][0]" value="zero" ><br>
  4. Opcja numer 2: <input type="checkbox" name="opcja[1][1]" value="jeden"><br>
  5. Uzasadnij swój wybór: <input type="text" name="pytanie[1]"><br>
  6.  
  7. 2. Które opcje wybierasz ?<br>
  8. Opcja numer 1: <input type="checkbox" name="opcja[2][0]" value="zero" ><br>
  9. Opcja numer 2: <input type="checkbox" name="opcja[2][1]" value="jeden"><br>
  10. Uzasadnij swój wybór: <input type="text" name="pytanie[2]">
  11. <input type="submit" value="wyślij">
  12. </form>



W tym przypadku każdy checkbox jest elementem tablicy odpowiednio
dla pyt 1
opcja[1][0]
opcja[1][1]
input tekstowy ma postac
pytanie[1]
  1. $zmienna_do_bazy=$opcja[1][0].'|'.$opcja[1][1].''.$pytanie[1];

To jest klucz do rozpracowania $_POST smile.gif

Wówczas można to przerobić następująco:
  1.  
  2. for($i=1 ; $i<=count($_POST['opcja']) ; $i++)
  3. {
  4. $zmienna_do_bazy=$_POST['opcja'][$i][0].'|'.$_POST['opcja'][$i][1].'|'.$_POST['pytanie'][$i];
  5. echo $zmienna_do_bazy.'<br>';
  6. }


Co do filtrowania tego i warunkowania, to już musisz pokombinować.smile.gif
Pozdrawiam.
Andrzej.
mx500
A dziękuję na pewno coś mi to pomoże!
Andrzej.W.
Ja myślę! smile.gif, kiedyś jak przeglądałem tutoriale html, czytałem wywód o checkbox, dość rozległy, ale dopiero jak przeczytałem o Twoim problemie znalazłem zastosowanie, zatem pierwszy raz użyłem tablic w "name" inputa. owyższy kod działa, sprawdzone, kwestia dostosowania do potrzeb tylko. smile.gif

źródło inspiracji
mx500
Tzn. jeśli chodzi o zastosowanie tablic w name, już to wypróbowałam jakiś czas temu, ale z tymi kluczami trochę mam problem (zapewne nie do końca to rozumiem i muszę nad tym porozmyślać wink.gif )
Przeanalizuję jeszcze raz co mi napisałeś i spróbuję rozwiązać swój problem.
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.