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

« Предыдущая запись
 
  Следующая запись »
 

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

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


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

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

CREATE TABLE `articles` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(120) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
INSERT INTO `articles` VALUES (1, 'Статья 1');
INSERT INTO `articles` VALUES (2, 'Статья 2');
INSERT INTO `articles` VALUES (3, 'Статья 3');

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

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

<?
$dbhost = "localhost";
$dblogin = "root";
$dbpassword = "";
$db = "mydb";
$site = mysql_pconnect($dbhost, $dblogin, $dbpassword) or die("Подключение к серверу не установлено, проверьте ваш логин или пароль");
@mysql_select_db($db) or die("База не может быть загружена, проверьте её имя");
mysql_query("SET NAMES cp1251", $site) or die(mysql_error());
mysql_query("SET CHARACTER SET cp1251", $site) or die(mysql_error());
?>
  1. Строки 2-5. Определяем название хоста (как правило, localhost, в редких случаях иначе), логин, пароль, имя базы данных.
  2. Строка 6. Собственно создаём соединение с сервером.
  3. Строка 9. Соединяемся с нашей базой данных.
  4. Строки 11-12. На них стоит обратить особое внимание. Без этих строк может выводиться лытдыбр, поэтому прописать эти строки с кодировкой, используемой на сайте, необходимо.

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

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

<?
$num_rand=2;
$result = mysql_query("SELECT `id` FROM `articles`");
$ligne = mysql_num_rows($result);
srand ((float) microtime() * 10000000);
$s = array ();
for($m=0;$m<$ligne;$m++)
{
   list($id_art) = mysql_fetch_array($result);
   array_push ($s,$id_art);
}
$s = array_flip ($s);
$r = array_rand (array_unique ($s), $num_rand);
list ($id) = $r;
for($i=0;$i<count($r);$i++)
{
   $article=mysql_query("SELECT `name` FROM `articles` WHERE `id`=\"".$id."\" LIMIT 1");
   list($name_article) = mysql_fetch_array($article);
   ?>   
   <p><?=$name_article?></p>
   <?
   $id=next ($r);
}
?>
  1. Строка 2. В переменную $num_rand определяем количество записей, которое нам нужно будет вывести из таблицы. ВНИМАНИЕ! Если запись нужна одна, то надо не только будет прописать тут единичку, но и немного изменить код (об этом ниже). ТАКЖЕ это число не должно превышать число записей в таблице. Чтобы такого не было, можно написать функцию проверки чуть ниже по коду, но это при особом желании.
  2. Строка 3. Обращаемся к БД и выбираем из таблицы все поля id - по ним мы будем делать рендом. Поскольку id уникальное для каждой записи, то по ней мы потом и будем извлекать имя записи.
  3. Строка 4. Считаем сколько всего у нас записей в таблице. Вот как раз после этой строчки можно сделать проверку, о которой говорилось в пункте 1 - если число записей меньше, чем число нужных рендомных записей, то поставить число нужных рендомных записей равному, например, суммарному числу записей в таблице.
  4. Строка 5. Запускаем генератор случайных чисел (без него не будет работать функция рендома).
  5. Строка 6. Создаём переменную $s, которая будет представлять собой свой массив, содержащий все идентификаторы, извлечённые из таблицы.
  6. Строки 7-11. Собственно здесь мы каждую запись из таблицы записываем в массив.
  7. Строка 12. А вот тут важный момент - мы инвертируем ключи массива и их значения. Это всё из-за того, что предыдущее действие нам записало их нам реверсивно, из-за чего мы сейчас их и ставим на свои места.
  8. Строка 13. Собственно в переменной $r создаётся массив из рендомных записей в количестве указанных нами штук (переменная $num_rand).
  9. Строка 14. В переменной $id будет храниться те рендомные ключи id, которые мы вытащили вначале кода и с помощью которых будем извлекать название записей.
  10. Строка 15. Запускаем цикл для вывода нужного числа рендомных записей.
  11. Строка 17. Делаем запрос к таблице с целью вытащить название записи по выбранному рендомом идентификатору.
  12. Строка 19. Собственно в переменную $name_article извлекаем название записи.
  13. Строка 21. Выводим название записи в качестве абзаца
  14. Строка 23. Подготавливаем следующую запись из массива для вывода.

В завершении

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

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

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

mysql_query(”SELECT `name` FROM `articles` ORDER BY RAND() LIMIT ″.$num_rand);

 

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

ЗЫ - а пример можно скачать по ссылке.

, ,

1 звезда2 звезд3 звезд4 звезд5 звезд (голосов: 8, средний: 4.00 из 5)
Понравилась статья или журнал? Подписывайся на продолжение!
Отзывов: 65 на запись

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

  1. Спасибо за статью,все подробно\хорошо расписано.Продолжай в том же духе)

  2. Спасибо, бум стараться=)

  3. А не проще ли и правильней в запросе написать order by rand() ?? А то уж очень много телодвижений

  4. Согласен, даже наверное об этом стоило написать, но просто я что-то про это забыл. А в статье просто хотелось совместить две простые вещи: первая – подключение к БД, второе – рэндомная выборка на пхп. В итоге вот так скрестилось.
    Спасибо за комментарий, он натолкнул на идею новой статейки.

  5. Ух, вот ведь жесть! Извините, но вы популяризируете “быдлокодинг”.
    Сокращаем количество sql-запросов до двух:

    mysql_query(”SELECT `name` FROM `articles` WHERE `id` IN(".implode(', ', $r).")″);

    Ну и как было отмечено выше, сокращаем до одного запроса:

    mysql_query(”SELECT `name` FROM `articles` ORDER BY RAND() LIMIT ″.$num_rand);

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

  7. Спс за статью, а возможно ли что бы воводились случайные строки из базы, но с приоритетом на определённый столбец(что бы они показывались например чаще)?

  8. всегда пожалуйста!
    да, можно, причём различными способами. в голове пока появилось два. первый из них основан на рэндомной выборке пхп, то есть на том двадцатистрочном коде. итак, допустим у каждой записи есть цифра приоритета 1, 2, и 3, где 1 – это менее популярная, а три – наиболее популярная. когда мы создаём массив из значений, который будут рендомны, то мы можем добавлять одно и то же значение несколько раз, в зависимости от того, какой приоритет. думаю понятная суть.
    второй способ,который мне пришёл в голову, это не нагружать пхп, а создать дополнительную таблицу, в которой будет столбец с id созданной нами таблицы. например, когда мы создаём запись с приоритетом 3, то в эту доп.таблицу три (или 10, или 20, или 30) раза записывается нужное значение id из первой таблицы. а рэндом будет создаваться, соответственно, из доп. таблицы через order by rand

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

    Вот к примеру код который будет выводить строки от большего к меньшему по содержимому столбца “prioritet”

    mysql_query("SELECT * FROM `rondom` ORDER by prioritet DESC");

    Задача в том что нужно сделать вывод строк рандомом но что бы те у которых значение “prioritet” будет больше, показывалось чаще.

  10. Александр Шуйский
    02/03/2010 at 23:13 Постоянная ссылка Цитировать

    я понимаю, но всё таки как это сделать оптимальнее – вопрос.

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

  11. Алексей
    19/03/2010 at 8:04 Постоянная ссылка Цитировать

    Не в обиду будет сказано, но все таки не надо ничего изобретать, как было сказано в пред комменте order by priority desc и все, зачем грузить ПХП, раз запрос к БД делается. здесь я везде использовал именно приведенный выше способ – никаких проблемм не возникло. Статья полезна только для того что бы правильно создать БД, причем charset=… должно быть написано не как рекомендация, а как правило или догма, если хотите (вернее не хотите проблемм в будущем) Всем удачи.

  12. мм, в последних комментариях шла речь о том, что нужна случайная выборка из бд, но с учётом того,ч то если у кого-то приоритет выше, то они должны выводиться чаще. order by priority desc только отсортирует их по приоритету.
    по поводу чарсета полностью согласен, издержки старой редакции

  13. Виталий
    13/04/2010 at 17:56 Постоянная ссылка Цитировать

    Всем привет. У меня сделана так на сайте http://www.awror.ru
    $result000 = mysql_query (“SELECT title,id,dates,text,authors,views FROM `table` ORDER BY rand() LIMIT
    Посоветуйте как вывести таблицы по порядку с конца.
    P.S. Буду ждать ответа, как соловей лета.

  14. ммм, ну вообще рэндом есть рэндом. можно попробовать написать “order by rand() DESC”, но не думаю,что поможет. а что именно надо сделать, конкретно?

  15. Виталий
    14/04/2010 at 9:53 Постоянная ссылка Цитировать

    Мне нужно, что бы ВСЕ таблицы из базы выводились с конца к началу (пример: c ID = 30 по ID =1).

  16. может быть все записи из таблицы? тогда надо дописать “ORDER BY id DESC”

  17. Виталий
    15/04/2010 at 11:10 Постоянная ссылка Цитировать

    Тоесть если ORDER BY id DESC LIMIT 2 – вывод 2 последних полей.
    А если ORDER BY id DESC – то вывод всех полей с конца .
    Я правельно понял ?
    P.S. Буду ждать ответа, как соловей лета.

  18. Виталий
    15/04/2010 at 11:56 Постоянная ссылка Цитировать

    СПС за поддержку я разобрался с выводом полей из таблиц с конца к началу
    Делается так:
    ORDER BY id DESC LIMIT – вывод всех полей с конца
    ORDER BY id DESC LIMIT 2 – вывод 2 полей с конца

  19. всё правильно.
    правда когда LIMIT не указывается, то слово ЛИМИТ можно опустить =)

  20. спасибо ,именно последнюю строчку искал=)

  21. Пожалйста! =)

  22. Александр
    30/05/2010 at 14:58 Постоянная ссылка Цитировать

    Александр Шуйский, чет ты в этой статье намудрил :) можно было попроще сделать так например:
    $result99 = mysql_query (“SELECT id,title,mini_img FROM data ORDER BY RAND() LIMIT 1″);
    $myrow99 = mysql_fetch_array($result99);

    И через принтф выводить)))

  23. ну вообще-то про это и написано в самом конце статьи =)

    а пример с пхп да, мудрёный, неудачный. думал удалить, но оставил. как пример рендомизации из массива=)

  24. Михаил
    20/07/2010 at 10:57 Постоянная ссылка Цитировать

    На самом деле RAND() то же не выход, когда у Вас много строк в БД… Т.к. RAND() создает копию таблицы с еще одним полем, где хранится рандомное значение, а потом просто сортирует по этому значению, следовательно, если у Вас в таблице 100 000 строк, то они сначала с копируются, а только потом будет происходить выборка… А если у Вас 1 000 000 строк???? Так что, необходимы другие костыли :)

  25. Ну, обычно сайты с такими ахтунговыми таблицами сами по себе требуют индивидуального подхода и решений, а в большинстве случаев и рЕндом можно обойтись. =)

  26. Михаил
    20/07/2010 at 22:02 Постоянная ссылка Цитировать

    Согласен, но все-таки это тоже надо бы учитывать, дабы таблицы имеют привычку расти :)

  27. Что верно, то верно, полностью согласен =)

  28. Спасибо огроменное! Много что полезного нашла для себя! :)

  29. Это всегда пожалуйста =)

  30. Виталий
    15/10/2010 at 19:07 Постоянная ссылка Цитировать

    Есть еще на этом свет те кто без корыстно помогает. СПС еще раз за статью и за поддержку. Очень даже помогла

  31. Был рад помочь!

  32. Андрей Мелентьев
    29/04/2011 at 6:43 Постоянная ссылка Цитировать

    Так а вот мне надо чтоб , он целые предложения выводил, отдельные фразы хранятся в разных таблица. Я добился составления 1-го предложения, как мне сделать чтоб он мне допустим 5 выводил?

  33. Если я правильно понял – есть несколько таблиц, там разные части предложений, и они потом составляются в полное предложение. Так?
    Мне бы код глянуть или поподробнее описание – сколько таблиц, как связаны и так далее, и, самое главное, смысл, потому что без него как-то очень однобока работа получается, можно не увидеть вероятных лучших решений.

  34. Андрей Мелентьев
    03/05/2011 at 5:39 Постоянная ссылка Цитировать

    Спасибо уже сделал чтоб выводил предложения или даже несколько терь другая проблема надо как-то зациклить или создать условия для этого скрипта. Например чтоб юзер зашел на страничку вписал в поле скока ему нужно абзацов, и цикл провернул столько раз повторил этот код. кстати кому интерестно вот код чтоб делать ценлые абзацы.
    З.Ы.: Сделана по таблице универсального генератора речи: http://terrasochi.ru/tag/%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%20%D1%80%D0%B5%D1%87%D0%B8/

    А вот собственно и код:

    <?php
    $min = 2;
    $max = 6;
    $num_rand = rand($min, $max);
    $result = mysql_query("SELECT `id` FROM `lib1`");
    $ligne = mysql_num_rows($result);
    srand ((float) microtime() * 10000000);
    $s = array ();
    for($m=0;$m<$ligne;$m++)
    {
    list($id_art) = mysql_fetch_array($result);
    array_push ($s,$id_art);
    }
    $s = array_flip ($s);
    $r = array_rand (array_unique ($s), $num_rand);
    list ($id) = $r;
    for($i=0;$i

    З.Ы.Ы.: Генерирует рандомное количество с 2 до 6 предложений то есть 1 абзац

  35. Андрей Мелентьев
    03/05/2011 at 5:59 Постоянная ссылка Цитировать

    Короче вот результат http://shiro-sushi.ru/
    код не влезает вот концовка
    $article=mysql_query(“SELECT `slv1` FROM `lib1` ORDER BY RAND() LIMIT 2″.$num_rand);
    list($name_article1) = mysql_fetch_array($article);
    $article=mysql_query(“SELECT `slv2` FROM `lib2` ORDER BY RAND() LIMIT 2″.$num_rand);
    list($name_article2) = mysql_fetch_array($article);
    $article=mysql_query(“SELECT `slv3` FROM `lib3` ORDER BY RAND() LIMIT 2″.$num_rand);
    list($name_article3) = mysql_fetch_array($article);
    $article=mysql_query(“SELECT `slv4` FROM `lib4` ORDER BY RAND() LIMIT 2″.$num_rand);
    list($name_article4) = mysql_fetch_array($article);
    ?>

    <?
    $id=next ($r);
    ну и там выстраивайте как вам вздумаеться

  36. Прошу прощения за долгий ответ, по правде говоря забыл. Но исправляюсь. Итак.

    У вас какой-то очень сложный код – много лишнего и много запросов. Поскольку таблицы небольшие по количеству данных, то можно вот так код построить


    $num_rand = rand(2, 6);
    for ($i=0; $i<$num_rand; $i++) {
    $article=mysql_query("SELECT `slv1`,
    (SELECT `slv2` FROM `lib2` ORDER BY RAND() LIMIT 1),
    (SELECT `slv3` FROM `lib3` ORDER BY RAND() LIMIT 1),
    (SELECT `slv4` FROM `lib4` ORDER BY RAND() LIMIT 1)
    FROM `lib1` ORDER BY RAND() LIMIT 1");
    list($name_article1, $name_article2, $name_article3, $name_article4) = mysql_fetch_array($article);
    echo $name_article1.$name_article2.$name_article3.$name_article4;
    }

    Вот количество запросов сводится к 2-6, вместо порядка 8-24 или скольких то там.
    Подправите только код под себя на тему вывода и всё.

  37. алексей
    30/05/2011 at 22:25 Постоянная ссылка Цитировать

    Значит у меня следующая проблема: код то работает, но только от 2-х и более баннеров. как сделать на 1?

  38. Код учебный, его не нужно использовать. Юзайте ORDER BY RAND()

  39. алексей
    30/05/2011 at 22:46 Постоянная ссылка Цитировать

    можно подробнее что икак прописать. а то я пробовал: mysql_query(”SELECT `name` FROM `articles` ORDER BY RAND() LIMIT ″.$num_rand);
    не получается. говорит синтаксис неправильный

  40. Алексей читай выше там все по полочкам расписано. Кстати закончил работу над преображением кода в генератор тестов, в скором времени появиться в сети. Александр Там теперь у меня все как надо=) fishtext.ru вот пример моей переделки под генератор рыбы. Оцените если вам не сложно. Огромное спасибо автору за исходник.

  41. 2алексей, поисправляйте кавычки на стандартные двойные.
    2Андрей, дык нормуль всё. Вот если ещё на аякс подгрузку посадить, ваще айс будет =)

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

  43. О_о
    форма, которая передаёт значение любым методом, это значение прицепляется к $num_rand, проблемы никакой нет

  44. проблем вообще не $num_rand генерирут сколько предложений будет в обзаце

  45. я смотрю код в коменте и вижу, что количество предложений генерирует нум_ранд.

  46. Если вы хотите положить свой MySQL сервер, то можете и дальше использовать ORDER BY RAND(). Но умные люди подобных запросов не напишут никогда.

  47. а почему так категорично? если таблица небольшая, пара тысяч записей максимум, то можно использовать и ORDER BY RAND()

  48. Количество посетителей тоже стоит учитывать. Есть способы куда более экономные.

  49. естественно! но стоит ли ловить блох, если сочетание числа записей и посетителей позволяет это делать без особой потери производительности?

  50. Если есть потенциально узкое место, то от него нужно сразу избавляться. ORDER BY RAND() далек от понятия “экономия на спичках” и “ловля блох”, данный способ даже на небольших таблицах показывает очень большое время выборки. А вот это $article=mysql_query("SELECT `slv1`,
    (SELECT `slv2` FROM `lib2` ORDER BY RAND() LIMIT 1),
    (SELECT `slv3` FROM `lib3` ORDER BY RAND() LIMIT 1),
    (SELECT `slv4` FROM `lib4` ORDER BY RAND() LIMIT 1)
    FROM `lib1` ORDER BY RAND() LIMIT 1");вообще убийство.
    Не важно сколько есть данных, важно сколько их будет.

    P.S. UTF-8 стандарт, зачем учить использовать win-1251?

  51. хм, надо будет затестировать всю эту тему, видимо у меня тут пробел на тему производительности.

    дааа, когда-то работал с вин кодировкой. не вижу ничего зазорного в её использовании. хотя сам сейчас под ютф всё время делаю.

  52. Боюсь ошибиться, но видимо вам думается, что LIMIT 1 выбирает только одну запись. Стоит уточнить, мускул, сколько бы в LIMIT не стояло, всегда выбирает все записи (ну или те, которые попали в условие WHERE) и уже только после этого отбрасывает ненужные согласно значениям в LIMIT.

  53. разве? вроде бы сам лимит берёт только первую подходящую запись и успокаивается, а вот order by rand() как раз берёт именно все записи, а потом из них выбирает случайно?

  54. Я как раз про ORDER BY RAND() и говорю.

  55. ааа, ну это да.

  56. Андрей
    09/12/2011 at 10:08 Постоянная ссылка Цитировать

    А не проще ли и правильней в запросе написать order by rand() ?? А то уж очень много телодвижений

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

  57. Андрей Мелентьев
    12/12/2011 at 9:03 Постоянная ссылка Цитировать

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

    Проблема не в правильно, про правильно люди сами догонят. Нужно просто преподнести это понятно.

  58. МегаКодер
    04/03/2012 at 22:16 Постоянная ссылка Цитировать

    Ух, вот ведь жесть! Извините, но вы популяризируете “быдлокодинг”.
    Сокращаем количество sql-запросов до двух:

    mysql_query(”SELECT `name` FROM `articles` WHERE `id` IN(“.implode(‘, ‘, $r).”)″);

    Ну и как было отмечено выше, сокращаем до одного запроса:

    mysql_query(”SELECT `name` FROM `articles` ORDER BY RAND() LIMIT ″.$num_rand);

    вы тоже пишете бред
    да вообще вся эта статья мусор
    если у вас в таблице будет больше 100 000 строк, тогда ваш код ORDER BY RAND() будет висеть по 10 секунд и очень быстро накроется сервер
    нужно понимать что MySQL при вызове ORDER BY RAND() создает новую временную таблицу размером с исходной, в общем надеюсь поняли что копируется таблица, удаляется на это все время уходит

    Писать говносайтики может любой но когда дело дойдет до производительности все нафиг загнется

    как сделать правильно?

    лаконично и просто и без затрат

    $offset_result = mysql_query(“SELECT FLOOR(RAND() * (COUNT(*)-15)) AS `offset` FROM `xxx`;”);
    $offset_row = mysql_fetch_object($offset_result);
    $offset = $offset_row->offset;
    $query = “SELECT * FROM `xxx` LIMIT $offset, 15;”;

    в данном случае скорость выборки возрастет в несколько тысяч раз – запрос аналогичен

    $query = “SELECT * FROM `xxx` ORDER BY RAND() LIMIT 0 , 15;”;

    но работает как я уже написал в тысячи раз быстрее

    говнокодеры хреновы, и книги тоже пишут говнокодеры привыкшие работать с табличками в несколько сотен строк
    с таким успехом нафиг MySQL – берите блокнот и вперед

  59. Андрей Мелентьев
    06/03/2012 at 6:37 Постоянная ссылка Цитировать

    Дружище, МегаКодер! Едиственное быдло тут ты. Раз ты такой ниэпический кодер почему не ты писал эту статью, кстате fishtext.ru норм робит и генерирует. У нас тут не занимаютюся обсианием автора или подпищиков, унас ищут выход из проблемы. А ты себя выставил МегаКодер’ом го***о ты прости госпади.

  60. Евгений
    13/12/2012 at 23:06 Постоянная ссылка Цитировать

    $offset_result = mysql_query(“SELECT FLOOR(RAND() * (COUNT(*)-15)) AS `offset` FROM `xxx`;”);
    $offset_row = mysql_fetch_object($offset_result);
    $offset = $offset_row->offset;
    $query = “SELECT * FROM `xxx` LIMIT $offset, 15;”;

    так вот этот код отлично работает но бывает такое что выводиться меньше чем надо записей можно ли это исправить ??? подскажите.

  61. Дмитрий
    10/02/2013 at 15:05 Постоянная ссылка Цитировать

    mysql_query (“SELECT id,title,mini_img FROM data ORDER BY RAND() LIMIT 1″);

    Спасибо

  62. Информация
    22/06/2013 at 18:19 Постоянная ссылка Цитировать

    МегаКодер, вы бы не могли подсказать, зачем в SQL запросе находятся математические выражения?

  63. Здравствуйте, Александр! Я только начинаю знакомиться с php, к тому же блондинка :) в общем, незадача… хочу, чтоб рандомно из таблицы БД выводились всякие умные мысли и цитаты, сам текст и ниже с выравниванием по правому краю и курсивом имя автора… но вот как это реализовать… пробовала через echo, ругается на синтаксис. без него – вообще ничего не выводит… может, подскажете, как правильно сделать? :)

  64. Александр Шуйский
    27/11/2013 at 11:06 Постоянная ссылка Цитировать

    Доброе утро, госпожа блондинка =)
    Присылайте ваш код, посмотрим.

  65. ок, Александр. :) полагаю, что можно на почту… :) сейчас отправлю.

Добро пожаловать, коллега! Вы можете оставить свой отзыв:





Допустимые XHTML-теги:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Подписка на комментарии