Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL][PHP]Odczyt wartości z checkboxów i zapis do bazy.
Forum PHP.pl > Forum > Przedszkole
mokater
Witam.
Mam pewien problem z odczytem wartości z checkboxów i zapisem ich w bazie danych.

Na wstępie opiszę problem.

Mam dwie tabele: pytanie (idPytanie,tresc,odp1,odp2,odp3,odp4,idTest) oraz odpowiedzi(idOdpowiedz,idPytanie,tresc).
Otóż mam formularz w którym dodaje pytanie do wybranego testu.
Wygląda to tak:

Użytkownik wypełnia treść pytania oraz treść odpowiedzi a następnie zaznacza, która odpowiedź jest poprawna.
I teraz mam pewien problem.
Wiem, że wartości z checkboxów mam w zmiennej POST i mogę je odczytać, jednakże te, które są zaznaczone mają wartość "on".
Odczytuje je w ten sposób
  1. $odpowiedzi = $_POST['poprawnaOdp'];
  2. foreach ($odpowiedzi as $klucz) {
  3. echo $klucz;
  4. echo "<br />";
  5. }


Tylko teraz pytanie skąd wiadomo, które odp zostało zaznaczone i czy mając te odpowiedzi w tablicy mogę jakoś te dane zapisać w bazie ( mam na myśli tabele odpowiedzi, do której brakuje mi tylko właśnie odpowiedzi którą użytkownik zaznaczył)

Też myślałem aby każdy checkbox miał przypisany wartośc value, ale nie wiem jak później zapisać dane do tabeli.

Pozdrawiam,
PS. jeśli coś nie jasne to napiszcie bo trochę "namotałem: tutaj.
Dzięki !
-pianta_d-
Witam

Temat: HTMLPHPMulti Checkbox w formularzu

pozdrawiam
b4rt3kk
Nie przedstawiłeś najważniejszego, czyli kodu html. Ale ja bym zrobił to tak:

  1. <input type="text" name="answer[odp1]" /><input type="checkbox" name="correct[odp1]" value="yes" /><br/>
  2. <input type="text" name="answer[odp2]" /><input type="checkbox" name="correct[odp2]" value="yes" /><br/>
  3. <input type="text" name="answer[odp3]" /><input type="checkbox" name="correct[odp3]" value="yes" /><br/>
  4. <input type="text" name="answer[odp4]" /><input type="checkbox" name="correct[odp4]" value="yes" /><br/>


Teraz wiesz, który checkbox odpowiada któremu inputowi textowemu, pozostaje interpretacja przesłanych przez użytkownika danych.

  1. foreach ($_POST['answer'] as $key => $value) {
  2. echo 'Odpowiedz: ' . $value . ' czy poprawna? ';
  3. if (isset($_POST['correct'][$key])) echo 'tak'; else echo 'nie';
  4. }
mokater
Hej,
a jak mam tak jak tutaj:
  1. <input type="text" name="answer[odp4]" /><input type="checkbox" name="correct[odp4]" value="yes" /><br/>


To jak mogę wypisać treść tego inputa w php ?
kristaps
$_POST to tablica, więc:

  1. echo $_POST['answer']['odp4'];
mokater
Hmmm napewno tak ma być bo coś mi nie działa.
Wyskuje mi błąd
  1. Notice: Undefined index: odp4 in...
kristaps
100%, coś robisz nie tak. Najlepiej wrzuć kod.
mokater
Formularz wygląda tak:
  1. <form action="dodajTest.php" name="dodajPytanie" method="post">
  2.  
  3. <strong>Wybierz test:</strong>&nbsp;
  4. <?php
  5. $zapytanie = $sql->wykonajZapytanie("SELECT nazwaTestu
  6. FROM test");
  7. ?>
  8.  
  9. <select name="nazwaTestu">
  10. <?php
  11. while ($wiersz = mysql_fetch_assoc($zapytanie)) {
  12. echo "<option value=" . $wiersz['nazwaTestu'] . " name=" . $wiersz['nazwaTestu'] . ">" . $wiersz['nazwaTestu'] . "</option>";
  13. }
  14. ?>
  15. </select>
  16.  
  17. <br />
  18. <strong>Treść</strong>
  19. <input type="text" name="nazwaNowegoPytania" size="56"/>
  20. <br />
  21.  
  22. <strong>Odpowiedź 1:</strong>&nbsp;
  23. <input type="text" name="odpowiedzi[odp1]" />&nbsp;
  24. <input type="checkbox" name="poprawnaOdp[odp1]" value="tak"/> Poprawna Odpowiedź ?
  25.  
  26. <br />
  27.  
  28. <strong>Odpowiedź 2:</strong>&nbsp;
  29. <input type="text" name="odpowiedzi[odp2]" />&nbsp;
  30. <input type="checkbox" name="poprawnaOdp[odp2]" value="tak"/> Poprawna Odpowiedź ?
  31. <br />
  32.  
  33. <strong>Odpowiedź 3:</strong>&nbsp;
  34. <input type="text" name="odp3" />&nbsp;
  35. <input type="checkbox" name="poprawnaOdp[odp3]" value="tak"/> Poprawna Odpowiedź ?
  36. <br />
  37.  
  38. <strong>Odpowiedź 4:</strong>&nbsp;
  39. <input type="text" name="odp4" />&nbsp;
  40. <input type="checkbox" name="poprawnaOdp[odp4]" value="tak" /> Poprawna Odpowiedź ?
  41. <br />
  42. <br />
  43. <input type="submit" name="dodajPytanie" value="Dodaj Pytanie" style="margin-left:160px;"/>
  44. </form>


i później po naciśnięciu przycisku "Dodaj Pytanie" chciałem sobie np wyświetlic 4 odp czy mi wypisze i komunikat pojawiał się taki jak wyżej napisałem.
kristaps
Wcześniej miałeś:
  1. <input type="text" name="answer[odp4]" ...

teraz masz:
  1. <input type="text" name="odp4" ...


także:
  1. echo $_POST['odp4'];
mokater
Ehh racja, dzięki Wielkie za pomoc !.

Hej, mam pewien problem. Otóż napisałem iż po określonym czasie blokuje wszystkie checkboxy i należy wysłać test do oceny.
Blokuje checkboxy poleceniem:
$('.oknoTestu input[type=checkbox]').attr('disabled', true);
Problem polega na tym iż jeżeli wysyłam zablokowane checkboxy to nie wysyłają wartości ze sobą. Jeśli zakomentuje wyżej wymienioną linijkę wszystko działa.
Gdzie może tkwić problem ?

Przykład jednego checkboxa:
  1. <input type='checkbox' id=check1 name=poprawna[] value = "<?php echo $wiersz['odp1'] ?>" /> <?php echo $wiersz['odp1'] ?><br/>


A w takiej pętli dokonuje sprawdzenia checkboxów
  1. foreach ($_POST['poprawna'] as $klucz => $wartosc){
  2. ...
  3. }


Takie komunikaty mi się pojawiają jeśli blokowanie checkboxów działa:
  1. Notice: Undefined index: poprawna in C:\xampp\htdocs\testyEgzaminazyjne\wykonajTest.php on line 229
  2.  
  3. Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\testyEgzaminazyjne\wykonajTest.php on line 229


Czy nikt nie wie jak to należy naprawić ?
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.