Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
 Аватар для Nazz
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2

Случайный вывод вопросов

20.01.2010, 19:42. Показов 5332. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вопщем есть такая задача: для движка для тестов нужно сделать так, чтбы вопросы выводились в случайном порядке. есть код страницы testing.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
 
// Данные для mysql сервера
session_start();
$dbhost = "localhost"; // Хост
$dbuser = "root"; // Имя пользователя
$dbpassword = ""; // Пароль
$dbname = "testing"; // Имя базы данных
 
// Подключаемся к mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);
$name=$_POST['name'];
$familiya=$_POST['familiya'];
$mkr=$_POST['mkr'];
$_SESSION['name']=$name;
$_SESSION['familiya']=$familiya;
 
// Выбираем нашу базу данных
mysql_select_db($dbname, $link);
 
// Добавляем запись в нашу таблицу lo
// т.е. делаем sql запрос
$query = "INSERT INTO login (name , familiya, mkr) VALUES('$name','$familiya','$mkr')" or die("Помилка…"); 
//mysql_query ($query, $link);
/*if ($query == true)
     {
         include "test.php";
     }*/
mysql_query($query) or die(mysql_error()); 
//echo "Інформація про Вас занесена в базу даних."; 
//mysql_close ( $link );
 
?>
 
<?php
 
echo "<center><font color=blue size=6>Вам необхідно пройти модульну контрольну роботу №1. Наданий Вам варіант №1! Вперед...</font></center>"; 
$query = "SELECT * FROM kil_put";
$result=mysql_query($query);
$e=mysql_fetch_array($result);
$kil=$e['kil_put']; 
$pochatok=1;
 
?>
<form action="vidpovid.php" method="post">
<?php
 
session_start();
 
//===================================================timer==================================================================//
$query = "SELECT * FROM time";
$result=mysql_query($query);
$time=mysql_fetch_array($result);
$timer=$time['maxtime'];
$query = "SELECT * FROM login";
$result=mysql_query($query);
$end=mysql_fetch_array($result);
$endtime=time()+$timer;
$query = "UPDATE login SET endtime=$endtime WHERE familiya='{$_SESSION['familiya']}' and name='{$_SESSION['name']}'" or die("Помилка…"); 
mysql_query($query) or die(mysql_error());
 
 
 
 
//==================================================/timer/=================================================================//
 
 
$mkr=$_POST['mkr'];
$var_num=$_POST['var'];
 
 
 
//while($r=mysql_fetch_array($result) ) {
 
if ($mkr==1)
{
    $query = "SELECT * FROM putannya WHERE mkr_num=".$mkr; 
    $result=mysql_query($query);
    }
if ($mkr==2)
{
    $query = "SELECT * FROM putannya WHERE mkr_num=".$mkr; 
    $result=mysql_query($query);
    }
if ($mkr==3)
{
    $query = "SELECT * FROM putannya WHERE mkr_num=".$mkr; 
    $result=mysql_query($query);
    }
if ($mkr==4)
{
    $query = "SELECT * FROM putannya WHERE mkr_num=".$mkr; 
    $result=mysql_query($query);
    }
for ($i=$pochatok; $i<=$kil; $i+=1) {
echo "<br/>Питання №$i:<b> "; 
$r=mysql_fetch_array($result);
//вывод вопроса и вариантов ответов к нему
echo $r['vopros'];  // Название поля с вопросом vopros?
?>
 
<br/> 
</b><input type="radio" name="vopros_<?php echo $r['id']; ?>"  value="1" /><?php echo $r['otvet1'];?>
</br><input type="radio" name="vopros_<?php echo $r['id']; ?>"  value="2" /><?php echo $r['otvet2'];?>
</br><input type="radio" name="vopros_<?php echo $r['id']; ?>"  value="3" /><?php echo $r['otvet3'];?>
</br><input type="radio" name="vopros_<?php echo $r['id']; ?>"  value="4" /><?php echo $r['otvet4'];?>  
 <br />
 <?php
}
 
?>
<input type="submit" value="Відповісти">
</form>
есть база даных putannya, в которой есть следуючие поля otvet1,otvet2,otvet3,otvet4,pravulna,mkr .
Высшеуказаный скрипт выводит вопроси по категориям mkr, но он выводит все вопросы подряд с даной категории. Как мне сделать так, чтобы вопросы выводились не по порядку а в случайном порядке?..
ниже наведёный код с высшеуказаного файла выводит вопрос по категориям.. категория проверяется при помощи функции if/ Може кто подскажет как ето можно сделать универсальнее(тоесть, естли будет больше категорий, то чтобы для каждой не прописывать if) .


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
if ($mkr==1)
{
    $query = "SELECT * FROM putannya WHERE mkr_num=".$mkr; 
    $result=mysql_query($query);
    }
if ($mkr==2)
{
    $query = "SELECT * FROM putannya WHERE mkr_num=".$mkr; 
    $result=mysql_query($query);
    }
if ($mkr==3)
{
    $query = "SELECT * FROM putannya WHERE mkr_num=".$mkr; 
    $result=mysql_query($query);
    }
if ($mkr==4)
{
    $query = "SELECT * FROM putannya WHERE mkr_num=".$mkr; 
    $result=mysql_query($query);
    }
for ($i=$pochatok; $i<=$kil; $i+=1) {
echo "<br/>Питання №$i:<b> "; 
$r=mysql_fetch_array($result);
//вывод вопроса и вариантов ответов к нему
echo $r['vopros'];  // Название поля с вопросом vopros?
?>
 
<br/> 
</b><input type="radio" name="vopros_<?php echo $r['id']; ?>"  value="1" /><?php echo $r['otvet1'];?>
</br><input type="radio" name="vopros_<?php echo $r['id']; ?>"  value="2" /><?php echo $r['otvet2'];?>
</br><input type="radio" name="vopros_<?php echo $r['id']; ?>"  value="3" /><?php echo $r['otvet3'];?>
</br><input type="radio" name="vopros_<?php echo $r['id']; ?>"  value="4" /><?php echo $r['otvet4'];?>  
 <br />
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.01.2010, 19:42
Ответы с готовыми решениями:

Случайный вывод текста из БД
На сайте есть новости, статьи и т.п. Допустим я создам таблицу в БД где помещу Название новости и Ссылку на эту новость. Как можно случайно...

Случайный вывод строки
Подскажите пожалуйста вот есть скрипт случайного вывода строки, мне нужно присвоить переменной содержимое выведенной строки т.е. того что...

Случайный вывод txt файла на страницу сайта
Добрый вечер всем! :) Помогите пожалуйста скопировать следующий механизм с одного сайта. На сайте http://nocover.ru случайно выводится...

11
42 / 41 / 3
Регистрация: 04.01.2010
Сообщений: 205
21.01.2010, 06:56
Зачем там ифы нужна? Делаешь проверку, задана ли категория и все.

PHP
1
2
3
4
5
if ($mkr) 
{
        $query = "SELECT * FROM putannya WHERE mkr_num=".$mkr; 
        $result=mysql_query($query);
        }
А чтобы рандомом выводились вопросы - могу предложить не выводить их сразу, а записать изначально в массив. Потом массив перемешать и уже после этого вывести.
1
 Аватар для Nazz
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
21.01.2010, 09:29  [ТС]
MarsNsk, просто вопросы у меня посортерованы по категориям и мне нужно выводить список вопросов которие относятся к высшевыбраной категории.
На счёт массива, то я тоже так думал, но не знаю как правильно реализовать. Понимаеш, в етом коде у меня идёт вывод вопросов и ответов, а у следуючем я показую количество набраных балов.
Вот тко который посчитывает результаты vidpovid.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
session_start();
$dbhost = "localhost"; // Хост
$dbuser = "root"; // Имя пользователя
$dbpassword = ""; // Пароль
$dbname = "testing"; // Имя базы данных
$balu=0; 
// Подключаемся к mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);
mysql_select_db($dbname, $link);
$query = "SELECT * FROM kil_put";
$result=mysql_query($query);
$e=mysql_fetch_array($result);
$kil=$e['kil_put'];
/*
//=============================================================timer=============================================================
 
$query = "SELECT * FROM login";
$result=mysql_query($query);
$time=mysql_fetch_array($result);
$timer=$time['endtime'];
if (time()>$timer)
  die('Слишком долго');
 
 
//=============================================================/timer/===========================================================
 
*/
//------------------------------------------------------------------------------------------------------------ 
$query = "SELECT * FROM putannya";
$result=mysql_query($query);
//for ($i=1; $i<=$kil; $i+=1) {
while($row=mysql_fetch_array($result)){
 //$row=mysql_fetch_array($result);
if ($_POST["vopros_".$row['id']]==$row['pravulna']){    // Проверить, так ли называется поле в таблице pravulna
    $balu=$balu+1;
echo "Відповідь на питання &nbsp; №".$row['id']."<font color=blue>&nbsp;правильна</font>";
}
 
else{
echo "Відповідь на питання &nbsp; №".$row['id']."<font color=red>&nbsp;не правильна!!!</font>";
}?>
 <br/>
 <?php
}
//----------------------------------------------------------------------------------------------------------------
 
 
 
 
/*$dbhost = "localhost"; // Хост
$dbuser = "root"; // Имя пользователя
$dbpassword = ""; // Пароль
$dbname = "testing"; // Имя базы данных
// Подключаемся к mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);
 
mysql_select_db($dbname, $link);*/
$query = "SELECT * FROM login";
 
$result=mysql_query($query);
$e=mysql_fetch_array($result);
 
 
$query = "UPDATE login SET balu=$balu WHERE familiya='{$_SESSION['familiya']}' and name='{$_SESSION['name']}'" or die("Помилка…"); 
mysql_query($query) or die(mysql_error());
//----------------------------------------------------------------------------------------------------------------
 
 
 
echo "Ви набрали $balu &nbsp;";
if ($balu==1)
echo "бал" ;
if ($balu==2)
{
echo "бали" ;
}
if ($balu==3)
{
echo "бали" ;
}
if ($balu==4)
{
echo "бали" ;
}
elseif ($balu>=5)
{
echo "балів" ;
}
mysql_close ( $link );
?>
Но у етого кода есть проблема, он выводит в результат ответы на все вопросы из БД, а не только на те которые ответил пользователь... не подскажыш как мне решыть ети две проблемы:
1. случайнив вывод вопросов у коде testing.php
2. правильный выбор ответов и их вывод у коде vidpovid.php

Естли не сложно, покажы как ето релизовать..
0
42 / 41 / 3
Регистрация: 04.01.2010
Сообщений: 205
21.01.2010, 12:24
Поясню про иф.
Что у тебя:
4 раза проверяется условие и потом выполняется 1 и тот же код. Получается, что при любом из условий результат одинаков. Какой смысл в условиях?

Про ответы:
В vidpovid.php просто добавь условие в запрос, как в выводе вопросов.
PHP
1
2
$query = "SELECT * FROM putannya WHERE `mkr_num`='".$mkr."'";
$result=mysql_query($query);
При таком раскладе он не будет проверять вопросы, относящиеся к другим категориям.

Про случайный вывод.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php if ($mkr)
{
    $query = "SELECT * FROM putannya WHERE `mkr_num`='$mkr'"; 
        $result=mysql_query($query);
        $_SESSION['mkr']=$mkr;
        $baza=array();
        }
 
for ($i=$pochatok; $i<=$kil; $i+=1) {
echo "<br/>Питання №$i:<b> "; 
$r=mysql_fetch_assoc($result);
//вывод вопроса и вариантов ответов к нему
$baza[$i-1]['vopros']= $r['vopros'];  // Название поля с вопросом vopros?
$baza[$i-1]['id']=$r['id'];
$baza[$i-1]['otvet1']=$r['otvet1'];
$baza[$i-1]['otvet2']=$r['otvet2'];
$baza[$i-1]['otvet3']=$r['otvet3'];
$baza[$i-1]['otvet4']=$r['otvet4'];
$baza[$i-1]['prav']=$r['pravulna'];
}
shuffle($baza);
for ($i=0; $i<count($baza); $i++) {
echo $baza[$i]['vopros'];
?>
 
<br/> 
</b><input type="radio" name="vopros_<?php echo $baza[$i]['id']; ?>"  value="1" /><?php echo $baza[$i]['otvet1'];?>
</br><input type="radio" name="vopros_<?php echo $baza[$i]['id']; ?>"  value="2" /><?php echo $baza[$i]['otvet2'];?>
</br><input type="radio" name="vopros_<?php echo $baza[$i]['id']; ?>"  value="3" /><?php echo $baza[$i]['otvet3'];?>
</br><input type="radio" name="vopros_<?php echo $baza[$i]['id']; ?>"  value="4" /><?php echo $baza[$i]['otvet4'];?>  
 <br />
 <?php
$baza[$i]=implode('3.3', $baza[$i]);
}
$_SESSION['baza']=implode('9.9', $baza); 
?>
<input type="submit" value="Відповісти">
</form>
vidpovid.php:
PHP
1
2
3
4
5
6
7
session_start();
$baza=array();
$baza=explode('9.9', $_SESSION['baza']);
for ($i=0; $i<count($baza); $i++) {
$baza[$i]=explode('3.3', $baza[$i]);
echo ($_POST['vopros_'.$baza[$i]['1']]==$baza[$i]['6']) ? "Ответ на вопрос $i - правильный" : "Ответ на вопрос $i - неправильный<br />";
}
Написал вот, и думаю, что можно было бы и по логичней сделать, скорее всего. Но сейчас что в голову первое пришло - то и написал. Не проверял, так что возможны ошибки.
1
 Аватар для Nazz
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
21.01.2010, 14:33  [ТС]
MarsNsk, спасибо тибе, очень помог))))

Добавлено через 48 минут
воопщем, возникла другая проблема.
вот код testing.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?php
 
// Данные для mysql сервера
session_start();
$dbhost = "localhost"; // Хост
$dbuser = "root"; // Имя пользователя
$dbpassword = ""; // Пароль
$dbname = "testing"; // Имя базы данных
 
// Подключаемся к mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);
$name=$_POST['name'];
$familiya=$_POST['familiya'];
$mkr=$_POST['mkr'];
$_SESSION['name']=$name;
$_SESSION['familiya']=$familiya;
 
// Выбираем нашу базу данных
mysql_select_db($dbname, $link);
 
// Добавляем запись в нашу таблицу lo
// т.е. делаем sql запрос
$query = "INSERT INTO login (name , familiya, mkr) VALUES('$name','$familiya','$mkr')" or die("Помилка…"); 
 
mysql_query($query) or die(mysql_error()); 
echo "Інформація про Вас занесена в базу даних.Можете приступати до тестування. <b>Час пішов!!!</b></br>"; 
 
 
?>
 
<?php
 
echo "<center><font color=blue size=6>Вам необхідно пройти модульну контрольну роботу №1. Наданий Вам варіант №1! Вперед...</font></center>"; 
$query = "SELECT * FROM kil_put";
$result=mysql_query($query);
$e=mysql_fetch_array($result);
$kil=$e['kil_put']; 
$pochatok=1;
//$result=mysql_query($query);
?>
<form action="vidpovid.php" method="post">
<?php
 
session_start();
 
//===================================================timer==================================================================//
$query = "SELECT * FROM time";
$result=mysql_query($query);
$time=mysql_fetch_array($result);
$timer=$time['maxtime'];
$query = "SELECT * FROM login";
$result=mysql_query($query);
$end=mysql_fetch_array($result);
$endtime=time()+$timer;
$query = "UPDATE login SET endtime=$endtime WHERE familiya='{$_SESSION['familiya']}' and name='{$_SESSION['name']}'" or die("Помилка…"); 
mysql_query($query) or die(mysql_error());
//==================================================/timer/=================================================================//
 
 
 
 
 
//-------------------------------------------------------------------------------------------------------------------------------
?>
<?php
$mkr=$_POST['mkr'];
 if ($mkr)
{
    $query = "SELECT * FROM putannya WHERE `mkr_num`='$mkr'"; 
        $result=mysql_query($query);
        $_SESSION['mkr']=$mkr;
        $baza=array();
        }
 
for ($i=$pochatok; $i<=$kil; $i+=1) {
$r=mysql_fetch_assoc($result);
//вывод вопроса и вариантов ответов к нему
$baza[$i-1]['vopros']= $r['vopros'];  // Название поля с вопросом vopros?
$baza[$i-1]['id']=$r['id'];
$baza[$i-1]['otvet1']=$r['otvet1'];
$baza[$i-1]['otvet2']=$r['otvet2'];
$baza[$i-1]['otvet3']=$r['otvet3'];
$baza[$i-1]['otvet4']=$r['otvet4'];
$baza[$i-1]['prav']=$r['pravulna'];
}
shuffle($baza);
for ($i=0; $i<count($baza); $i++) {
$c=$i+1;
echo "<br/>Питання №$c:<b> ";
echo $baza[$i]['vopros'];
?>
 
<br/> 
</b><input type="radio" name="vopros_<?php echo $baza[$i]['id']; ?>"  value="1" /><?php echo $baza[$i]['otvet1'];?>
</br><input type="radio" name="vopros_<?php echo $baza[$i]['id']; ?>"  value="2" /><?php echo $baza[$i]['otvet2'];?>
</br><input type="radio" name="vopros_<?php echo $baza[$i]['id']; ?>"  value="3" /><?php echo $baza[$i]['otvet3'];?>
</br><input type="radio" name="vopros_<?php echo $baza[$i]['id']; ?>"  value="4" /><?php echo $baza[$i]['otvet4'];?>  
 <br />
 <?php
$baza[$i]=implode('3.3', $baza[$i]);
}
$_SESSION['baza']=implode('9.9', $baza); 
?>
<input type="submit" value="Відповісти">
</form>
а вот код vidpovid.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
session_start();
$dbhost = "localhost"; // Хост
$dbuser = "root"; // Имя пользователя
$dbpassword = ""; // Пароль
$dbname = "testing"; // Имя базы данных
$balu=0; 
// Подключаемся к mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);
mysql_select_db($dbname, $link);
$query = "SELECT * FROM kil_put";
$result=mysql_query($query);
$e=mysql_fetch_array($result);
$kil=$e['kil_put'];
/*
//=============================================================timer=============================================================
 
$query = "SELECT * FROM login";
$result=mysql_query($query);
$time=mysql_fetch_array($result);
$timer=$time['endtime'];
if (time()>$timer)
  die('Слишком долго');
 
 
//=============================================================/timer/===========================================================
 
*/
//------------------------------------------------------------------------------------------------------------ 
$baza=array();
$baza=explode('9.9', $_SESSION['baza']);
for ($i=0; $i<count($baza); $i++) {
$baza[$i]=explode('3.3', $baza[$i]);
$c=$i+1;
echo ($_POST['vopros_'.$baza[$i]['1']]==$baza[$i]['6']) ? "Відповідь на питання <b>$c</b> - <font color=blue>правильна</font><br/>" : "Відповідь на питання <b>$c</b> - <font color=red>НЕ правильна!!!</font><br />";
if ($_POST['vopros_'.$baza[$i]['1']]==$baza[$i]['6']){    // Проверить, так ли называется поле в таблице pravulna
    $balu=$balu+1;}
}
 
 
?>
 <br/>
 <?php
 
//----------------------------------------------------------------------------------------------------------------
 
$query = "SELECT * FROM login";
 
$result=mysql_query($query);
$e=mysql_fetch_array($result);
 
 
$query = "UPDATE login SET balu=$balu WHERE familiya='{$_SESSION['familiya']}' and name='{$_SESSION['name']}'" or die("Помилка…"); 
mysql_query($query) or die(mysql_error());
//----------------------------------------------------------------------------------------------------------------
 
 
 
echo "Ви набрали $balu &nbsp;";
if ($balu==1)
echo "бал" ;
if ($balu==2)
{
echo "бали" ;
}
if ($balu==3)
{
echo "бали" ;
}
if ($balu==4)
{
echo "бали" ;
}
elseif ($balu>=5)
{
echo "балів" ;
}
mysql_close ( $link );
?>
в коде testing.php, вопросі віводятся в случайном порядке, ето нормально, и всё отлично работает. В коде vidpovid.php-выводятся результати тестирования. Ето очень хорошо, и всё работает. НО, есть одно НО:
мне нужно чтобы вопросы вибирались все из категории, и выводились в случайном порядке. Тоесть, естли у меня у категории 50 вопросов, а выводится должно 10, то я хочу сделать так, чтобы выбирались любые 10 из етих 50, а вот етот код


PHP
1
2
3
4
5
6
7
8
9
10
11
for ($i=$pochatok; $i<=$kil; $i+=1) {
$r=mysql_fetch_assoc($result);
//вывод вопроса и вариантов ответов к нему
$baza[$i-1]['vopros']= $r['vopros'];  // Название поля с вопросом vopros?
$baza[$i-1]['id']=$r['id'];
$baza[$i-1]['otvet1']=$r['otvet1'];
$baza[$i-1]['otvet2']=$r['otvet2'];
$baza[$i-1]['otvet3']=$r['otvet3'];
$baza[$i-1]['otvet4']=$r['otvet4'];
$baza[$i-1]['prav']=$r['pravulna'];
}
выбирает столько вопросов, сколько должно выводится, и выводит их в случайном порядке, тоесть:
естли у меня у базе 50 вопросов и должно выводится 10 вопросов, то он выбирает 10 первых вопросов, и выводит их в случайном порядке(((
а как же мне сделать так, чтобы работала полная выборка???
0
42 / 41 / 3
Регистрация: 04.01.2010
Сообщений: 205
21.01.2010, 18:46
Вот здесь просто поставь ограничение в нужное количество вопросов:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$voprosov='10';   // В данном случае будет выводиться 10 случайных вопросов
for ($i=0; $i<$voprosov; $i++) {
$c=$i+1;
echo "<br/>Питання №$c:<b> ";
echo $baza[$i]['vopros'];
?>
 
<br/> 
</b><input type="radio" name="vopros_<?php echo $baza[$i]['id']; ?>"  value="1" /><?php echo $baza[$i]['otvet1'];?>
</br><input type="radio" name="vopros_<?php echo $baza[$i]['id']; ?>"  value="2" /><?php echo $baza[$i]['otvet2'];?>
</br><input type="radio" name="vopros_<?php echo $baza[$i]['id']; ?>"  value="3" /><?php echo $baza[$i]['otvet3'];?>
</br><input type="radio" name="vopros_<?php echo $baza[$i]['id']; ?>"  value="4" /><?php echo $baza[$i]['otvet4'];?>  
 <br />
 <?php
$baza[$i]=implode('3.3', $baza[$i]);
}
0
 Аватар для Nazz
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
21.01.2010, 18:50  [ТС]
ты наверное не верно меня понял. Естли я поставлю ограничение, то будет выводится 10 вопросов, и они будут выбиратся из 10 первых вопросов в БД. А я хочу сделать так, чтобы выводились 10 любых вопросов из всех 50...
0
42 / 41 / 3
Регистрация: 04.01.2010
Сообщений: 205
21.01.2010, 18:53
Они выбираются не из 10 первых, а из всех. Массив $baza содержит в себе все вопросы, так как при запросе к БД ограничение по количеству не накладывалось.

В письменном виде то, что происходит в написанном скрипте:

1. Делается запрос к базе и выбираются все вопросы с категорией $mtr
2. Все вопросы записываются поочередно в массив $baza.
3. Массив $baza перемешивается (команда shuffle)
4. Выбираются $voprosov вопросов из массива $baza.
0
 Аватар для Nazz
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
21.01.2010, 19:01  [ТС]
просто я тестил, задаю количество вопросов 2. в БД их 4 по етой категории. Результат: первые 2 вопроса с БД перемешываются(тоесть выводится то один первый, то другой). А остальные 2 не используются...
0
42 / 41 / 3
Регистрация: 04.01.2010
Сообщений: 205
21.01.2010, 19:04
Перед тем кодом, который я последним написал вставь строчку
echo count($baza);
и посмотри, какое число выведет.

А, все, понял. Короче, в том цикле фор, который задает $baza поменяй условие с $i<=$kil; на $i<=mysql_num_rows($result);
1
 Аватар для Nazz
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
21.01.2010, 19:28  [ТС]
спасибо тибе,MarsNsk, исправил следуючим образом:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for ($i=$pochatok; $i<=mysql_num_rows($result); $i+=1) {
$r=mysql_fetch_assoc($result);
//вывод вопроса и вариантов ответов к нему
$baza[$i-1]['vopros']= $r['vopros'];  // Название поля с вопросом vopros?
$baza[$i-1]['id']=$r['id'];
$baza[$i-1]['otvet1']=$r['otvet1'];
$baza[$i-1]['otvet2']=$r['otvet2'];
$baza[$i-1]['otvet3']=$r['otvet3'];
$baza[$i-1]['otvet4']=$r['otvet4'];
$baza[$i-1]['prav']=$r['pravulna'];
}
shuffle($baza);
for ($i=0; $i<$kil; $i++) {
$c=$i+1;
echo "<br/>Питання №$c:<b> ";
echo $baza[$i]['vopros'];
?>
0
42 / 41 / 3
Регистрация: 04.01.2010
Сообщений: 205
21.01.2010, 19:28
Именно так)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.01.2010, 19:28
Помогаю со студенческими работами здесь

Случайный и не случайный вывод чисел в одномерном массиве
Задача: Написать программу по обработке одномерных массивов. Размеры массивов вводить с клавиатуры. В консольном приложении предусмотреть...

Случайный порядок вопросов в тесте и сравнение с правильными ответами
Здравствуйте,делаю тестирующую программу по примеру прикрепленному ниже и никак не могу придумать,как же под данный код сделать случайный...

Задать случайный порядок вопросов в программе тестирования с помощью функции рандом
привет! как задать случайный порядок вопросов в программе тестирования с помощью функции рандом на визуал бейсик?

Случайный вывод
Всем привет. Есть случайный вывод дат и случайный вывод времени. Необходимо добавить в 3 и 4 колонке вид работ и ФИО исполнителя (тоже...

Случайный вывод изображений
Добрый вечер уважаемые программисты) есть скрипт рандомного вывода чисел из .txt файла$s&quot;; } ?&gt; как мне сделать что бы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru