Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: PHP & MySQL
Форумы портала PHP.SU » PHP » Программирование на PHP » PHP & MySQL

Страниц (1): [1]
 

1. dmn - 18 Мая, 2008 - 15:41:49 - перейти к сообщению
Здравствуйте! У меня такой вопрос: как можно сделать, чтоб с БД выдавался вопрос и вместе с ним варианты ответов, но только в случайном порядке (именно варианты ответов).
пример БД (vopros):

tema \ vprs \ vrnt \ otvt

1 11? 111 | 112 | 113 113
2 22? 221 | 222 | 223 222
3 33? 331 | 332 | 333 332

кусок проги:

CODE (text):
скопировать код в буфер обмена
  1.  
  2. MYSQL_CONNECT($hostname,$username,$password) OR DIE("error db connection :o(");
  3. @mysql_select_db("$dbName") or die(":-(");
  4. {
  5.   $query = mysql_query("SELECT * FROM vopros ORDER BY RAND()");
  6.  }
  7.  
  8.  
  9.  while ($data = mysql_fetch_assoc($query)) {
  10.     if (!isset($arr[md5($data['tema'])])) $arr[md5($data['tema'])] = $data;
  11.   }
  12.   ?>
  13.   <form name="sw"  action='next1.php' method='post'>
  14.   <?
  15.     foreach ($arr as $a)   {
  16.         echo $a['tema']."<br>";
  17.  
  18.     echo $a['vprs']."<br>";
  19.     $variants = explode("|",$a['vrnt']);
  20.         $count=count($variants);
  21.                 for($idx=0;$idx<$count;++$idx){
  22.                 $voprosid = $a['id'];
  23.                 echo  '<input type=radio name='.$voprosid.' value='.$variants[$idx].'>'.$variants[$idx];
  24.                 echo "<br>";
  25.         }
  26.         $otvet = $a['otvt'];  
  27.         echo $otvet."<br>";
  28.         echo $voprosid."<br>";
  29.         echo "<hr>";
  30.   }
  31.  
  32. ?>
2. SergeantPEPPER - 19 Мая, 2008 - 10:57:32 - перейти к сообщению
А у вас вопросы и ответы как в бд хранятся?
Если в одной таблице, то сколько вариантов ответов на каждый вопрос?
Если нет, то не ясно в чем именно проблема: случайная сортировка записей есть это:


Или я чо то не так понял Однако
3. EuGen - 19 Мая, 2008 - 10:58:38 - перейти к сообщению
Структуру и связи таблиц в студию.
4. dmn - 20 Мая, 2008 - 00:34:34 - перейти к сообщению
tema \ vprs \ _______ vrnt__________\ otvt

1 ______ 11? ______111 | 112 | 113 ______113
2 ______22? ______221 | 222 | 223 ______222
3 _______33? ______331 | 332 | 333 ______332

это моя БД! нужно чтоб с 'vrnt' выводились варианты ответов в случайном порядке!
5. Eihwaz - 20 Мая, 2008 - 01:25:34 - перейти к сообщению
dmn пишет:
tema \ vprs \ _______ vrnt__________\ otvt

1 ______ 11? ______111 | 112 | 113 ______113
2 ______22? ______221 | 222 | 223 ______222
3 _______33? ______331 | 332 | 333 ______332

Тут и думать нечего:
+_+
/ \
7! 16? - __444__
\
44%
/
5:0 - ?? -
\
543__
Я думаю, автор темы сможет понять приведенное решение, так же, как я смог понять приведенную структуру базы данных.
6. EuGen - 20 Мая, 2008 - 10:09:26 - перейти к сообщению
Автор: сделайте, пожалуйста, хотя бы show table для каждой таблицы и выложите результат внутри тегов [ code ] [ /code ]
Потому что то, что есть сейчас, не читабельно в принципе.
7. SergeantPEPPER - 21 Мая, 2008 - 09:11:36 - перейти к сообщению
dmn пишет:
tema \ vprs \ _______ vrnt__________\ otvt

1 ______ 11? ______111 | 112 | 113 ______113
2 ______22? ______221 | 222 | 223 ______222
3 _______33? ______331 | 332 | 333 ______332


А вот про столбец vrnt Вы уж поподробнее напишите, вопрос о том КАК хранятся данные был в общем-то про него... Что у Вас означает "|" ??? Однако
8. dmn - 30 Мая, 2008 - 23:52:11 - перейти к сообщению
извините за не корректность!

я не знаю как мне сделать лучше базу, чтоб выводило варианты ответов в произвольном порядке.
У меня есть на каждый вопрос 4-е варианта ответа! их лучше в одном столбце или по 4-ем раскидать???
и как это реализовать на ПХП???
9. D1mOn - 31 Мая, 2008 - 03:10:43 - перейти к сообщению
dmn пишет:
я не знаю как мне сделать лучше базу, чтоб выводило варианты ответов в произвольном порядке.
У меня есть на каждый вопрос 4-е варианта ответа! их лучше в одном столбце или по 4-ем раскидать???
и как это реализовать на ПХП???


Для случайного юзайте rand, а для того чтобы записи не повторялись в запрос вставте DISTINCT. Что касается вариантов, можно раскидать по разным, а можно в одном и использовать разделитель |, а потом в пыхе разделять все это дело explode(). Но как вариант я бы выбрал первый (в разные), так как так будет действеннее работать distinct
10. EuGen - 31 Мая, 2008 - 10:29:02 - перейти к сообщению
Зачем explode если в выборке оно и так будет разделено? ..
CODE (text):
скопировать код в буфер обмена
  1.  
  2. SELECT DISTINCT `field` FROM `your_table` ORDER BY RAND() LIMIT 4
  3.  
11. valenok - 02 Июня, 2008 - 15:25:41 - перейти к сообщению
А причём distinct ? Это ты к тому что варианты ответов могут повторяться ?
12. EuGen - 02 Июня, 2008 - 16:25:16 - перейти к сообщению
По идее field может повториться (автор не указал обратное).
13. dmn - 04 Июня, 2008 - 17:24:02 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. $variant = mysql_result($result,$n,"vrnt");
  3. ...
  4. PRINT "<b> $vopros </b>";
  5.  
  6. $variants=explode("|",$variant);
  7. $count=count($variants);
  8. for($idx=0;$idx<$count;++$idx){
  9. echo  '<input type=radio name='.$voprosid.' value='.$variants[$idx].'>'.$variants[$idx];
  10. echo "<br>";
  11. }
  12. echo"<hr>";
  13.  $i++;
  14. }
  15.  


Если у меня варианты ответов записаны в одно поле 'vrnt' то как их выводить в рандом порядке, если придерживаться моего кода? как тут добавить ренд? подскажите пожалуйста!!!

 

Powered by ExBB FM 1.0 RC1