Sziasztok,
Szeretnék létrehozni egy olyan form-ot amin megjelenne _véletlenszerűen_ 5 db kérdés (egy sql táblából). Minden kérdés 3 válasszal rendelkezne.
A problémám abban áll, hogy sajnos a submit gomb után ismét leválogatja a véletlenszerűen kiválasztott 5 kérdést, és így nem tudom kiértékelni a kapott válazokat. :(
Már megpróbáltam mindenféle global változóval, sessionbe rakott változóval megoldani, hogy ne válogassa le, de hasztalan...
A releváns kód valahogy így néz ki most:
function quiz_dotest() { // random kérédések leválogatása $result1 = db_query("SELECT id, question FROM etanya_mydata.quiz_question WHERE type=1 ORDER BY RAND() LIMIT 3 "); $form = array(); $n=1; if (db_num_rows($result1)) { while ($row = db_fetch_object($result1)) { $question="q".$row->id; //kérdés id //a kérdésekhez tartozó válaszok leválogatása $result2 = db_query("SELECT answer FROM etanya_mydata.quiz_answer WHERE qid = %d ", $row->id); $options = array(); $k=1; while ($row2 = db_fetch_object($result2)) { $options[$k] = $row2->answer; $k++; } $form[$question] = array( '#type' => 'radios', '#title' => $n.'. ('.$question.")-".$row->question, '#default_value' => '', '#options' => $options, ); $n++; } } $form['submit'] = array( '#type' => 'submit', '#value' => t('Kész!'), '#id' => 'rogzit', ); return $form; } function quiz_testform() { return drupal_get_form('quiz_dotest'); } function quiz_dotest_submit($form_id, $form_values) { global $user; // teszt print ('<pre>'); print_r ($form_values); print ('</pre>'); return 'quiz/done/'; }
Minden segítséget szívesen fogadok, és előre is köszönök.
Drupal verzió:
Fórum:
Hiányzik pár apróság
D6-hoz van egy Quiz
http://drupal.org/node/26481/release?api_version[]=78
Bár valószínűleg egyedi igényeid vannak. (pl.: külön adatbázis)
Van egy ilyen függvény is db_query_range().
D5-ben nem tudom hogy van, de D6-ban van lehetőség a cache-ből előhúzni a kiküldött form-ot.
Esetleg kellhet hozzá a $form_state['storage'] = TRUE;
Ha D5-ben nincsen ilyen akkor a *_validate() és *_submit függvényekben közvetlenül a $_POST adatait kell használnod.
Egyébként én is keresek erre szép megoldást.
Köszönöm a válaszod, holnap
Köszönöm a válaszod, holnap utána nézek az említett dolgoknak.
A quiz modult köszönöm ismertem, pontosabban olvasgattam róla. De nekem nem lenne jó, mert én ezt a tesztsort túlképpen a regisztráláshoz szeretném majd használni, és nekem úgy tűnik az említett quiz nem igazán tud ilyet. Szóval jó lenne ez a saját reszelésű modul.
Nem nehéz ez
quiz_dotest()
ben:Ami aztán rendelkezésre áll mind
quiz_dotest_validate($form, &$form_state)
ben, mindquiz_dotest_submit($form, &$form_state)
ben.