Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][MySql] QUIZ
Forum PHP.pl > Forum > Przedszkole
sspawlik
Witam. Mam problem i nie wiem od czego zacząć. Mam skrypt do prowadzenia testu-quizu oparty na pliku tekstowym, a chciałbym aby takowy działał przy pomocy bazy MySql.

KOd
Kod
<?
$pytania = file("test001.txt");

$k5 = "<b>GRATULACJE!</b> <br />Twoja wiedza jest imponująca!";
$k4 = "Bardzo dobrze. Jeszcze trochę wysiłku i zostaniesz mistrzem!";
$k3 = "Poszło Ci przeciętnie. Koniecznie musisz wzbogacić swoją wiedzę!";
$k2 = "Oj... słabo. Pora nadrobić braki i uzupełnić swoje wiadomości!";
$k1 = "To nie były dobre odpowiedzi. Musisz się bardziej przyłożyć!";

$f = $_POST["f"];
$wyniki = $_POST["wyniki"];
srand((double)microtime()*1000000);

if ($wyniki>0) {
  $ile = count($pytania); $dobre=0;
  for ($o=0; $o<$ile;$o++) if ($f[$o]==1) $dobre++;
  $srednia = sprintf("%2d",($dobre/$ile)*100);
  echo "<center>Poprawne odpowiedzi: $dobre z $ile. ";
  echo "Zaliczone $srednia procent testu.<p>";
  if ($srednia<=25) echo $k1;
  if ($srednia>25 && $srednia<=50) echo $k2;
  if ($srednia>50 && $srednia<=75) echo $k3;
  if ($srednia>75 && $srednia<=99) echo $k4;
  if ($srednia==100) echo $k5;
  echo "</center>";
} else {
  echo "<form action=\"index.php\" method=\"post\">";
  echo "<input type=\"hidden\" name=\"wyniki\" value=\"1\" />";
  $ile = count($pytania);
  for($i=0;$i<$ile;$i++) {
    $nr = array_rand($pytania);
    $tmp = $pytania[$nr];
    $pytania[$nr] = $pytania[count($pytania)-1];
    $pytania[count($pytania)-1] = $tmp;
    $pyt = explode("`", array_pop($pytania));
    echo "<p><b>"; echo $i+1; echo ". $pyt[0] </b><br>";
    for ($b=1;$b<=count($pyt)-1;$b++)
      $odp[]="<input type=radio name=\"f[$i]\"
               value=\"$b\" />$pyt[$b]<br />";
    $ileodp=count($odp);
    for($io=0;$io<$ileodp;$io++) {
      $nr=array_rand($odp);
      $tmp=$odp[$nr];
      $odp[$nr]=$odp[count($odp)-1];
      $odp[count($odp)-1]=$tmp;
      echo array_pop($odp);
    }
  }
  echo "<center><input type=submit value=\" Gotowe! \" /></center></form>";
}
?>


a tak wygląda plik tekstowy - baza z pytaniami
test001.txt
Kod
Jakie miasto jest stolicą Polski?`Warszawa`Poznań`Kraków`Płock
Kiedy była bitwa pod Grunwaldem?`1410`1456`1520`1100`nigdy jej nie było!
Najbardziej znana mysz?`Miki`Mia
Co to jest PHP?`język programowania`bohater kreskówki`marka kotłów parowyc


gdzie poprawna odpowiedź jest zaraz za pytaniem, pytania i odpowiedzi są oddzielane znacznikiem " ' " .

Potrafię dodawać nowe rekory do bazy i je aktualizować czy usuwać. Pytanie moje brzmi jak ma wyglądać kod php który się połączy z bazą i wyciagnie pytania i odpowiedzi tak aby się zintegrował z pozostałym kodem w skrypcie.
Pozdrawiam.
kfc4
mysqli A baza: tabela pytania: |id|pytanie|, tabela odpowiedzi |id_pytania|odpowiedz|właściwa|

Jak już wszystko powciągasz to zamieniasz na tablicę i operujesz całkiem podobnie na niej.
sspawlik
Cytat(kfc4 @ 16.09.2009, 20:26:16 ) *
mysqli A baza: tabela pytania: |id|pytanie|, tabela odpowiedzi |id_pytania|odpowiedz|właściwa|

Jak już wszystko powciągasz to zamieniasz na tablicę i operujesz całkiem podobnie na niej.


hmm myślałem nad tym że można by było utworzyć w tabeli rekord: id|pytanie-odpowiedź : gdzie pytanie odpowiedź miało by taki sam wygląd jak w pliku tekstowym, ale nie wiem czy to zadziała i nie wiem jak odwołać się w tym skrypcie do bazy?
kfc4
Jak tak bardzo chcesz trzymać wszystko w bazie, i całość ma być bardzo podobne to możesz tak zrobić: w tabeli tylko |pytanie-odpowiedz|. Schemat identyczny. Wyciągasz to z bazy, zamieniasz na tablice, i masz to samo co masz teraz. Tylko czy to będzie dobre?
sspawlik
Cytat(kfc4 @ 16.09.2009, 20:51:12 ) *
Jak tak bardzo chcesz trzymać wszystko w bazie, i całość ma być bardzo podobne to możesz tak zrobić: w tabeli tylko |pytanie-odpowiedz|. Schemat identyczny. Wyciągasz to z bazy, zamieniasz na tablice, i masz to samo co masz teraz. Tylko czy to będzie dobre?


Właśnie chciałbym tak zrobić (pytanie-opd). Możesz mi napisac kod php jak to ma wyglądać, bo właśnie z tym mam problem jestem początkującym w tej dziedzinie. A czy to będzie dobre tego nie wiem. Prosze o modyfikację skryptu jak wiesz o co chodzi. Pozdrawiam.
kfc4
Nie, nie napiszę Ci kodu, mogę Ci pomóc go napisać. Napisz czego nie wiesz, czego nie rozumiesz, to ja lub ktoś inny z forum pada Ci potrzebne funkcje i przejrzy powstały kod. A i od razu powiem, że to nie będzie dobre.
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.