Véletlenszerű (random), avagy változó form adatok kezelése

snowflake képe

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ó: 
Sweetchuck képe

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.

0
0
snowflake képe

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.

0
0
Boobaa képe

quiz_dotest()ben:

$form['#my_form_temp_variable'] = 'akármi';

Ami aztán rendelkezésre áll mind quiz_dotest_validate($form, &$form_state)ben, mind quiz_dotest_submit($form, &$form_state)ben.

0
0