Jump to content
  • 0

Рандомный вывод из массива.


gameviktor
 Share

Question

Хотел бы сделать тест с рандомными вопросами на PHP. В БД(MySql) 13 вопросов (с ответами):

id name vopros otvet

1 matem text 1

2 matem text 3

3 matem text 4

4 matem text 1

5 matem text 2

6 matem text 1

7 matem text 1

8 russkiy text 5

9 russkiy text 1

10 russkiy text 3

11 russkiy text 2

12 russkiy text 2

13 russkiy text 4

И мне нужно вытащить вопросы только по русскому ( name='russkiy' ).

В чём заключается вопрос:

1) Как при входе в тест по русскому организовать поиск по name='russkiy' и записать все id в массив mass?

2) Как выполнить рандомный вывод всех id, но при это чтобы они не повторялись.

3) Вывод по id содержимое.

Если есть у кого-нибуть другие варианты буду очень благодарен!=D

Edited by gameviktor
Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

создайте многомерный массив.

т.е. в каждой ячейке массива будет находится другой массив, содержащий данные о вопросах.

А можно не многомерный.. В ячейку массива загоняете информацию о белетах через придуманный разграничитель, например #%###%

А вытаскивать из него просто - делим строку с помощью explode() по этому разграничителю

узнаете длину первого массива, и на её основе рандом будет вытягивать случайный билет, остальное за вами...

наводка:

после того как вы завершили операцию с селектом, запускайте цикл



WHILE( $myRESULT =mysql_fetch_array($result) ){
}

Edited by Николя223
Link to comment
Share on other sites

  • 0

а как найденные строчки russkiy поместить все id в массив?

и ф-ция random() помойму вытаскивает один рандомный элемент, нет? :huh:

А зачем вам помещать все в id? и вообще вопрос не понятен...

для вывода массива выше уже написали, используйте встроенную ф-цию mysql_fetch_array()

ф-ция rand() - случайным образом выводит массив, вот, почитайте + там же есть ссылка на перемешивание массива ф-цией shuffle().

Link to comment
Share on other sites

  • 0

а как найденные строчки russkiy поместить все id в массив?

и ф-ция random() помойму вытаскивает один рандомный элемент, нет? :huh:

А зачем вам помещать все в id? и вообще вопрос не понятен...

для вывода массива выше уже написали, используйте встроенную ф-цию mysql_fetch_array()

ф-ция rand() - случайным образом выводит массив, вот, почитайте + там же есть ссылка на перемешивание массива ф-цией shuffle().

<?php

for ($n = 1; $n <= 6; $n++) {

$input = array("8", "9", "10", "11", "22", "23");

$rand_keys = array_rand($input);

echo $rand_keys;

}

?>

так чтоль?)

Edited by gameviktor
Link to comment
Share on other sites

  • 0

еще вот можно:


<?php
$numbers = range(1, 10);
srand((float) microtime() * 1000000);
shuffle($numbers);
while (list(, $number) = each($numbers)) {
echo $number.'<br>';
}
?>
<?php for ($i=0;$i<5;$i++) //echo mt_rand(1,30)."<br/>\n"; ?>
<?php
$phrases = "phrases.dat";//файл содержащий фразы
$z = file ($phrases);
$cz = count ($z) -1;
$r = rand (0, $cz);
print $z[$r];
?>
<?php
/*
$ourfile = fopen("phrases.dat",'r');
for($i = 0; $s = fgets($ourfile,10000); $i++){
if(mt_rand(0,$i) == 0) $line = $s;
}
echo $line;
*/
?>

Link to comment
Share on other sites

  • 0

rus, здесь вынужден с вами не согласиться, по нескольким причинам, в представленном Вами коде есть несколько критичных недочетов:

а. в коде лучше неиспользовать закрывающий тэг - это снизит вероятность попадания в код ненужных скриптов

б. в одном скрипте лучше не писать несколько тел (т.е. открывающий тэг <?php должен быть один)

ну и так, по мелочи.

Link to comment
Share on other sites

  • 0

gameviktor, вы хотите что бы за вас сделали?

McLotos, ну во-первых, открывающие и закрывающие теги <?php ?> я использовал несколько раз только для визуального разделения, что бы было понятно ТС что это разные методы и подходы.

а во-вторых, вот все говорят - не нужно закрывать тег php - почему? какие "ненужные" скрипты могут туда попасть?

Link to comment
Share on other sites

  • 0


// чтобы не посылать в базу кучу запросов, вытягиваем всё и сразу
$sql = "SELECT *
FROM ИМЯ_ТАБЛИЦЫ"
$res = mysql_query($sql);
$count = mysql_num_rows($res);
//проверяем размер полученного результата, если больше 0 тогда продолжаем дальше,(это чтобы ошибок не было)
if ($count>0)
{
//прогоняем всё через цикл и записываем в массив
for ($i=0;$i<$count;$i++)
{
$mass[$i]['id'] = $myr['id'];
$mass[$i]['vopros'] = $myr['vopros'];
$mass[$i]['otvet'] = $myr['otvet'];
}
}

Получили массив, осталось только перемешать строки в массиве, в гугле на эту тему ответов полно.

Edited by McLotos
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By Only091
      Помогите пожалуйста, не получается сделать постраничную навигацию. Делал все по урокам. в Итоге получилось сделать два разных каталога один с фильтрами другой с постраничной навигацией. И теперь я пытаюсь объединить два каталога. Но не получается. Сами файлы урока в архике каталог. Буду очень благодарен если мне помогут! catalog.phpcatalogDB.js
      каталог.7z
    • By stonelabs
      Всем привет!

      Наша компания (https://stone-labs.com/) ищет команды (!) разработчиков для реализации ряда заказных проектов. Местоположение не важно - мы практикуем удаленную работу.
       
      Обязательные требования:
      Laravel или Symfony frameworks jQuery (UI), JavaScript, Ajax, Bootstrap MySQL REST API, опыт внедрения Third-party APIs английский на уровне чтения и понимания технической документации опыт в разработке веб приложений и их архитектуры с нуля корректное использование git & pull request flow работа в дневное время во временной зоне UTC +3  
      Будет плюсом, если у вашей команды есть:
      опыт с GitLab CI/CD, Jenkins опыт с MySQL Cluster, MongoDB, PostgreSQL, Redis опыт с Vue.js опыт Linux администрирования, SSH, Nginx, DevOps  
      Если вам интересно сотрудничество, пожалуйста, пишите на наш ящик wanted@stone-labs.com 
    • By Defroing
      <form method="POST" action= "action_handler.php" id="form"> <section class="table_1"> <table class="iksweb"> <tbody> <tr> <td rowspan="3"><b>История компании «Mc donald's»</b> <h3 class="the">Кто основал компанию «Mc donald's»?</h3> <section class="conteiner"> <div class="checkbox"> <input type="checkbox" class="i-6" id="i6" value="0" name="formDoor[]"> <label for="i6" tabindex="12">Роналд Макдоналд</label> </div> <div class="checkbox"> <input type="checkbox" class="i-6" id="i7" value="0" name="formDoor[]"> <label for="i7" tabindex="13">Рэй Крок</label> </div> <div class="checkbox"> <input type="checkbox" class="i-6" id="checkbox_68" value="1" name="formDoor[]"> <label for="checkbox_68" tabindex="14">Братья Дик и Мак Макдоналд</label> </div> <div class="checkbox"> <input type="checkbox" class="i-6" id="checkbox_170" value="0" name="formDoor[]"> <label for="checkbox_170" tabindex="14">Клинт Иствуд</label> </div> <div class="out-block out-6"></div> </section> </td> </tr> </tbody> </table> <div class="dsw"> <button class="b-6" tabindex="11" id="btn-1" type="submit" name="formSubmit">Отправить</button> </div> </form> <?php mysql_connect("localhost", "root", ""); mysql_select_db('olala') or die(mysql_error()); if(isset($_GET['submit'])){ $arr=$_GET; foreach ($arr as $key => $value) { $reg="/^check/";//отбираю нужные элементы if( preg_match ($reg,$key )) { //$new_mass[]=$arr[$key]; //print_r($new_mass); echo $arr[$key]; $sql_1="INSERT INTO `table_one` (`name`) VALUES('$arr[$key]')"; mysql_query($sql_1) or die(mysql_error()); } } } ?>  Создаю опросник и хочу, чтобы чекбоксы заносились в БД(таблицу пока не создавал). Хотелось узнать на счёт php кода, сможете подсказать, что в нём не так (дать какие нибудь советы). В openserver опросник пока не выкладывал.
    • By seoww
      Доброго времени суток. Я не сильно знающий веб-разработчик, но учусь. Начал создавать интернет магазин. Написал код самого сайта, посмотрел видео как делаются интернет-магазины и теперь не могу разобраться с PhpMyAdmin. Я не понимаю как она взаимодействует с сайтом. В интернете погуглил, так ничего дельного найти и не смог. Помогите пожалуйста.
      P.S сильно в меня камни не кидайте, я только учусь 
      Всем добра!
    • By Gmansurov
      Нужно отправить текст на сайт, не знаю как это сделать и не могу найти форумы по этим темам. Google Cloud Platform. Помогите пожалуйста.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy