Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z odbiorem danych i wykorzystaniem ich w konkretnym celu
Forum PHP.pl > Forum > Przedszkole
djsamiryi
Witam.

Napisałem skrypt który ładnie wyświetla mi pytania i daje możliwość wyboru odpowiedzi A, B, C, D.
  1. <? session_start(); ?>
  2. <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">
  3. <html>
  4. <head>
  5. <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\">
  6. <link rel=\"shortcut icon\" href=\"rec.png\" type=\"image/x-icon\">
  7. <link href=\"css.css\" rel=\"stylesheet\" type=\"text/css\" />
  8. <title>egzamin zawodowy <? $rocznik = $_POST[\'rok\']; echo $rocznik; ?></title>
  9. </head>
  10.  
  11. <?php
  12. $username = \'root\';
  13. $password = \'krasnal\';
  14. $database = \'testy\';
  15. $link = mysql_connect(\'localhost\', $username, $password);
  16. if (!$link) {
  17. die(\'Could not connect: \' . mysql_error());
  18. }
  19. if (!mysql_select_db($database)) {
  20. die(\'Could not select database: \' . mysql_error());
  21. }
  22. ?>
  23.  
  24. <body>
  25.  
  26.  
  27. <form action=\"test2.php\" method=\"post\">
  28.  
  29. <h1 class=\"srodek\">egzamin zawodowy z <? echo $rocznik; ?> roku.</h1>
  30. <br><br>
  31.  
  32.  
  33. <?
  34. $_SESSION[\'rok\'] = $rocznik;
  35. if(!empty($_POST))
  36. {$brak = \"<span class=\\\"b\\\"> Nie wskazano żadnej odpowiedzi. </span>\";}
  37. $l=-1;
  38. $q1 = @mysql_query(\"SELECT k FROM `$rocznik`\");
  39. while($wh=mysql_fetch_row($q1)){
  40. $l++;
  41. };
  42. $q2 = mysql_query(\"SELECT tytul FROM `$rocznik`;\");
  43. $qa1 = mysql_query(\"SELECT A1 FROM `$rocznik`;\");
  44. $qa2 = mysql_query(\"SELECT A2 FROM `$rocznik`;\");
  45. $qa3 = mysql_query(\"SELECT A3 FROM `$rocznik`;\");
  46. $qa4 = mysql_query(\"SELECT A4 FROM `$rocznik`;\");
  47. $qodp = mysql_query(\"SELECT odp FROM `$rocznik`;\");
  48. ?>
  49.  
  50.  
  51. <?
  52. echo $l;
  53. $x=0;
  54. while($x <= $l){
  55. echo \'<table width=\"80%\" style=\"\" cellpadding=\"0\" cellspacing=\"0\" >\';
  56. echo \'<tr>\';
  57. echo \'<td colspan=\"4\" class=\"n\" ><p class=\"p\">\';
  58. echo $x+1;
  59. echo \'. \';
  60. print_r(mysql_result($q2, $x, 0));
  61. echo \'. \';
  62. echo \'</p><br>\';
  63. $prodp = (mysql_result($qodp, $x, 0));
  64. echo $ifka;
  65. echo \'</td></tr><tr>\';
  66. echo \'<td class=\"o\" width=\"25%\"><span class=\"o\">\';
  67. print_r(mysql_result($qa1, $x, 0));
  68. echo \'.</span></td>\';
  69. echo \'<td class=\"o\" width=\"25%\"><span class=\"o\">\';
  70. print_r(mysql_result($qa2, $x, 0));
  71. echo \'.</span></td>\';
  72. echo \'<td class=\"o\" width=\"25%\"><span class=\"o\">\';
  73. print_r(mysql_result($qa3, $x, 0));
  74. echo \'.</span></td>\';
  75. echo \'<td class=\"o\" width=\"25%\"><span class=\"o\">\';
  76. print_r(mysql_result($qa4, $x, 0));
  77. echo \'.</span></td>\';
  78. echo \'</tr><tr>\';
  79. echo \'<td class=\"m\" width=\"25%\"><input type=\"radio\" name=\"\';
  80. $odpx = \"odp$x\";
  81. echo $odpx;
  82. echo \'\" value=\"A\" /><span class=\"m\">A</span></td>
  83. <td class=\"m\" width=\"25%\"><input type=\"radio\" name=\"\';
  84. echo $odpx;
  85. echo \'\" value=\"B\" /><span class=\"m\">B</span></td>
  86. <td class=\"m\" width=\"25%\"><input type=\"radio\" name=\"\';
  87. echo $odpx;
  88. echo \'\" value=\"C\" /><span class=\"m\">C</span></td>
  89. <td class=\"m\" width=\"25%\"><input type=\"radio\" name=\"\';
  90. echo $odpx;
  91. echo \'\" value=\"D\" /><span class=\"m\">D</span></td>\';
  92. echo \'</tr>\';
  93. echo \'</table>\';
  94. $x++;
  95. };
  96.  
  97.  
  98.  
  99.  
  100. ?>
  101. <br><br>
  102. <div class=\"srodek\">
  103.  
  104.  
  105. <h1 style=\"text-align: center;\">
  106. <span style=\"color: red;\">Sprawdź</span> wynik!</h1>
  107. <br>
  108. <span style=\"font-family: arial; font-weight: bold; font-size: 14px;\">Nazywam się: </span>
  109. <input style=\"padding: 2px;\" type=\"text\" maxlength=\"25\" name=\"Nazwa ucznia\" value=\"wpisz...\" />
  110. <br><br>
  111. <input class=\"ok srodek\" type=\"submit\" name=\"Potwierdzenie\" value=\"W Y N I K\"><br>
  112.  
  113.  
  114.  
  115. </form></div>
  116.  
  117.  
  118.  
  119.  
  120.  
  121. </body>
  122.  
  123. </html>

</span>
[/php]
Z tego użyteczna będzie tylko odpowiedź na dane pytanie. Próbuję napisać właśnie skrypt który odbierze prawidłowo wybrane odpowiedzi (to się udało), i zrobi coś w stylu:
- jesli odpowiedź która wybrał użytkownik będzie zgodna z odpowiedzią zapisaną w kolumnie \"odp\" to dodaje wartość do zmiennej $d,
- jeśli odpowiedź będzie błędna to dodaje wartość do zmiennej $z, nie dodając wartości do zmiennej $d i $b,
- jeśli będzie brak jakiejkolwiek odpowiedzi dodaj wartość do zmiennej $b,

Próbowałem pisać coś takiego:
  1. <? session_start(); ?>
  2. <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">
  3. <html>
  4. <head>
  5. <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\">
  6. <link rel=\"shortcut icon\" href=\"rec.png\" type=\"image/x-icon\">
  7. <link href=\"css.css\" rel=\"stylesheet\" type=\"text/css\" />
  8. <title>egzamin zawodowy <? $rocznik = $_POST[\'rok\']; echo $rocznik; ?></title>
  9. </head>
  10.  
  11. <?php
  12. $username = \'root\';
  13. $password = \'krasnal\';
  14. $database = \'testy\';
  15. $link = mysql_connect(\'localhost\', $username, $password);
  16. if (!$link) {
  17. die(\'Could not connect: \' . mysql_error());
  18. }
  19. if (!mysql_select_db($database)) {
  20. die(\'Could not select database: \' . mysql_error());
  21. }
  22. ?>
  23.  
  24. <body>
  25. <?
  26. $rocznik = $_SESSION[\'rok\'];
  27. $x = 0;
  28. $xz = 1;
  29. while($x <= 39){
  30.  
  31. // odbieramy dane z formularza
  32.  
  33. $odp->$x = $_POST[\"odp$x\"];
  34. echo $odp->$x;
  35. echo \'<br>\';
  36. $sql->$x = (\"SELECT odp FROM `$rocznik` WHERE k=$xz;\");
  37. $zap->$x = @mysql_query( $sql->$x, $link);
  38. $rezult->$x = mysql_result($zap->$x, 1);
  39. if($odp->$x == $rezult->$x)
  40. { ++$d; }
  41. else if(isset($odp->$x))
  42. { ++$z; }
  43. else if(empty($odp->$x))
  44. { ++$b; }
  45.  
  46. ++$x;
  47. ++$xz;
  48. };
  49. echo $d;
  50. echo \'<br>\';
  51. echo $z;
  52. echo \'<br>\';
  53. echo $b;
  54.  
  55.  
  56.  
  57. if(! $zap )
  58. {
  59. die(\'Nie można znaleść zapytania: \' . mysql_error());
  60. }
  61.  
  62.  
  63. ?>
  64. </body>
  65. </html>
W różnych wersjach żadna nie działa zbyt dobrze..
póki co potrzebuję pomocy z tą częścią tego kodu.. mozliwe że dalej poradze już sobie sam, bo próbuje juz z 4 dni i stoję w miejscu i brak mi już pomysłow jak to rozwiązać.

Tak wygląda tabela: http://imgur.com/iJzVL22

wrzucam też przykład jak wyglądał stary sposób (który modyfikuje w celu, żeby dane pytań nie były zapisane w plikach php bo co rok edycja jest mozolna, tylko w oparciu o baze danych. ) http://pastebin.com/tJhRgw8i
Z góry dziękuje za pomoc.

NickOver
Skąd Ci się tam wzięła zmienna z klasy? Po pytaniu raczej wątpie żebyś ich używał więc powinno być $odp['x']
Nazywaj zmienne po człowiekowemu
Dziwi mnie sposób w jaki to robisz. Czemu pobierasz od razu wszystko z bazy? (ok, chcesz mieć wszystko na jednejstronie) ale czemu używasz pętli while? Nie lepiej foreach?
Co to za konstrukcja:
++$x?
Nie powinno być czasem $x++?
djsamiryi
Dzieki za odpowiedź

wyjaśnisz może co masz na myśli przez "zmienna z klasy?" Że w sensie ma być mniej wiecej tak?
  1. $odp->$x = $_POST $odp["$x"];


Wszystko co znalazłem na temat foreach trudno mi zastosować jako przykład w tym problemie który ja mam.. mógłbym prosić o pomoc żebyś mnie jeszcze trochę pokierował w tym?

Zmienilem ++$x na $x++ bo w tym przypadku raczej to nie ma większego znaczenia jeśli to jest na końcu pętli... Chyba...
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.