Выбор из БД в случайном порядке на PHP


MySQL « Выборка данных из БД в случайном порядке

База данных MySQL.

Есть блог или форум с темами и тэгами. Хочется рядом с топиком показывать список похожих тем (по совпадению тэгов) но отсортированный случайным образом. Скажем есть десять схожих тем, у которых совпадает два тэга. Я показываю только пять похожих тем и хочу чтобы это были разные темы при каждой перезагрузке страницы.

Пример.
Первый вызов.

Совпадает_тэгов Имя_темы
———————————-
3 Тема 13
3 Тема 1
2 Тема 8
2 Тема 5
2 Тема 2

Как сделать случайную выборку из MySQL через PHP

11 января 2010 65 Рубрика: MySQL, PHP

« Предыдущая запись
Предновогодний анонс
Следующая запись »
Как показать и скрыть текст на JavaScript

Всех с прошедшим Новым годом полосатой коши и Рождеством! Все хорошо отдохнули за это время=)?. Если да, то продолжим работу со всякими прибаутками=). Сегодня мы займёмся теми случаями, когда нужно сделать так, чтобы при каждой загрузке страницы из массива выводились рендомные (случайные) записи посредством PHP. В качестве массива мы возьмём массив записей из базы SQL (однако если рэндомный вывод нужен непосредственно из базы SQL, то стоит воспользоваться специальным SQL-запросом, но об этом в самом конце.)

В этот раз нам понадобится свой веб-сервер с поддержкой MySQL и PHP. О том, как создавать сервер и все примочки к нему я писать отдельно не буду — об этом итак очень много написано, а переписывать и вдаваться в детали этого не хочется. Однако самый простой путь я подскажу. Вам нужно приложение Appserv, которое установит вам сервер на компьютер уже вместе с MySQL и PHP, а также будет приложение по работе с БД — phpMyAdmin. Я о нём писал ранее в статье «Как облегчить работу верстальщика-программиста».

Создание и подключение базы данных

Для начала создадим свою базу данных с кодировкой Windows-1251. Назовём её, к примеру, mydb. Затем создаём таблицу articles с двумя колонками — id (уникальная, с автоинкриментом) и name. Вот вам код, можно через SQL-запрос создать нужную таблицу.

Собственно первые пять строчек создают таблицу, а оставшиеся три — добавляют три записи в таблицу, с которыми мы и будем работать.

Теперь подключимся к нашей базе данных через PHP.

Итак, соединение установлено, к базе подключились, теперь можно делать и рендомный вывод.

Создаём случайную выборку из MySQL посредством PHP

В завершении

Осталось одна вещь — что нужно, чтобы вывести одну запись рендомно? Для этого не нужны строки 14,15,16, 23 и 24, а вместо переменной $id (строка 18) используется переменная $r.

Всё? Нет! Осталось самое важное, что, к сожалению, не было замечено сразу. В статье хотелось совместить две вещи: 1) Кратенько рассказать о БД о подключении к ней и выборке информации из неё в массив; 2) Рассказать про рэндомный вывод из массивов средствами PHP и сделать это основным материалом.

При этом я забыл о том, что в с помощью SQL тоже можно делать рэндомную выборку, в результате чего все конструкции PHP остаются ненужными. Спасибо всем, кто заставил меня вспомнить про ORDER BY RAND().

Вот и всё, что я хотел сказать. Если будут какие-то добавления, исправления, пожелания, буду рад услышать. Спасибо за внимание=).

Выборка данных из таблицы mysql

Выборка данных из таблицы mysql осуществляется при помощи оператора select , простейший синтаксис этого оператора имеет следующий вид:

select filed_names from table_name

Чтобы показать работу оператора select на примерах создадим таблицу auto, с перечислениями названий машин и года их выпуска.

1 Audi 2005 2 Volvo 2001 3 Fiat 2003 4 Ford 2002

В следующем примере будет показана выборка наименований всех моделей

$connection = new mysqli(«localhost»,»root»,»»,’mybase’);
$query = «select model from auto»;
$result = $connection->query($query);
while($row = mysqli_fetch_array($result))
<
echo $row[‘model’].»
\n»;
>
?>

Audi
Volvo
Fiat
Ford

Выборка данных с условиями

Для выборка данных с условием чаще всего используется ключевое слово where. В следующем примере будет показана выборка всех машин старше 2002 года.

$connection = new mysqli(«localhost»,»root»,»»,’mybase’);
$query = «select model, year from auto where year>2002»;
$result = $connection->query($query);
while($row = mysqli_fetch_array($result))
<
echo «Модель:».$row[‘model’].»
«;
echo «Год:».$row [‘year’].»
«;
>
?>

Модель:Audi
Год:2005
Модель:Fiat
Год:2003

Объединение условий осуществляется при помощи ключевого слова ADN

$connection = new mysqli(«localhost»,»root»,»»,’mybase’);
$query = «select model, year from auto where year>2002 and year query($query);
while($row = mysqli_fetch_array($result))
<
echo «Модель:».$row[‘model’].»
«;
echo «Год:».$row [‘year’].»
«;
>
?>

Также допустимо использование конструкции BETWEEN min AND max

$connection = new mysqli(«localhost»,»root»,»»,’mybase’);
$query = «select model, year from auto where year between 2002 and 2004»;
$result = $connection->query($query);
while($row = mysqli_fetch_array($result))
<
echo «Модель:».$row[‘model’].»
«;
echo «Год:».$row [‘year’].»
«;
>
?>

Модель:Fiat
Год:2003
Модель:Ford
Год:2002

Если нужно получить список записей то используется конструкция IN

$connection = new mysqli(«localhost»,»root»,»»,’mybase’);
$query = «select model, year from auto where year in (2002,2005)»;
$result = $connection->query($query);
while($row = mysqli_fetch_array($result))
<
echo «Модель:».$row[‘model’].»
«;
echo «Год:».$row [‘year’].»
«;
>
?>

Модель:Audi
Год:2005
Модель:Ford
Год:2002

Связь с базами данных MySQL

СУБД MySQL — одна из множества баз данных, поддерживаемых в PHP. Система MySQL распространяется бесплатно и обладает достаточной мощностью для решения реальных задач.

Краткое введение в MySQL

SQL — это аббревиатура от слов Structured Query Language, что означает структурированный язык запросов. Этот язык является стандартным средством для доступа к различным базам данных.

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

Для работы с базами данных удобно пользоваться средством, входящее в комплект Web-разработчика: Denwer phpMyAdmin. Здесь можно создать новую базу данных, создать новую таблицу в выбранной базе данных, заполнить таблицу данными, а также добавлять, удалять и редактировать данные.

В MySQL определены три базовых типа данных: числовой, дата и время и строчный. Каждая из этих категорий подразделяется на множество типов. Основные из них:

Тип Описание
INT

Целое число

TINYINT

Маленькое целое число (-127 до 128 или от 0 до 255)

FLOAT

Вещественное число с плавающей точкой

DATE

Дата. Отображается в виде ГГГГ-ММ-ДД

TIME

Время. Отображается в виде ЧЧ:ММ:СС

DATETIME

Дата и время. Отображается в виде ГГГГ-ММ-ДДЧЧ:ММ:СС

YEAR[(2|4)]

Год. Можно определить двух- или четырехциферный формат

CHAR(M)

Строка фиксированной длины М (M
Тип Описание
NOT NULL

Все строки таблицы должны иметь значение в этом атрибуте. Если не указано, поле может быть пустым (NULL)
AUTO_INCREMENT

Специальная возможность MySQL, которую можно задействовать в числовых столбцах. Если при вставке строк в таблицу оставлять такое поле пустым, MySQL автоматически генерирует уникальное значение идентификатора. Это значение будет на единицу больше максимального значения, уже существующего в столбце. В каждой таблице может быть не больше одного такого поля. Столбцы с AUTO_INCREMENT должны быть проиндексированными
PRIMARY KEY

Столбец является первичным ключом для таблицы. Данные в этом столбце должны быть уникальными. MySQL автоматически индексирует этот столбец
UNSIGNED

После целочисленного типа означает, что его значение может быть либо положительным, либо нулевым
COMMENT Название столбца таблицы

Создание новой базы данных MySQL осуществляется при помощи SQL-команды CREATE DATABASE.

Создание новой таблицы осуществляется при помощи SQL-команды CREATE TABLE. Например, таблица books для книжного магазина будет содержать пять полей: ISBN, автор, название, цена и количество экземпляров: Чтобы избежать сообщения об ошибке, если таблица уже есть необходимо изменить первую строчку, добавив фразу «IF NOT EXISTS»:

Для создания автообновляемого поля с текущей датой типа TIMESTAMP или DATETIME используйте следующую конструкцию:

Добавление данных в эту таблицу осуществляется при помощи SQL-команды INSERT. Например:

Для извлечения данных из таблицы служит оператор SELECT. Он извлекает данные из базы, выбирая строки, которые отвечают заданному критерию поиска. Оператор SELECT сопровождает немалое количество опций и вариантов использования.

Символ * означает, что необходимы все поля. Например:

Для получения доступа только к некоторому полю следует указать его имя в инструкции SELECT. Например:

Чтобы получить доступ к подмножеству строк в таблице, следует указать критерий выбора, который устанавливает конструкция WHERE. Например, чтобы выбрать имеющиеся в наличии недорогие книги о PHP, надо составить запрос: % Соответствует любому количеству символов, даже нулевых
_ Соответствует ровно одному символу

Для того, чтобы строки, извлеченные по запросу, перечислялись в определенном порядке, используется конструкция ORDER BY. Например:

По умолчанию порядок сортировки идет по возрастанию. Изменить порядок сортировки на обратный можно с помощью ключевого слова DESC:

Сортировать можно и по нескольким столбцам. Вместо названий столбцов можно использовать их порядковые номера:

Для изменения ранее записанных в таблицу значений нужно воспользоваться командой UPDATE. Например, цену всех книг повысили на 10%:

Конструкция WHERE ограничит работу UPDATE определенным строками. Например:

Для удаления строк из базы данных используется оператор DELETE. Ненужные строки указываются при помощи конструкции WHERE. Например, какие-то книги проданы:

Если нужно удалить все записи

Для полного удаления таблицы используется:

Связь PHP с базой данных MySQL

Поработав с phpMyAdmin над созданием базы данных, можно приступить к подключению этой базы данных к внешнему Web-интерфейсу.

Чтобы получить доступ к базе данных из Web, используя PHP, надо сделать следующие основные шаги:

  • Подключение к серверу MySQL.
  • Выбор базы данных.
  • Выполнение запроса к базе данных:
    • добавление;
    • удаление;
    • изменение;
    • поиск;
    • сортировка.
  • Получение результата запроса.
  • Отсоединение от базы данных.

Для подключения к серверу базы данных в PHP есть функция mysql_connect( ). Ее аргументы: имя компьютера, имя пользователя и пароль. Эти аргументы можно опустить. По умолчанию имя компьютера = localhost, тогда имя пользователя и пароль не требуется. Если PHP используется в сочетании с сервером Apache, то можно воспользоваться функцией mysql_pconnect(). В этом случае соединение с сервером не исчезает после завершения работы программы или вызова функции mysql_close(). Функции mysql_connect() и mysql_pconnect() возвращают идентификатор подключения, если все прошло успешно. Например:

После того, как соединение с сервером MySQL установлено, нужно выбрать базу данных. Для этого используется функция mysql_select_db(). Ее аргумент: имя базы данных. Функция возвращает true, если указанная база данных существует и доступ к ней возможен. Например:

Для добавления, удаления, изменения и выбора данных нужно сконструировать и выполнить запрос SQL. Для этого в языке PHP существует функция mysql_query(). Ее аргумент: строка с запросом. Функция возвращает идентификатор запроса.

Пример 1

При каждом выполнении примера 1 в таблицу будет добавляться новая запись, содержащая одни и те же данные. Разумеется имеет смысл добавлять в базу данные, введенные пользователем.

В примере 2.1 приведена HTML-форма для добавления новых книг в базу данных.

Пример 2.1

Результаты заполнения этой формы передаются в insert_book.php.

Пример 2.2

В примере 2.2 введенные строковые данные обработаны функцией addslashes(). Эта функция добавляет обратные слеши перед одинарными кавычками (‘), двойными кавычками («), обратным слешем (\) и null-байтом. Дело в том, что по требованиям систаксиса запросов баз данных такие символы дожны заключаться в кавычки.

Для определения количества записей в результате запроса используется функция mysql_num_rows().

Все записи результата запроса можно просмотреть в цикле. Перед этим с помощью функции mysql_fetch_[] для каждой записи получают ассоциативный массив.

В примере 3.1 приведена HTML-форма для поиска определенных книг в базе данных.

Пример 3.1

Результаты заполнения этой формы передаются в search_book.php.

Пример 3.2

Альтернативный вариант

Итак, как работает архитектура Web-баз данных:

  1. Web-браузер пользователя выдает HTTP-запрос определенной Web-страницы. Например, пользователь, используя HTML-форму, ищет все книги о PHP. Страница обработки формы называется search_book.php.
  2. Web-сервер принимает запрос на search_book.php, извлекает этот файл и передает на обработку механизму PHP.
  3. PHP выполняет соединение с MySQL-сервером и отправляет запрос.
  4. Сервер принимает запрос к базе данных, обрабатывает его и отправляет результат (список книг) обратно механизму PHP.
  5. Механизм PHP завершает выполнение сценария, форматирует результат запроса в HTML. После этого результат в виде HTML возвращается Web-серверу.
  6. Web-сервер пересылает HTML в браузер, и пользователь имеет возможность просмотреть запрошенный список книг.

Использование механизма транзакций

Использование механизма транзакция на примере как передать деньги от одного человека другому

SELECT … FOR UPDATE

Если Вы запускаете несколько процессов, которые делают select запрос к одной и той же таблице, то они могут выбрать одну и ту же запись одновременно.

Чтобы избежать вышеупомянутой ситуации необходимо выполнить не просто SELECT запрос, а его расширенную версию, о которой многие и не подозревают: SELECT … FOR UPDATE.

Таким образом, при выполнении данного запроса, все затронутые записи в базе данных будут заблокированы до завершения сеанса работы с БД или до момента обновления данных записей. Другой скрипт не сможет выбрать заблокированные записи до тех пор, пока не наступит одно из упомянутых условий.

Однако не всё так просто. Вам нужно выполнить ещё несколько условий. Во-первых, ваша таблица должна быть создана на основе архитектуры InnoDB. В противном случае блокировка просто не будет срабатывать. Во-вторых, перед выполнением выборки необходимо отключить авто-коммит запроса. Т.е. другими словами автоматическое выполнение запроса. После того как вы укажите UPDATE запрос, необходимо будет ещё раз обратиться к базе и закоммитить изменения с помощью команды COMMIT:

Представьте что у нас есть 2 записи в таблице. Мы запускаем два параллельных скрипта с данным содержанием. В результате, первый процесс, который сможет достучаться до базы сделает выборку записи и сразу же заменит значение в поле locked на 1. В результате второй скрипт проигнорирует первую запись. В данном случае, даже если скрипты достучались бы до БД одновременно, второй скрипт всё равно не смог бы выбрать первую запись, т.к. при выборке первым процессом она будет заблокирована.

Выбор из БД в случайном порядке на PHP

В данном уроке я покажу Вам как создать БД (базу данных), пользователя БД. Также мы выведем информацию, которая хранится в БД средствами PHP. Урок очень простой, но не думайте, что информация в PHP всегда выводится в таком виде. Это один из способов.

Шаг 1. Создаем базу данных (БД)

В качестве локального сервера я использую Endels, у Вас может быть и другой локальный сервер. Что бы создать новую БД и пользователя набираем в адресной строке браузера https://localhost/endels/ , далее у нас появляется панель управления Endels. В левом меню выбираем пункт «Новая БД и пользователи».


После того, как вы выбрали данный пункт у Вас должна появится форма для заполнения. Как она выглядит можете увидеть на рисунке ниже:

Заполняем все пункты, кроме «Пароль администратора MySQL». Данный пункт заполнять не надо. В моем случае это выглядит так:

Заполняем данные пункты и нажимаем кнопку «Создать».

После этого у Вас загрузится phpMyAdmin. Находим в левой колонке свою БД, которую вы только что создали. Щелкаем по ней левой кнопкой мыши.

На данный момент она пустая, т.е. в ней нет ни одной таблицы с данными.

Шаг 2. Создаем таблицу с данными.

В данном шаге мы создадим таблицу с данными. Для этого в поле Имя – пишем название нашей таблицы, а в поле Количество столбцов – пишем число 4. У меня таблица будем называться testtable:

Далее нажимаем кнопку ОК. У вас откроется таблица, которую мы только что создали. Теперь начнем ее заполнять:

1я строчка

Имеет имя Id тип INT (т.е. целое число) Длина/значения 4, в столбце Индекс выбираем PRIMARY (первичный ключ), в столбце A_I (Auto_Increment) ставим галочку.

2я строчка

Имя title тип VARCHAR, длина/значения 255. Это будет заголовок нашего поста. Остальные столбцы оставляем без изменения.

3я строчка

Имя text тип text, длину значения в данной строчке не выбираем. В данной строке будет находится сам текст нашего поста.

4я строчка

Имя author тип VARCHAR, длина/значения 100 ) начинаем писать запрос. Для начала открывает тег PHP, открывается он так .

Пишем такой запрос:

Разбираем код.

  • $database – это переменна, в которую мы поместили соединение с сервером.
  • mysql_connect () – устанавливает соединение с сервером MySQL.
  • localhost – это наш локальный сервер.
  • testuser — это пользователь БД
  • 123 – это пароль.
  • mysql_select_db (); — выбирает базу данных MySQL.
  • lesson2 – имя нашей БД.

Шаг 5. Создаем запрос к нашей БД.

Затем в том месте, где вы хотите выводить записи пишем такой код:

Разбираем код.

  • $resultat – переменная, в которую мы поместили запрос на выборку информации.
  • mysql_query(); — Посылает запрос MySQL.
  • mysql_query («SELECT title, text, author FROM testtable», $database); — если сказать по-русски, то это будет звучать так ВЫБРАТЬ заголовок, текст, автора ИЗ testtable.
  • $myres – переменная, в которую мы поместили обработку нашего запроса, т.е. $resultat.
  • mysql_fetch_array (); — Обрабатывает ряд результата запроса, возвращая ассоциативный массив, численный массив или оба.

Далее у нас идет цикл do-while. В этом цикле мы выводим все наши переменные (title, text, author). Наш цикл пройдет по всей таблице и выведет все записи из нашей таблицы testtable.

Теперь все сохраняем и смотрим что у нас получилось.

Выбор из БД в случайном порядке на PHP

стандартно: берем последние 10 записей из базы и выводим

что надо: взять эти 10 записей и случайно перемешать

PS: как это сделать без временной таблицы, по другому у меня что-то моЗг не варит как сделать

order by RAND Limit 10

тогда берется 10 случайнах записей из ВСЕХ записей которые есть в БД

а надо просто взять 10 последних и перемешать их случайно

а надо просто взять 10 последних и перемешать их случайно

SELECT * FROM (SELECT * FROM `table1` ORDER BY `date` DESC LIMIT 10) as t1 ORDER BY RAND()

выбрать 10 последних, засунуть в массив $arr и shuffle($arr);

Зачем? Все можно сделать силами DB. SQL приведен мной выше

а не легче взять последние 10 записей в масиив и перемешать его с помощью функции shuffle (https://ru2.php.net/manual/ru/function.shuffle.php) ?

еще один спец по sql. )

p.s.
ничего личного

еще один спец по sql. )

просто не вижу смысла делать это используя sql

просто не вижу смысла делать это используя sql

ну как миниму на 2-3 строчки кода будет меньше, уже плюс, также и памяти меньше скушается, что совсем не маловажно

Ошибаетесь. Как раз мускул существенно больше сожрет ресурсов.

На чем основанно ваше заявление?

Если просто тупо подумать: Когда мускул будет делать рандом, данные у него уже будут в памяти т.к. он их только что выбрал из таблици, а если это будет делать пхп, то ему нужно будет сначало загрузить данные в память, а потом уже дальше. как минимум на одну операцию больше.

Опять по три копейки экономим?

Конкретно в данном примере дело даже не в экономии, а в корректности и читабельности кода.
Замусоревание кода разными ненужными shuffle неесть хорошо. Да и собственно ресурсы некогда небыли лишними

также и памяти меньше скушается

А о создании temporary table вы корректно забыли? 😉

А о создании temporary table вы корректно забыли? 😉

непонял, а причем тут TEMPORARY TABLE?

еще один спец по sql.
:bl:

Гляньте что выдаёт MySQL при EXPLAIN этого запроса 🙂

взять эти 10 записей и случайно перемешать

select * from (select * from table order by . desc limit 1,10) as a order by md5(что-нибудь)

MySQL намного лучше восприняла. 🙂

Хотя я лично больше склоняюсь к случайной сортировке на стороне php.

php или mysql выбирают данные из каждой комбинации в случайном порядке

У меня есть таблица с именем it_vit_qs, из которой я должен задать вопрос. Каждый набор вопросов должен получать qs из каждой категории (например, cat_id) и каждого уровня (например, lavel_id) в случайном порядке.

Обратите внимание: каждая категория (cat_ >

Now how i can select 5 question from each cat & level combination in random order. i have tried the below query but it seems like slow and bad practice. I have included my sql and its result. But I want to do it in efficient & easier way.

Я думаю, что это также можно сделать в PHP после запуска запроса.

SELECT * FROM it_vit_qs ORDER BY RAND ();

Не могли бы вы помочь мне сделать это в PHP из результата запроса mysql.

Выбор из БД в случайном порядке на PHP

Есть несколько задач, для которых необходимо в случайном порядке выдавать на страницу несколько записей, считываемых из базы данных. Например, это может быть баннерная крутилка или раздел сайта «случайная мысль». Так вот, можно реализовать эту задачу несколькими способами, и о двух из них я бы хотел рассказать в этом уроке.

Вот таким обраом я сделал свой первый скрипт, который печатал на странице случайный афоризм:

Что делает этот код ? Сначала мы формируем sql запрос, который вытаскивает все записи из таблицы quotes. Затем мы генерируем случайное число, которое не превышает количества записей, полученных из базы данных. С помощью функции mysql_result() мы получаем случайную запись, то есть мы используем случайное значение, как номер ряда в возвращаемом наборе. Третий аргумент этой функции — это номер колонки, то есть поле записи, в котором хранится то, что надо выдать.
Итак, недостатки этого кода очевидны:
1.) Перед тем, как использовать генератор случайных чисел, нам нужно где-то выше в программе предварительно инициализировать этот генератор. Кстати это делает функция srand().
2.) Придется все время хранить в уме номер колонки в которой хранится нужная информация. А если вдруг количество колонок в таблице изменится, нам придется изменять такой код.

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

В этом примере случайные значения генерирует сам сервер базы данных и возвращает каждый раз разные строки. Немного изменив код, можно выводить всю таблицу в случайном порядке:

Разве этот вариант не лучше ?
Я думаю, что лучше !

Выбор данных из MySQL в случайном порядке

Я хочу извлечь каждую строку из таблицы, но в случайном порядке. Как я могу это сделать? Я пробовал использовать rand() , но я не был успешным.

Моя база данных называется «permis54_permis-online-date», а моя таблица называется «intrebari».

Создан 18 июл. 14 2014-07-18 17:52:17 dpaul1994

Что вы пробовали? Дайте нам ваш запрос и ошибку. – Ronak Patel 18 июл. 14 2014-07-18 17:53:50

У меня нет кода прямо сейчас, потому что я его удаляю, я хочу попробовать что-то новое. У меня есть разум, открытый для предложений. – dpaul1994 18 июл. 14 2014-07-18 18:02:25

Выбор из БД в случайном порядке на PHP

Всем ещё раз привет) не подскажете, как сделать выбор одного из двух выражений? Желательно с примером:0024:

Набросок есть, но не знаю как осуществить выбор.

if($mydmg>>$userdmg) <
выбор рандомного выражения ($win или $loose);
> else <
$loose
>

Буду благодарен за ответы:)

Спасибо, работает а не подскажешь ещё, как сделать что бы можно было не 2 варианта всунуть, а 3,4,5 и т.д.?
я сам только с рандомной выборкой разбираюсь, поэтому точно не уверен, но думаю что так
если надо от 1 до 5, то

$win = rand(1, 5); // так
$win = rand(0, 4); // или такalexdrob, а почему rand(), почему не mt_rand(), он же быстрее
тут (https://www.php.net/manual/ru/function.mt-rand.php) прочитал

alexdrob, а почему rand(), почему не mt_rand(), он же быстрее
А почему когда пишут пример, пишут include а не recuire? он же быстрей.
Потому что
1) привычка
2) обобщённое название с другими языками, прежде всего говорящее человеку о том, что эта функция делает, судя по названию.
3) быстрей написать
4) в 4 из 5 случаев, rand сработал быстрей при тесте в цикле из 100 000 итераций, так что вопрос скорости спорный.

А почему когда пишут пример, пишут include а не recuire? он же быстрей.
вот поэтому и спрашиваю, потому-что я (сомневаюсь что только я один) пишу include, наверное потому что везде вижу include а не recuire

так что вопрос скорости спорный.
где-то ещё читал что в mt_rand генерация псевдослучайных чисел более случайная 🙂 или бред

гуглю уже не один день про рандомную выборку, поэтому и про mt_rand спросил
информации на эту тему куча, но всё же моих знаний не хватает, чтобы из неё выбрать/сделать самый быстрый и оптимальный вариант,
поэтому решил остановиться на простом варианте (пускай и немного корявом)

просто при каждом обновлении страницы выбирать рандомно 3 числа (id), проверить/исключить одинаковые, и выводить по ним данные из таблицы.
казалось бы пустяк, но не для меня

как я это вижу:
1) выбираю в массив все id
2) задаю по ним диапазон (для рандомной выборки)
3) рандом выбирает из этого диапазона 3 случайных числа (id), (если среди них будут одинаковые, то как-то их заменить на другие, чтобы все три числа (id) были разные)

первое понятно, а как 2 и 3 сделать

вот тут (https://www.html.by/threads/17600-Sluchajno-vydaem-neskolko-izobrazhenij?p=105950&viewfull=1#post105950) нашёл на форуме вариант с выборкой из определённого диапазона, но что-то не работает

1) выбираю в массив все idВы в массив все id из таблицы загоняете? А если там 10К-20К записей?

2) задаю по ним диапазон (для рандомной выборки)Не проще в условиях выборки поставить диапазон для id?

3) рандом выбирает из этого диапазона 3 случайных числа (id), (если среди них будут одинаковые, то как-то их заменить на другие, чтобы все три числа (id) были разные)SELECT id FROM table WHERE id BETWEEN 10 AND 20 ORDER BY RAND() LIMIT 0,3

вот поэтому и спрашиваю, потому-что я (сомневаюсь что только я один) пишу include, наверное потому что везде вижу include а не recuire

разнообразим!:0113: вот и ответ!

На самом деле в php много таких недоделок.. mt, bc, mb. для более инженерных рассчетов. И очевидно что они не быстрее чем deprecated-core аналоги — они точнее и быстрее чем аналогичная реализация даваемых ими возможностей на php поэтому написаны на С и включены в последующие сборки php-core

Вы в массив все id из таблицы загоняете? А если там 10К-20К записей?
в данный момент я рассчитываю на то что записей будет примерно 1к
(если будет больше, тогда буду искать другое решение)

SELECT id FROM table WHERE id BETWEEN 10 AND 20 ORDER BY RAND() LIMIT 0,3
видимо забыл дописать, без использования ORDER BY RAND()
рандом с помощью php, rand()/mt_rand()

Мастер Йода рекомендует:  Веб-фреймворк Electron обновили до версии 4.0
Добавить комментарий