Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]jak przejść z pliku tekstowego do bazy danych?
gregov0
post
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 14.01.2011
Skąd: Kalisz

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


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.

  1. <?php
  2. $pytania = file("test.txt");
  3.  
  4. $k5 = "Ocena bardzo dobra";
  5. $k4 = "Ocena dobra";
  6. $k3 = "Ocena dostateczna";
  7. $k2 = "Ocena dopuszczajaca!";
  8. $k1 = "Ocena niedostateczna";
  9.  
  10. $f = $_POST["f"];
  11. $wyniki = $_POST["wyniki"];
  12. srand((double)microtime()*1000000);
  13.  
  14. if ($wyniki>0) {
  15. $ile = count($pytania); $dobre=0;
  16. for ($o=0; $o<$ile ;$o++) if ($f[$o]==1) $dobre++;
  17. $srednia = sprintf("%2d",($dobre/$ile)*100);
  18. echo "<center>Poprawne odpowiedzi: $dobre z $ile. ";
  19. echo "Zaliczone $srednia procent testu.<p>";
  20. if ($srednia<25) echo $k1;
  21. if ($srednia>=25 && $srednia<50) echo $k2;
  22. if ($srednia>=50 && $srednia<75) echo $k3;
  23. if ($srednia>=75 && $srednia<99) echo $k4;
  24. if ($srednia==100) echo $k5;
  25. echo "</center>";
  26. echo "<center><input type=submit value=\" zakoncz \"script language=\"javascript\"onClick=\"zamknijOkno()\"></script></center>";
  27.  
  28.  
  29. } else {
  30. echo "<form action=\"index.php\" method=\"post\">";
  31. echo "<input type=\"hidden\" name=\"wyniki\" value=\"1\" />";
  32. $ile = count($pytania);
  33. for($i=0;$i<$ile;$i++) {
  34. $nr = array_rand($pytania);
  35. $tmp = $pytania[$nr];
  36. $pytania[$nr] = $pytania[count($pytania)-1];
  37. $pytania[count($pytania)-1] = $tmp;
  38. $pyt = explode("`", array_pop($pytania));
  39. echo "<p><b>"; echo $i+1; echo ". $pyt[0] </b><br>";
  40. for ($b=1;$b<=count($pyt)-1;$b++)
  41. $odp[]="<input type=radio name=\"f[$i]\"
  42. value=\"$b\" />$pyt[$b]<br />";
  43. $ileodp=count($odp);
  44. for($io=0;$io<$ileodp;$io++) {
  45. $nr=array_rand($odp);
  46. $tmp=$odp[$nr];
  47. $odp[$nr]=$odp[count($odp)-1];
  48. $odp[count($odp)-1]=$tmp;
  49. echo array_pop($odp);
  50. }
  51. }
  52. echo "<center><br><input type=submit value=\" sprawdz \" /></br></center></form>";
  53.  
  54. }
  55. ?>

pytania i odpowiedzi sa w pliku tekstowym

  1. Stolica polski jest?`warszawa`krakow`gniezno`kalisz
  2. 2+2=?`4`2`3`5
  3. 4+8=?`12`10`23`3

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

Moze mi ktos podpowiedziec 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. Dodam jeszce ze test bedzie umieszczony na mojej stronie na ktorej mam juz zastosowane logowanie i rejestracje . Mam tez do tego logowania baze danch z jedna tabela, i teraz niewiem czy utworzyc nowa tabele osobno do testu czy opierac sie na tej samej poniewaz głownym zal witryny jest to ze przykladowa osoba wchodzi na strone loguje sie rozwiazuje test i po rozwiazaniu wynik zapisuje sie do bazy .
Prosze o podpowiedz i pomoc jak to zrealizowac?

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
gregov0
post
Post #2





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 14.01.2011
Skąd: Kalisz

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


ok jesli ma byc od poczatku to mysle ze lepsza opcja bedzie pisanie na priv bo troszke pisania bedzie a niechce wklejak ton htmla na forum
utworzylem baze urzytkownicy
w niej tabele
test
  1. CREATE TABLE `test`(
  2. `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `pytanie` VARCHAR(1000) NOT NULL,
  4. `odpa` VARCHAR(1000) NOT NULL,
  5. `odpb` VARCHAR(1000) NOT NULL,
  6. `odpc` VARCHAR(1000) NOT NULL,
  7. `odpd` VARCHAR(1000) NOT NULL,
  8. `wyniki` INT(10) NOT NULL,
  9. `data` DATETIME NOT NULL,
  10. PRIMARY KEY (`id`)
  11. )
  12. ENGINE=MyISAM DEFAULT CHARACTER SET latin1
  13. COLLATE latin1_general_cs AUTO_INCREMENT=0;

i dalej tak napisalem skrypt dodajacy pytania do bazy / tabeli
insert.php
  1. <?php
  2. include 'db.php';
  3.  
  4. $sql="INSERT INTO test (pytanie, odpa, odpb, odpc, odpd)
  5. VALUES
  6. ('$_POST[pytanie]','$_POST[odpa]','$_POST[odpb]','$_POST[odpc]','$_POST[odpd]')";
  7.  
  8. if (!mysql_query($sql,$polaczenie))
  9. {
  10. die('Error: ' . mysql_error());
  11. }
  12. echo "Dodano nowe pytanie";
  13.  
  14. mysql_close($polaczenie)
  15. ?>

i form dodajpytanie.php
  1. <html>
  2. <body>
  3. Wprowadz nowe pytanie:<br/><br/>
  4. <form action="insert.php" method="post">
  5. pytanie: <input type="text" name="pytanie" /></br>
  6. odpowiedz poprawna(a): <input type="text" name="odpa" /></br>
  7. odp b: <input type="text" name="odpb" /></br>
  8. odp c: <input type="text" name="odpc" /></br>
  9. odp d: <input type="text" name="odpd" /></br>
  10. <input type="submit" /></br>
  11. </form>
  12. </body>
  13. </html>

z baza sie lacze tak
db.php
  1. <?php
  2.  
  3. $mysql_host = 'localhost';
  4. $mysql_login = 'root';
  5. $mysql_haslo = '';
  6. $mysql_baza = 'urzytkownicy';
  7.  
  8. $polaczenie = mysql_connect($mysql_host, $mysql_login, $mysql_haslo) or die('Bł?d: nie udało się nawi?zać poł?czenia z baz? danych.');
  9.  
  10. mysql_select_db($mysql_baza) or die('Bł?d: nie udało się wybrać schematu bazy danych.');
  11.  
  12. ?>


dodawanie dziala bardzo dobrze teraz chce aby skrypt pobieral losowe pytanie z bazy zmienial kolejnosc odp , sprawdzal ipo rozwiazaniu testu wpisywal wynik i date w bazie gdzie juz mam takie pola . Tylko musi tez laczyc sie z moja druga tabela w ktorej mam nazwiska urzytkownikow chyba ze moge rozwiazac to w ten sposob ze dodam kolejna tabele np wyniki i przed wyswietleniem pytan wyswietli sie komunikat z prosba o podanie nazwiska a po zakonczeniu testu nazwisko i wynik zapisza sie w tej tabeli . kurcze niewiem czy dobrze kombinuje . Jestem poczatkujacy nieznam wszystkich funkcji ktore moge zastosowac wiec prosze o pomoc
/edit sory za bl ort

Ten post edytował gregov0 27.01.2011, 14:15:29
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 1.10.2025 - 13:08