Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]problem z formularzem w pętli
Forum PHP.pl > Forum > Przedszkole
marbi
Witam,
z bazy pobieram rekord z pytaniami i odpowiedziami, a, b, c, d i obok każdej odpowiedzi mam chceckbox, który ma zostać zaznaczony przez czytelnika jako poprawna odpowiedź.

  1. printf("<form id=\"form1\" name=\"form1\" method=\"post\" action=\"processor.php\">");
  2. while($row = mysqli_fetch_row($result))
  3. {
  4. printf ("Pytanie: %s<br />", $row[0]);
  5. printf ("<input type=\"checkbox\" name=\"a\" id=\"a\" />Odpowiedz A: %s<br />", $row[1]);
  6. printf ("<input type=\"checkbox\" name=\"b\" id=\"b\" />Odpowiedz B: %s<br />", $row[2]);
  7. printf ("<input type=\"checkbox\" name=\"c\" id=\"c\" />Odpowiedz C: %s<br />", $row[3]);
  8. printf ("<input type=\"checkbox\" name=\"d\" id=\"d\" />Odpowiedz D: %s<br />", $row[4]);
  9. printf ("<br />");
  10. }
  11. printf ("<input type=\"submit\" value=\"Submit\" />");
  12. printf ("</form>");
  13. mysqli_free_result($result);
  14. }


Problem polega na tym, że jak mam w bazie danych 10 pytań to w pętli mam zawsze 1 odpowiedź - wynik formularza jest jeden bez znaczenia ile na stronie jest pokazanych pytań co jest zrozumiałe. Proszę o pomoc w jaki sposób zidentyfikować pola formularza żeby każde było pod inną nazwą po wyniku z pętli. Chciałbym uniknąć umieszczania checkbox na dole pod pytaniami gdyż forma kiedy czytelnik obok pytania ma pole do zaznaczenia jest wygodniejsza.
Pozdrawiam
com
dla każdego obrotu pętli zmieniasz tylko name, skoro checkbox to patrz przykład
http://www.w3schools.com/html/tryit.asp?fi...ryhtml_checkbox

A name ustaw po prostu np jako p1, p2 ale to dynamicznie w pętli czyli będziesz zwiększał indexy smile.gif
marbi
no właśnie nie wiem jak dynamicznie to zmienić, np żeby nazwa zmieniała się p1, p2, p3
mógłbyś pokazać przykład kodu?
pozdr
mmmmmmm
Użyj tablic.
marbi
zrobiłem to tak:
  1. printf("<form id=\"form1\" name=\"form1\" method=\"post\" action=\"processor.php\">");
  2. $i = 5;
  3. while($row = mysqli_fetch_row($result))
  4. {
  5. printf ("Pytanie: %s<br />", $row[0]);
  6. printf ('<input type="checkbox" name="a'.($i++).'" id="b" />Odpowiedz A: %s<br />', $row[1]);
  7. printf ("<input type=\"checkbox\" name=\"b\" id=\"b\" />Odpowiedz B: %s<br />", $row[2]);
  8. printf ("<input type=\"checkbox\" name=\"c\" id=\"c\" />Odpowiedz C: %s<br />", $row[3]);
  9. printf ("<input type=\"checkbox\" name=\"d\" id=\"d\" />Odpowiedz D: %s<br />", $row[4]);
  10. printf ("<br />");
  11. }
  12.  
  13. printf ("<input type=\"submit\" value=\"Submit\" />");
  14. printf ("</form>");
  15. mysqli_free_result($result);
  16. }
  17. mysqli_close($link);

dzięki temu otrzymałem pola o nazwie a5,a6,a7
dziękuję i pozdrawiam
mmmmmmm
Ale nadal masz błędy. Na stronie (teoretycznie) będziesz miał checkboxów o nazwie="b" i id="b", tyle ile rekordów zwróci ci zapytanie. A to jest źle. Pisałem - Użyj tablic. Czyli :
  1. printf("<form id=\"form1\" name=\"form1\" method=\"post\" action=\"processor.php\">");
  2. $i = 5;
  3. while($row = mysqli_fetch_row($result))
  4. {
  5. printf ("Pytanie: %s<br />", $row[0]);
  6. printf ('<input type="checkbox" name="a['.($i).']" id="b" />Odpowiedz A: %s<br />', $row[1]);
  7. printf ("<input type=\"checkbox\" name=\"b[".($i)."]\" id=\"b\" />Odpowiedz B: %s<br />", $row[2]);
  8. printf ("<input type=\"checkbox\" name=\"c[".($i)."]\" id=\"c\" />Odpowiedz C: %s<br />", $row[3]);
  9. printf ("<input type=\"checkbox\" name=\"d[:.($i)."]\" id=\"d\" />Odpowiedz D: %s<br />", $row[4]);
  10. printf ("<br />");
  11. $i++;
  12. }
  13.  
  14. printf ("<input type=\"submit\" value=\"Submit\" />");
  15. printf ("</form>");
  16. mysqli_free_result($result);
  17. }
  18.  
  19. mysqli_close($link);
ikssde
Jak przetworzysz potem te wyniki? Nadal masz ten sam problem z pozostałymi odpowiedziami.

@edit

Nie sądzisz, że powinien grupować raczej po pytaniu, a nie po odpowiedziach? W tym momencie w wyniku dostanie cztery tablice z identyfikatorami pytań w których padły dane odpowiedzi, a zgodnie z logiką powinien dostać tablicę pytań z odpowiedziami, które w nich padły.
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.