Jquery kviz mysqlből

Jquery kviz mysqlből
2022-11-06T17:24:52+01:00
2022-11-06T20:48:06+01:00
2022-11-06T21:34:25+01:00
jonaszsolt90
Sziasztok,

Epitek egy kviz rendszert sajat hasznalatra az egyetemi tananyagomhoz.

szeretnem ha a kerdeseket mysqlben tudnam kezelni. Jelenleg a minta jquery javascriptbol szedi a kerdeseket.

Hogyan tudnam megoldani hogy ebbe a formatumba sqlbol erkezzen a tomb?

minta javascript:

$('#quiz').quiz({ questions: [ { 'q': 'A smaple question?', 'options': [ 'Answer 1', 'Answer 2', 'Answer 3', 'Answer 4' ], 'correctIndex': 1, 'correctResponse': 'Custom correct response.', 'incorrectResponse': 'Custom incorrect response.' } ] });
Mutasd a teljes hozzászólást!
Pontosan ezt kell csinálnod. De kezdd kicsiben. PHP oldalon elő tudod állítani ezt az output-ot csak sima változók használatával?

$questions = array( array( 'q' => 'A smaple question?', 'options' => array('Answer 1', 'Answer 2', 'Answer 3', 'Answer 4'), 'correctIndex' => 1, 'correctResponse' => 'Custom correct response.', 'incorrectResponse' => 'Custom incorrect response.' ) ); $javascript_questions_object = json_encode(array("questions" => $questions)); print "$('#quiz').quiz(" . $javascript_questions_object . ");";
Ennek ez lesz a kimenete, ami teljes értékű JavaScript kód:

$('#quiz').quiz({"questions":[{"q":"A smaple question?","options":["Answer 1","Answer 2","Answer 3","Answer 4"],"correctIndex":1,"correctResponse":"Custom correct response.","incorrectResponse":"Custom incorrect response."}]});
Innentől kezdve lehet azon agyalni, hogy az adatbázisod hogyan nézzen ki. Ha minden kérdéshez pontosan 4 válasz tartozik, az a legegyszerűbb eset:

| id | question | answer1 | answer2 | answer3 | answer4 | correctResponse | incorrectResponse | correctIndex | +----+--------------------+----------+----------+----------+----------+--------------------------+----------------------------+--------------+ | 1 | A smaple question? | Answer 1 | Answer 2 | Answer 3 | Answer 4 | Custom correct response. | Custom incorrect response. | 1 | | 2 | A smaple question? | Answer 1 | Answer 2 | Answer 3 | Answer 4 | Custom correct response. | Custom incorrect response. | 3 |
Ha nem biztos, hogy 4 válasz tartozik egy kérdéshez, akkor kell egy második tábla is. Most erre nem térek ki.

Innentől kezdve már csak annyi a feladat, hogy
1. Kapcsolódsz a MySQL adatbázishoz.
2. Nem tudom, hány kérdést akarsz az adatbázisból elküldeni a JavaScript kódnak egyszerre, legyen mondjuk 10 véletlenszerű kérdés:

SELECT question, answer1, answer2, answer3, answer4, correctResponse, incorrectResponse, correctIndex FROM table ORDER BY RAND() LIMIT 10
Ez a lekérdezés nagyon nem hatékony nagy elemszámú táblákra, de feltételezve, hogy nagyjából úgy 1000 rekord lesz, arra ez bőven jó.
3. Iterálsz az eredményhalmazon és feltöltöd a $javascript_questions_object tömböt.
Mutasd a teljes hozzászólást!

  • Hali!

    Hogyan tudnam megoldani hogy ebbe a formatumba sqlbol erkezzen a tomb?

    Úgy, hogy leprogramozod.

    Csak kulcsszavakkal/-rövidítésekkel: AJAX, PDO, JSON.

    Mutasd a teljes hozzászólást!
  • Koszonom, ez sok segitseg volt mert igy mar menni fog. A javascriptel most baratkozok.
    Mutasd a teljes hozzászólást!
  • Lényegében akkor php oldalon lekerdezem az adatbazis rekordokat es json-ba tovabbitom a jquery reszere?
    Mutasd a teljes hozzászólást!
  • Pontosan ezt kell csinálnod. De kezdd kicsiben. PHP oldalon elő tudod állítani ezt az output-ot csak sima változók használatával?

    $questions = array( array( 'q' => 'A smaple question?', 'options' => array('Answer 1', 'Answer 2', 'Answer 3', 'Answer 4'), 'correctIndex' => 1, 'correctResponse' => 'Custom correct response.', 'incorrectResponse' => 'Custom incorrect response.' ) ); $javascript_questions_object = json_encode(array("questions" => $questions)); print "$('#quiz').quiz(" . $javascript_questions_object . ");";
    Ennek ez lesz a kimenete, ami teljes értékű JavaScript kód:

    $('#quiz').quiz({"questions":[{"q":"A smaple question?","options":["Answer 1","Answer 2","Answer 3","Answer 4"],"correctIndex":1,"correctResponse":"Custom correct response.","incorrectResponse":"Custom incorrect response."}]});
    Innentől kezdve lehet azon agyalni, hogy az adatbázisod hogyan nézzen ki. Ha minden kérdéshez pontosan 4 válasz tartozik, az a legegyszerűbb eset:

    | id | question | answer1 | answer2 | answer3 | answer4 | correctResponse | incorrectResponse | correctIndex | +----+--------------------+----------+----------+----------+----------+--------------------------+----------------------------+--------------+ | 1 | A smaple question? | Answer 1 | Answer 2 | Answer 3 | Answer 4 | Custom correct response. | Custom incorrect response. | 1 | | 2 | A smaple question? | Answer 1 | Answer 2 | Answer 3 | Answer 4 | Custom correct response. | Custom incorrect response. | 3 |
    Ha nem biztos, hogy 4 válasz tartozik egy kérdéshez, akkor kell egy második tábla is. Most erre nem térek ki.

    Innentől kezdve már csak annyi a feladat, hogy
    1. Kapcsolódsz a MySQL adatbázishoz.
    2. Nem tudom, hány kérdést akarsz az adatbázisból elküldeni a JavaScript kódnak egyszerre, legyen mondjuk 10 véletlenszerű kérdés:

    SELECT question, answer1, answer2, answer3, answer4, correctResponse, incorrectResponse, correctIndex FROM table ORDER BY RAND() LIMIT 10
    Ez a lekérdezés nagyon nem hatékony nagy elemszámú táblákra, de feltételezve, hogy nagyjából úgy 1000 rekord lesz, arra ez bőven jó.
    3. Iterálsz az eredményhalmazon és feltöltöd a $javascript_questions_object tömböt.
    Mutasd a teljes hozzászólást!
  • Hali!

    Lényegében akkor php oldalon lekerdezem az adatbazis rekordokat es json-ba tovabbitom a jquery reszere?

    Így van – bár, nem a jQuery részére (mert az csak egy JS-könyvtár), hanem bármilyen kliens részére. A jQuery itt annyiban jelenik meg (már ha használod), hogy annak segítségével indítod az AJAX-kérést a szerver felé, ami (a kérés esetleges paraméterei alapján) elvégzi a feladatot: lekérdezést hajt végre, összeállítja az eredményből a kívánt struktúrát, JSON-szöveget képez belőle és kiküldi a kimenetre. Ezt a kimenetet fogadja a kliens oldalon a kérést indító szkripted.

    Mutasd a teljes hozzászólást!
  • Hali!

    Ejnye!

    Mutasd a teljes hozzászólást!
  • Valóban ejnye, mert normális esetben ilyet én sem csinálnék, de egy valami nagyon megragadt bennem:

    Epitek egy kviz rendszert sajat hasznalatra

    Ezért is fogtam ennyire megalázóan primitívre és nem mentem el abba a nagyon fancy irányba, hogy a szerverről dinamikusan jön a kérdés, és a szerver értékeli ki, hogy helyes-e a válasz. Normális rendszer esetén én is úgy csinálnám, ahogy te és optimálisabb query-t/schema-t használnék, de ide úgy gondolom, felesleges. Nagyon kevés adat lesz abban az adatbázisban, egy ember fogja használni, tehát minek? Állítsa elő a PHP script a HTML oldalt, égesse bele a kérdéseket. Egyszeri gyakorlásra ettől nem kell több szerintem.

    Akkor érdemes még ebbe az irányba menni, ha az számít, hogy egy ilyen rendszert hogyan lehet összerakni, de én nem éreztem, hogy ezen lenne a hangsúly.
    Mutasd a teljes hozzászólást!
  • Hali!

    Az ejnye nem erre vonatkozott, hanem a – szinte – pontról-pontra kész, komplett megoldásra.

    Mutasd a teljes hozzászólást!
  • Hát akkor most jól félreértettelek :D Ha már azt a gondolkodásmódot hazaviszi ebből, hogy haladjunk apró lépésekben, ne egyből a nagy feladatnak ugorjunk neki, akkor már megérte szerintem ^^
    Mutasd a teljes hozzászólást!
  • Nem akartam vitát indítani. Sajnalom. Hobbi programozo vagyok, es netrol tanulok mindent. En sem kesz valaszt vartam csak ravezetest. Koszonom h foglalkoztatok vele.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd