Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Sprawdzanie wypełnienia radio boxów
Forum PHP.pl > Forum > Przedszkole
NajpierwSieNaucz
Witam!

Napisałem wyświetlanie pytań do quizu w zależności od naszych przywilejów więc ilość pytań może być różna. Kod wyświetlania pytań:
  1. SELECT pytania.tresc,odpowiedzi.odp_1,odpowiedzi.odp_2,odpowiedzi.odp_3 FROM pytania INNER JOIN odpowiedzi ON pytania.id = odpowiedzi.id_pytania AND pytania.id_kat <= (zmienna z php)


Mogę na stronie wynikowej metodą $_POST sprawdzić czy zaznaczyliśmy jakiegoś radio boxa przy użyciu np !isset, aczkolwiek jezeli ktoś odpowie na połowe pytań ów rozwiązanie się nie przyda. Móglbym zliczać ilośc wierszy wynikowych z sql i sprawdzić czy na stronie wynikowej ta ilość się zgadza, pytanie brzmi: Czy można sprawdzić na stronie wyświetlającej pytania czy wszystkie radio boxy zostały zaznaczone?


Dziękuję pozdrawiam.
kamilo818
  1. $('input:radio').each(function () {
  2.  
  3. var $this = $(this),
  4.  
  5. if ($(this).prop('checked')) {
  6. console.log('checked');
  7. }else{
  8. console.log('unchecked');
  9. break;
  10. }
  11.  
  12. });
  13.  


Sprawdza po kolei kazdego radio i gdy jest zaznaczony wyswietla 'checkd' a jesli nie jest zaznaczony przerywa funkcję i wyswietla 'unchecked'.
Pyton_000
1. Możesz sobie zapisać w polu hidden ile masz pytań i po przesłaniu sprawdzić wy wywalić błąd z powrotem na poprzednią stronę
2. Możesz po przesłaniu wykonać jeszcze raz zapytanie o te pytania do BD które zliczy i porówna j.w.

Dodatkowo w JS sprawdzasz czy dla każdej grupy radio jest zaznaczony jakiś radio, jak nie to alert

@up. To nie zadziała bo wywali się na pierwszym nie zaznaczonym radio,a tu chodzi o zaznaczenie w ramach grupy pytania
kamilo818
Cytat(NajpierwSieNaucz @ 28.08.2014, 23:40:03 ) *
pytanie brzmi: Czy można sprawdzić na stronie wyświetlającej pytania czy wszystkie radio boxy zostały zaznaczone?


Czyli jak sie wywali na pierwszym nie zaznaczonym to dobrze. Jeśli jest chociaz jeden nie zaznaczony to znaczy, że wszstkie radio boxy nie zostaly zaznaczone.

Poza tym mozna usunąć break i pojdzie dalej.
Pyton_000
Nie. Przy Twoim rozwiązaniu wywali się już na pierwzej linijce:
  1. <input type="radio" name="pytanie1" value="cos">
  2. <input type="radio" name="pytanie1" value="cos">
  3. <input type="radio" name="pytanie1" value="cos" checked="checked">
  4. <input type="radio" name="pytanie1" value="cos">
  5.  
  6. <input type="radio" name="pytanie2" value="cos1">
  7. <input type="radio" name="pytanie2" value="cos1">
  8. <input type="radio" name="pytanie2" value="cos1" checked="checked">
  9. <input type="radio" name="pytanie2" value="cos1">
  10.  
  11.  
  12. <input type="radio" name="pytanie3" value="cos3">
  13. <input type="radio" name="pytanie3" value="cos3">
  14. <input type="radio" name="pytanie3" value="cos3">
  15. <input type="radio" name="pytanie3" value="cos3">


A ma się wywalić na grupie "pytanie3"
kamilo818
W takim przypadku oczywiście masz rację.
Ale to wystarczy trochę zmodyfikować funkcję i bedzię ok smile.gif
Np dla każdej grupy oddzielną funkcję po name

  1. $('input[name="pytanie1"]').each(function () {
  2.  
  3. var $this = $(this),
  4.  
  5. if ($(this).prop('checked')) {
  6. console.log('checked');
  7. break;
  8. }else{
  9. console.log('unchecked');
  10. }
  11.  
  12. });


Wszystko zależy od tego jak kod wygląda.
NajpierwSieNaucz
Chciałem zrobić jak Panowie zaproponowali z tym, że:

  1. function testuj()
  2. {
  3.  
  4. $('input[name="$data[0]"]').each(function () {
  5.  
  6. var $this = $(this),
  7.  
  8. if ($(this).prop('checked')) {
  9. console.log('checked');
  10. break;
  11. }else{
  12. console.log('unchecked');
  13. }
  14.  
  15. });
  16.  
  17. }


Nie będzie działać ze względu na to, że $data[0] jest w pętli:

  1. $result = mysql_query($sql.$priwlages);
  2.  
  3. while ($data = mysql_fetch_row($result)) {
  4.  
  5.  
  6. echo "<b>Pytanie $data[0]:</b><br>
  7. <input type='radio' name='$data[0]' value='$data[1]'>$data[1]<br>
  8. <input type='radio' name='$data[0]' value='$data[2]'>$data[2]<br>
  9. <input type='radio' name='$data[0]' value='$data[3]'>$data[3]<br>";}
  10.  
  11. }else { echo ("<center>WYBIERZ PAN ŻESZ PRZYWILEJE</center></br>");}
  12.  


Jakieś sugestie?
kamilo818
Nie możesz podać jako name $data[0]. Musi to byc wartość która sie pod nią kryje.
Możesz na poczatku zaczynać wszystkie wartość z $data[] i wpisać je do tabeli. Pózniej w pętli po kolei je wpisywać w wartość name.
trueblue
$('input[name="data[0]"]')
NajpierwSieNaucz
Okej Panowie!

Teraz zliczam sobie ilość zaznaczonych radio boxów w taki sposób:

  1. function showTime() {
  2.  
  3. var inputs = document.getElementById("form").elements;
  4. var count = 0;
  5. for (var i = 0; i < inputs.length; i++) {
  6. if (inputs[i].type == 'radio' && inputs[i].checked) {
  7. count++;
  8. }
  9. }
  10.  
  11.  
  12. alert(count);
  13.  
  14. }


Teraz pytanie jak zliczyć ilość pytań w javaskrypcie? W pętli while mam zmienną aczkolwiek trzeba ją przenieść a php a javascript to inne client-server side operacje.

@
Zapomniałem dodać,że inputs nie zwraca wartości.
kamilo818
Pokaż kod.

Albo jak masz już ilosc w php to np wpisz ją do ukrytego pola input i pobierz ją tak:

  1. <input type="hidden" class="ilosc" value="13"/>
  2.  
  3. <script>
  4. var ilosc = $('input.ilosc').value();
  5. </script>
  6.  
Mixer
Tak ci będzie najwygodniej, kolega wyżej ma rację.
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.