Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL][PHP]Odczyt wartości z checkboxów i zapis do bazy.
mokater
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 8.01.2013

Ostrzeżenie: (0%)
-----


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 !

Ten post edytował mokater 8.01.2013, 09:55:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
--pianta_d--
post
Post #2





Goście







Witam

Temat: HTMLPHPMulti Checkbox w formularzu

pozdrawiam
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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. }


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
mokater
post
Post #4





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 8.01.2013

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
kristaps
post
Post #5





Grupa: Zarejestrowani
Postów: 279
Pomógł: 36
Dołączył: 1.03.2012

Ostrzeżenie: (0%)
-----


$_POST to tablica, więc:

  1. echo $_POST['answer']['odp4'];


Ten post edytował kristaps 28.01.2013, 17:28:12
Go to the top of the page
+Quote Post
mokater
post
Post #6





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 8.01.2013

Ostrzeżenie: (0%)
-----


Hmmm napewno tak ma być bo coś mi nie działa.
Wyskuje mi błąd
  1. Notice: Undefined index: odp4 in...


Ten post edytował mokater 28.01.2013, 23:38:30
Go to the top of the page
+Quote Post
kristaps
post
Post #7





Grupa: Zarejestrowani
Postów: 279
Pomógł: 36
Dołączył: 1.03.2012

Ostrzeżenie: (0%)
-----


100%, coś robisz nie tak. Najlepiej wrzuć kod.

Ten post edytował kristaps 28.01.2013, 23:49:31
Go to the top of the page
+Quote Post
mokater
post
Post #8





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 8.01.2013

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
kristaps
post
Post #9





Grupa: Zarejestrowani
Postów: 279
Pomógł: 36
Dołączył: 1.03.2012

Ostrzeżenie: (0%)
-----


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'];


Ten post edytował kristaps 29.01.2013, 04:51:45
Go to the top of the page
+Quote Post
mokater
post
Post #10





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 8.01.2013

Ostrzeżenie: (0%)
-----


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ć ?

Ten post edytował mokater 9.02.2013, 11:04:12
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 09:05