Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: quiz
Forum PHP.pl > Forum > Przedszkole
nevar
Witam! Mam takie dwa skrypty: quiz.php i wynik.php
Mam wielką prośbę aby ktoś wytłumaczył mi dokładnie krok po kroku jak działają te skrypty. Sprawa jest bardzo pilna.
Z góry wielkie dzięki!

quiz.php

  1. <?
  2. include ("baza.php"); 
  3. $baza = mysql_connect ($mysql_host, $mysql_user, $mysql_haslo);
  4. mysql_select_db($mysql_baza); 
  5. $wynik = mysql_query("select * from quiz ORDER BY RAND() LIMIT 3;"); 
  6. if (mysql_num_rows ($wynik)>0) 
  7. {
  8. $i=1;
  9. print '<form ENCTYPE="multipart/form-data" action="wynik.php" method="post" target="">';
  10. print '<INPUT TYPE="hidden" name="id" value='.$id.'>';
  11. while($pytanie = mysql_fetch_array($wynik)) 
  12. {
  13. print '<font face="Arial" size="3">'.$i.'.</font>';
  14. print '<font face="Arial" size="3">'.$pytanie['pyt'].'</font><br>';
  15. print '<font face="Arial" size="2"><input type="radio" name=p'.$pytanie['id'].' value="a" />'.$pytanie['odpa'].'<br></font>';
  16. print '<font face="Arial" size="2"><input type="radio" name=p'.$pytanie['id'].' value="b" />'.$pytanie['odpb'].'<br></font>';
  17. print '<font face="Arial" size="2"><input type="radio" name=p'.$pytanie['id'].' value="c" />'.$pytanie['odpc'].'<br></font>';
  18. print '<br><hr>';
  19. $i++;
  20. }
  21. print '<INPUT class=normalne TYPE="submit" VALUE="WYNIK">';
  22. print '</form>';
  23. }
  24.  
  25. ?>


wynik.php

  1. <?
  2. include ("baza.php"); 
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
  6. <title>..::Quiz::..</title>
  7. </head>
  8. <body>';
  9. $baza = mysql_connect ($mysql_host, $mysql_user, $mysql_haslo);
  10. mysql_select_db($mysql_baza);
  11. reset ($HTTP_POST_VARS);
  12. $w=0;
  13. while (list ($key, $val) = each ($HTTP_POST_VARS)) 
  14. {
  15. if (substr($key,0,1)=='p')
  16. {
  17. $wynik = mysql_query('select * from quiz where odppraw="'.$val.'" and id='.substr($key,1,6).';');
  18. if (mysql_num_rows ($wynik)==1)
  19. {
  20. $w++;
  21. }
  22.  
  23. }
  24.  
  25. }
  26. mysql_query('update wynik set id_user="'.$id.'",wynik='.$w.';');
  27.  
  28. print '<br>
  29. <table align="center" cellspacing="20" width="500">
  30. <tr >
  31. <td><center><font face="Arial" size="4" color="green">Twoja liczba poprawnych odpowiedzi to: '.$w.'</font></center></td>
  32. </tr>
  33. <tr>
  34. <td><center><a href="index.html"><font face="Arial" size="3">Strona Główna</font></a></font></center></td>
  35. </tr>
  36. </table> ';
  37.  
  38. print '</body></html>';
  39.  
  40. ?>
Master Miko
quiz.php: Wybiera losowo 3 pytania z bazy danych, wyświetla je, do każdego daje możliwość odpowiedzi a b c. Po kliknięciu submit, dane przekazywane są do pliku wynik.php gdzie są przetwarzane.

wynik.php: skrypt dziwnie pobeira wartości POST, szuka każdego z nich (osobno) w bazie danych, porwónując wyniki. Jeśli odpowiedź dla pytania jest prawidłowa, zmienna $w zwiększa się o 1. Teraz zeminna $w (ilość poprawnych odpowiedzi) zapisywana do bazy danych, ale bardzo dziwnie bo każdemu userowi w tabeli wynik ustawia te same wartości :S ponieważ nie zastosowano WHERE i LIMIT

a czemu się pytasz... to łatwy skrypt.
nevar
No właśnie nie bardzo rozumiem działanie kilku fragmentów, jak je zmienić?
Poza tym chciałbym przerobić go tak żeby najlepszy wynik był zapisywany w tabeli z użytkownikami w polu "pkt" przy właśnie tym użytkowniku który właśnie zalogowany i rozwiązuje ten quiz.
Tabela z użytkownikami nazywa się "logowanie"
Jak powinno wyglądać zapytanie UPDATE?

Proszę o szybką odpowiedź!
Master Miko
Przede wszystkim

zmień:
  1. <?php
  2.  
  3. mysql_query('update wynik set id_user="'.$id.'",wynik='.$w.';');
  4.  
  5. ?>

na
  1. <?php
  2.  
  3. mysql_query('update wynik set wynik='.$w.' where id_user = "'.$id.'" LIMIT 1;');
  4.  
  5. ?>


Nie wiem po co robisz dwie tabele wynik i użytkownicy...
przy update musisz poprostu zrobić kolejne zapytanie sprawdzające ilość tych punktów i je porównać.


poza tym nawet nie wiem jak sprawdzasz jak Twój użytkownik jest zalogowany..
nevar
Tabele wynik jest niepotrzebna mam tylko tabele "logowanie" czy tą z użytkownikami.

Jak w takim razie zrobić żeby sprawdzało jaki użytkownik jest zalogowany?
Master Miko
Zrobić do tego skrypt, najlepiej oparty na sesjach.. Trzeba by do tego zrobić pole logowania, wylogowania, no i system porównywania z bazą danych czy użytkownik istnieje i czy podał dobre hasło - a jeśli użytkownicy to pole do rejestracji. Na forum napewno znajdziesz coś na kształt tego.
nevar
Mam już skrypt do logowania i rejestracji, jest oparty na sesji.
Żeby przejść do tego quizu trzeba być zalogowanym
Chodzi o to żeby teraz wyniki tego quizu były zapisywane przy tym zalogowanym użytkowniku.
Master Miko
no to podaj jakieś dane o tej sesji.. np. jak nazywają się jej parametry i jakie wartości przyjmują...
nevar
tak wygląda ten skrypt logowania:

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  4. <meta http-equiv="Content-Language" content="pl">
  5. <meta name="Author" content="Przemek">
  6. </head>
  7.  
  8. <?
  9.  
  10.  
  11. $mysql_host = "localhost";
  12. $mysql_login = "user";
  13. $mysql_haslo = "haslo";
  14. $mysql_baza = "baza";
  15. $mysql_tabela = "logowanie";
  16.  
  17. //wylogowanie i zalogowanie z ustaleniem sesji
  18.  
  19.  
  20. $login = $_POST["login"];
  21. $haslo = $_POST["haslo"];
  22.  
  23. if ($_GET["login"]=="koniec") { // wylogowanie
  24. } else if ($login<>"" and $haslo<>"") {
  25. $haslo = md5($haslo);
  26. if ($baza = mysql_connect($mysql_host, $mysql_login, $mysql_haslo)) {
  27. if (mysql_select_db($mysql_baza)) {
  28. $wynik=mysql_query("SELECT * FROM $mysql_tabela WHERE
  29. login='$login' and haslo='$haslo' and status=5");
  30. if (mysql_num_rows($wynik)==1) {
  31. $dane=mysql_fetch_array($wynik);
  32. $_SESSION["zalogowany"]="tak";
  33. $_SESSION["login"]=$dane["login"];
  34. $_SESSION["imie"]=$dane["imie"];
  35. $_SESSION["email"]=$dane["email"];
  36. }
  37. } else echo "Nie można połączyć się z bazą";
  38. mysql_close($baza);
  39. }
  40. }
  41. ?>
  42.  
  43. <center><img border="0" src="tap-las.gif" width="90%" height="91"></center>
  44. <table border="0" width="90%" bgcolor="#6493BF" align="center">
  45. <tr><td valign="top" width="200">
  46.  
  47. <p>
  48. <b></b>
  49. </p>
  50.  
  51. <?
  52.  
  53. //panel formularza do zalogowania i wylogowania
  54.  
  55.  
  56. if ($_SESSION["zalogowany"]=="tak") {
  57. echo "<p>Witaj <b>".$_SESSION["login"]."</b></p>";
  58. echo "<br><a href=\"logowanie.php?login=koniec\">Wyloguj się</a>";
  59. echo "<br><br><a href=\"index.html\">Strona Główna</a>";
  60. } 
  61. else 
  62. {
  63.  
  64. <b><font face="Arial">Logowanie do Quizu</font></b><br><br>
  65. <form action="logowanie.php" method="post">
  66. <table>
  67. <tr>
  68. <td align="right">login:&nbsp;</td>
  69. <td><input type="text" name="login" /></td>
  70. </tr>
  71. <tr>
  72. <td align="right">hasło:&nbsp;</td>
  73. <td><input type="password" name="haslo" /></td>
  74. </tr>
  75. <tr>
  76. <td colspan="2" align="right">
  77. <input type="submit" value="zaloguj" /></td>
  78. </tr>
  79. </table>
  80. </form>
  81. <a href="rejestracja.php">ZAREJESTRUJ SI!</a><br>
  82. <a href="admin.php">Zaloguj jako admin</a><br>
  83. <a href="index.html">Strona Główna</a><br>
  84. ';
  85.  
  86. }
  87. ?>
  88.  
  89. </td><td valign="top" height="200">
  90.  
  91. <p>
  92. QUIZ
  93. </p>
  94. <p>
  95. </p>
  96.  
  97. <?
  98. if ($_SESSION["zalogowany"]=="tak") {
  99.  include ("quiz.php");
  100. }
  101.  
  102. ?>
  103. </td>
  104. <tr>
  105. </table>
  106. </html>
kwiateusz
czyzby to mialo tak wygladac ?

  1. <?php
  2. mysql_query('update wynik set wynik='.$w.' where id_user = "'.$_SESSION['login'].'" LIMIT 1;');
  3. ?>


zakladajac ze w polu id_user przechowujesz loginy uzytkownikow a nie ich numerki ...
nevar
Zmieniłem to trochę i teraz wygląda to tak:

  1. <?
  2. include ("baza.php"); 
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
  6. <title>..::Quiz::..</title>
  7. </head>
  8. <body>';
  9. $baza = mysql_connect ($mysql_host, $mysql_user, $mysql_haslo);
  10. mysql_select_db($mysql_baza);
  11. reset ($HTTP_POST_VARS);
  12. $w=0;
  13. while (list ($key, $val) = each ($HTTP_POST_VARS)) 
  14. {
  15. if (substr($key,0,1)=='p')
  16. {
  17. $wynik = mysql_query('select * from quiz where odppraw="'.$val.'" and id='.substr($key,1,6).';');
  18. if (mysql_num_rows ($wynik)==1)
  19. {
  20. $w++;
  21. }
  22.  
  23. }
  24.  
  25. }
  26. $login = $_SESSION['login'];
  27. $pkt = "UPDATE logowanie SET wynik='.$w.' where login = '$login' LIMIT 1;";
  28. $pkt = mysql_query($pkt);
  29.  
  30. print '<br>
  31. <table align="center" cellspacing="20" width="500">
  32. <tr >
  33. <td><center><font face="Arial" size="4" color="green">Twoja liczba poprawnych odpowiedzi to: '.$w.'</font></center></td>
  34. </tr>
  35. <tr>
  36. <td><center><a href="index.html"><font face="Arial" size="3">Strona Główna</font></a></font></center></td>
  37. </tr>
  38. </table> ';
  39.  
  40. print '</body></html>';
  41.  
  42. ?>


Tabela z użytkownikami nazywa sie logowanie, no i tam przy odpowiednim użytkowniku powiniem byc zapisywany ostatni wynik.
Ale to nie działa:(
Master Miko
Przeczytaj kod zanim umieścisz...

LINIA 28: '.$w.' powinno być '$w'
nevar
Zmieniłem ale dalej nie działa:( Wyswietla ile jest poprawnych odpowiedzi ale nie przypisuje do bazy
Master Miko
A jesteś zalogowany? spróbuj...:

  1. <?php
  2.  
  3.  
  4. if(isset($_SESSION['login'])) {
  5. $login = $_SESSION['login'];
  6. $pkt = "UPDATE logowanie SET wynik='.$w.' where login = '$login' LIMIT 1;";
  7. $pkt = mysql_query($pkt);
  8. } else {
  9. echo "Nie jesteś zalogowany!";
  10. }
  11.  
  12. ?>
nevar
No faktycznie wyświetla mi, że nie jestem zalogowany.. więc co mam zrobić żeby i tu odczytywało, że jestem zalogowany?
Master Miko
Zaloguj się przez skrypt login!! biggrin.gif biggrin.gif
(a jak nie możesz, to go pokaż)
nevar
Ten skrypt logowania podałem wyżej
Master Miko
tam gdzie jest:


  1. <?php
  2.  
  3. if (mysql_num_rows($wynik)==1) {
  4. $dane=mysql_fetch_array($wynik);
  5. $_SESSION["zalogowany"]="tak";
  6. $_SESSION["login"]=$dane["login"];
  7. $_SESSION["imie"]=$dane["imie"];
  8. $_SESSION["email"]=$dane["email"];
  9. }
  10.  
  11. ?>

daj jescze
  1. <?php
  2. echo "Jesteś zalogowany";
  3.  
  4. ?>


bo Cię skrypt chyba nie loguje :/
nevar
Gdyby nie logowało to chyba nie spełniłoby warunku np:

  1. <?php
  2. if ($_SESSION["zalogowany"]=="tak") {
  3. echo "<p>Witaj <b>".$_SESSION["login"]."</b></p>";
  4. echo "<br><a href=\"logowanie.php?login=koniec\">Wyloguj się</a>";
  5. echo "<br><br><a href=\"index.html\">Strona Główna</a>";
  6. ?>


Więc chyba z logowaniem jest ok
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.