nevar
7.05.2006, 13:33:24
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
<?
include ("baza.php");
$wynik = mysql_query("select * from quiz ORDER BY RAND() LIMIT 3;"); {
$i=1;
print '<form ENCTYPE="multipart/form-data" action="wynik.php" method="post" target="">'; print '<INPUT TYPE="hidden" name="id" value='.$id.'>'; {
print '<font face="Arial" size="3">'.$i.'.</font>'; print '<font face="Arial" size="3">'.$pytanie['pyt'].'</font><br>'; print '<font face="Arial" size="2"><input type="radio" name=p'.$pytanie['id'].' value="a" />'.$pytanie['odpa'].'<br></font>'; print '<font face="Arial" size="2"><input type="radio" name=p'.$pytanie['id'].' value="b" />'.$pytanie['odpb'].'<br></font>'; print '<font face="Arial" size="2"><input type="radio" name=p'.$pytanie['id'].' value="c" />'.$pytanie['odpc'].'<br></font>'; $i++;
}
print '<INPUT class=normalne TYPE="submit" VALUE="WYNIK">'; }
?>
wynik.php
<?
include ("baza.php");
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>..::Quiz::..</title>
</head>
<body>';
$w=0;
while (list
($key, $val) = each ($HTTP_POST_VARS)) {
{
$wynik = mysql_query('select * from quiz where odppraw="'.$val.'" and id='.substr($key,1,6).';'); {
$w++;
}
}
}
mysql_query('update wynik set id_user="'.$id.'",wynik='.$w.';');
<table align="center" cellspacing="20" width="500">
<tr >
<td><center><font face="Arial" size="4" color="green">Twoja liczba poprawnych odpowiedzi to: '.$w.'</font></center></td>
</tr>
<tr>
<td><center><a href="index.html"><font face="Arial" size="3">Strona Główna</font></a></font></center></td>
</tr>
</table> ';
?>
Master Miko
7.05.2006, 14:39:30
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
7.05.2006, 15:04:34
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
7.05.2006, 15:29:43
Przede wszystkim
zmień:
<?php
mysql_query('update wynik set id_user="'.$id.'",wynik='.$w.';');
?>
na
<?php
mysql_query('update wynik set wynik='.$w.' where id_user = "'.$id.'" LIMIT 1;');
?>
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
7.05.2006, 15:51:56
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
7.05.2006, 16:36:08
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
7.05.2006, 16:49:11
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
7.05.2006, 16:50:25
no to podaj jakieś dane o tej sesji.. np. jak nazywają się jej parametry i jakie wartości przyjmują...
nevar
7.05.2006, 16:55:02
tak wygląda ten skrypt logowania:
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
<meta http-equiv="Content-Language" content="pl">
<meta name="Author" content="Przemek">
</head>
<?
$mysql_host = "localhost";
$mysql_login = "user";
$mysql_haslo = "haslo";
$mysql_baza = "baza";
$mysql_tabela = "logowanie";
//wylogowanie i zalogowanie z ustaleniem sesji
$login = $_POST["login"];
$haslo = $_POST["haslo"];
if ($_GET["login"]=="koniec") { // wylogowanie
} else if ($login<>"" and $haslo<>"") {
if ($baza = mysql_connect($mysql_host, $mysql_login, $mysql_haslo)) { login='$login' and haslo='$haslo' and status=5");
$_SESSION["zalogowany"]="tak";
$_SESSION["login"]=$dane["login"];
$_SESSION["imie"]=$dane["imie"];
$_SESSION["email"]=$dane["email"];
}
} else echo "Nie można połączyć się z bazą"; }
}
?>
<center><img border="0" src="tap-las.gif" width="90%" height="91"></center>
<table border="0" width="90%" bgcolor="#6493BF" align="center">
<tr><td valign="top" width="200">
<p>
<b></b>
</p>
<?
//panel formularza do zalogowania i wylogowania
if ($_SESSION["zalogowany"]=="tak") {
echo "<p>Witaj <b>".$_SESSION["login"]."</b></p>"; echo "<br><a href=\"logowanie.php?login=koniec\">Wyloguj się</a>"; echo "<br><br><a href=\"index.html\">Strona Główna</a>"; }
else
{
<b><font face="Arial">Logowanie do Quizu</font></b><br><br>
<form action="logowanie.php" method="post">
<table>
<tr>
<td align="right">login: </td>
<td><input type="text" name="login" /></td>
</tr>
<tr>
<td align="right">hasło: </td>
<td><input type="password" name="haslo" /></td>
</tr>
<tr>
<td colspan="2" align="right">
<input type="submit" value="zaloguj" /></td>
</tr>
</table>
</form>
<a href="rejestracja.php">ZAREJESTRUJ SI!</a><br>
<a href="admin.php">Zaloguj jako admin</a><br>
<a href="index.html">Strona Główna</a><br>
';
}
?>
</td><td valign="top" height="200">
<p>
QUIZ
</p>
<p>
</p>
<?
if ($_SESSION["zalogowany"]=="tak") {
include ("quiz.php");
}
?>
</td>
<tr>
</table>
</html>
kwiateusz
7.05.2006, 17:33:07
czyzby to mialo tak wygladac ?
<?php
mysql_query('update wynik set wynik='.$w.' where id_user = "'.$_SESSION['login'].'" LIMIT 1;'); ?>
zakladajac ze w polu id_user przechowujesz loginy uzytkownikow a nie ich numerki ...
nevar
7.05.2006, 18:09:04
Zmieniłem to trochę i teraz wygląda to tak:
<?
include ("baza.php");
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>..::Quiz::..</title>
</head>
<body>';
$w=0;
while (list
($key, $val) = each ($HTTP_POST_VARS)) {
{
$wynik = mysql_query('select * from quiz where odppraw="'.$val.'" and id='.substr($key,1,6).';'); {
$w++;
}
}
}
$login = $_SESSION['login'];
$pkt = "UPDATE logowanie SET wynik='.$w.' where login = '$login' LIMIT 1;";
<table align="center" cellspacing="20" width="500">
<tr >
<td><center><font face="Arial" size="4" color="green">Twoja liczba poprawnych odpowiedzi to: '.$w.'</font></center></td>
</tr>
<tr>
<td><center><a href="index.html"><font face="Arial" size="3">Strona Główna</font></a></font></center></td>
</tr>
</table> ';
?>
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
7.05.2006, 18:30:31
Przeczytaj kod zanim umieścisz...
LINIA 28: '.$w.' powinno być '$w'
nevar
7.05.2006, 18:35:22
Zmieniłem ale dalej nie działa:( Wyswietla ile jest poprawnych odpowiedzi ale nie przypisuje do bazy
Master Miko
7.05.2006, 18:43:16
A jesteś zalogowany? spróbuj...:
<?php
if(isset($_SESSION['login'])) { $login = $_SESSION['login'];
$pkt = "UPDATE logowanie SET wynik='.$w.' where login = '$login' LIMIT 1;";
} else {
echo "Nie jesteś zalogowany!"; }
?>
nevar
7.05.2006, 19:00:49
No faktycznie wyświetla mi, że nie jestem zalogowany.. więc co mam zrobić żeby i tu odczytywało, że jestem zalogowany?
Master Miko
7.05.2006, 19:07:02
Zaloguj się przez skrypt login!!

(a jak nie możesz, to go pokaż)
nevar
7.05.2006, 19:18:28
Ten skrypt logowania podałem wyżej
Master Miko
7.05.2006, 21:08:28
tam gdzie jest:
<?php
$_SESSION["zalogowany"]="tak";
$_SESSION["login"]=$dane["login"];
$_SESSION["imie"]=$dane["imie"];
$_SESSION["email"]=$dane["email"];
}
?>
daj jescze
<?php
echo "Jesteś zalogowany";
?>
bo Cię skrypt chyba nie loguje :/
nevar
7.05.2006, 21:34:03
Gdyby nie logowało to chyba nie spełniłoby warunku np:
<?php
if ($_SESSION["zalogowany"]=="tak") {
echo "<p>Witaj <b>".$_SESSION["login"]."</b></p>"; echo "<br><a href=\"logowanie.php?login=koniec\">Wyloguj się</a>"; echo "<br><br><a href=\"index.html\">Strona Główna</a>"; ?>
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.