Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql]problem z formularzem w pętli
marbi
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 17.12.2009

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


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

Ten post edytował marbi 12.03.2015, 08:42:20
Go to the top of the page
+Quote Post
com
post
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


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
Go to the top of the page
+Quote Post
marbi
post
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 17.12.2009

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


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
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Użyj tablic.
Go to the top of the page
+Quote Post
marbi
post
Post #5





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 17.12.2009

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


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

Ten post edytował marbi 12.03.2015, 13:55:41
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #6





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


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);
Go to the top of the page
+Quote Post
ikssde
post
Post #7





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

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


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.

Ten post edytował ikssde 12.03.2015, 14:54:24
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: 19.08.2025 - 05:03