Вывод случайной цитаты на PHP

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

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

demosourse

Давайте посмотрим на код PHP:

<?php
$quotes[] = 'Монета, упавшая на дно реки, может показаться рыбам подарком с неба. Что они будут делать с этим подарком?';
$quotes[] = 'Если увидишь нечто, к чему стоит приложить руку, поступи не так, как подсказывает разум, но как велит настроение.';
$quotes[] = 'Если то, что ты делаешь, трудно тебе - посмотри, нуждаешься ли ты в этом.';
$quotes[] = 'Возможно, твои ошибки - это то, что нужно Миру.';
$quotes[] = 'Всякий может ударить слабого, но только слабый хочет ударить слабого.';
srand ((double) microtime() * 1000000);
$random_number = rand(0,count($quotes)-1);
echo ($quotes[$random_number]);
?>

Теперь давайте более детально разберем этот код. Для начала мы задаем 5 цитат ("quotes"). Пример оформления цитат Вы можете видеть сверху. Далее в переменной "random_number" мы указали, что необходимо случайным образом выбирать одну цитату из всех. И в конце, мы выводим результат echo ($quotes[$random_number]).

Надеюсь, что все понятно! Если же нет, всегда готов ответить на Ваши вопросы в комментариях.

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.4webhelp.net
Перевел: Максим Шкурупий
Урок создан: 24 Апреля 2009
Просмотров: 45615
Правила перепечатки


5 последних уроков рубрики "PHP"

  • Фильтрация данных с помощью zend-filter

    Когда речь идёт о безопасности веб-сайта, то фраза "фильтруйте всё, экранируйте всё" всегда будет актуальна. Сегодня поговорим о фильтрации данных.

  • Контекстное экранирование с помощью zend-escaper

    Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

  • Подключение Zend модулей к Expressive

    Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

  • Совет: отправка информации в Google Analytics через API

    Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

  • Подборка PHP песочниц

    Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

или авторизуйтесь, чтобы добавлять комментарии, оценивать уроки и сохранять их в личном кабинете
  • 24 Апреля 2009 23:58
    Игорь
    Вот это супер! Классная штука, как раз кстати. Буквально 3 дня назад думал о ней!
  • 25 Апреля 2009 00:03
    Игорь
    Благодарю Евгений!
  • 25 Апреля 2009 06:56
    Roman
    Отлично.. так можно и с рисунками делать =)
  • 25 Апреля 2009 10:22
    Виталий
    То "Игорь", Евгения-то поблагодарили, а Максима? Он же этот урок написал.
  • 25 Апреля 2009 13:59
    Игорь
    Максим тебе тоже спасибо! Всё понятно объясняете спасибо!
  • 25 Апреля 2009 14:22
    Сергей
    Не получилось
  • 25 Апреля 2009 22:33
    AlexGrin
    Офигеть... в Php даже srand из c++ взят))) Недаром когда начал PHP изучать, удивился, что это практически С++.
  • 26 Апреля 2009 03:10
    Мирон
    Я бы за место этого: srand ((double) microtime() * 1000000); $random_number = rand(0,count($quotes)-1); echo ($quotes[$random_number]); Написал бы это: shuffle($quotes); for ($i=0;$i<1;$i++) echo $quotes[$i];
  • 26 Апреля 2009 03:18
    Мирон
    Сорри за оффтоп, а простые юзеры могут выкладывать уроки/статьи? Я бы мог поделится...
  • 26 Апреля 2009 13:06
    dima
    Мирон, попробуй написать в тикеты службы поддержки http://www.evgeniypopov.ru/ в письмо прикрепи свой урок и может быть чонибудь разместят.)))
  • 26 Апреля 2009 18:13
    Gera
    добрый день ! Подскажите пожалуйста новичку как сделать что бы этот код работал? Я не сильно знаком с php...Заранее благодарен Вам ! Спасибо
  • 26 Апреля 2009 19:32
    dima
    Gera, пример рабочий, абсолютно) что конкретно не получается?
  • 26 Апреля 2009 21:30
    Gera
    Извините, что то я ступил :) Все работает прекрасно !!! Спасибо еще раз,коллеги !!! Люблю общаться с людьми, с общими интересами, пишите мне, буду рад общению ! ICQ 9932239
  • 27 Апреля 2009 02:16
    STALKER
    RuSeller рулит!!!
  • 28 Апреля 2009 21:08
    Игорь_Ермаков
    Нельзя ли сделать так, чтобы эти циаты выводились не только при обновлении страницы, а например через каждые 30 секунд?
  • 28 Апреля 2009 21:09
    Игорь_Ермаков
    Мирон, я отправил в службу поддержки урок, его через некоторое время разместили.
  • 28 Апреля 2009 22:41
    dima
    > а например через каждые 30 секунд? это нужно на аяксе или на jquery с обновлением в фоновом режиме. на php тока с обновлением странички
  • 3 Мая 2009 14:58
    Dmitro
    подскажите как сфлрмировать запрос к базе, в которой лежат цитаты, и выводить по 1 на определённую страницу. Заранее спасибо!
  • 4 Мая 2009 18:39
    AnpiL
    Спасибо... Мелочь, но полезная...
  • 10 Мая 2009 11:50
    Alexsin
    Евгений, у меня вопрос тоже случайного вывода, как реализовать ума не приложу. у меня есть база состоящяя из 100 записей, 2 колонки: Первая "ID", Вторая: "numbers". В колонке "ID" идет авто заполнение, а в колонке "numbers" разные числа. мне нужно выводить 6 случайных чисел из колонки "numbers". если Вас не затруднит, то не могли бы Вы помоч мне в реализации этого?
  • 10 Мая 2009 14:59
    dima
    Alexsin, запрос будет примерно такой: SELECT id,numbers FROM baza WHERE id='$id' ORDER BY RAND() LIMIT 6
    • 17 Марта 2012 08:18
      Alex_Ustosu
      просто как и все гениальное! СПАСИБО за подсказку!!!
  • 11 Мая 2009 00:21
    Alexsin
    dima, спасибо за помощь!=)
  • 17 Июня 2009 23:24
    Виталий
    echo ($quotes[$random_number]); вот сдесь не ясно?
  • 19 Июня 2009 23:46
    Нагнаг
    В данном скрипте цитаты меняются слишком часто) Я немног доработал, что цитаты менялись раз в день) $date = date("d"); $result = mysql_query ("SELECT label FROM database WHERE id='$date'", $db); $myrow = mysql_fetch_array($result); echo $myrow['label']; Единственный минус в том, что цитат будет не больше 31, хотя если еще немног поэксперементировать со времем то можно развить скрипт дальше) Думаю, кому то поможет))
  • 24 Июня 2009 22:33
    Alexsin
    Виталий, в Вашем варианте возможны совпадения вывода. Мне нужно было выводить не одо значение, к тому же про два столбуа и цыфры я сказал для упрощения понимания, там все на много сложнее, вывод идет из нескольких таблиц. Но все равно спасибо. Все реализовано=)
  • 4 Февраля 2010 10:32
    HOG_Seruj
    Подскажите, а как сделать что бы цытаты выводились не при перезагрузке страницы, а через определенное время, на пример менялись через 2-3 дня?
  • 18 Февраля 2010 11:28
    David
    Меня интересует тоже аналогичныи вопрос только не с цитатами а коментами. Как сделать чтобы они обновлялись без нажатия рефреш? Все таботает только надо обновлять страницу после добавки комента.
  • 3 Марта 2010 08:20
    Сергей
    ответ на вопрос Dmitro (2009-05-03 14:58:19) $res = mysql_query('SELECT * FROM quotes'); if (mysql_num_rows($res) > 0) { $quotes = mysql_fetch_array($res); } srand ((double) microtime() * 1000000); $random_number = rand(1,count($quotes)+1); do { if ($quotes['id'] == $random_number) { echo ($quotes['text']); } } while ($quotes = mysql_fetch_array($res)); Я сделал таким образом
  • 18 Ноября 2010 15:55
    goodhashik
    Простите чайника, но почему у меня не выводятся сами цитаты?)
  • 1 Июля 2012 21:02
    геннадий
    привет всем код в оригинале то, что надо спасибо но в оригинальной версии он как бы не нужен. мне бы эти случайные фразы из бд вытаскивать то что предложил Сергей тоже хороший как вариант. только вот он что-то не всегда срабатывает.. если перезагружаешь страницу то он или повторяет текст или вообще ничего не пишет.. он работает только при первом запуске страницы.. помогите пожалуйста сделать, так что бы при обновлении страницы выводился новый текст с бд .. большое вам спасибо
  • 25 Июля 2012 18:39
    ghostlyp
    <?
    session_start(); $quotes[] = 'Монета, упавшая на дно реки, может показаться рыбам подарком с неба. Что они будут делать с этим подарком?'; $quotes[] = 'Если увидишь нечто, к чему стоит приложить руку, поступи не так, как подсказывает разум, но как велит настроение.'; $quotes[] = 'Если то, что ты делаешь, трудно тебе - посмотри, нуждаешься ли ты в этом.'; $quotes[] = 'Возможно, твои ошибки - это то, что нужно Миру.'; $quotes[] = 'Всякий может ударить слабого, но только слабый хочет ударить слабого.'; $num = rand(0,count($quotes)-1); $nume = count($quotes)-1; if($num == $_SESSION['num']){ if($num > $nume){$num = $num - 1;}else{$num = $num + 1;} } $_SESSION['num'] = $num; $numer = $num + 1; echo"$numer. $quotes[$num]";
    ?>
    Вам остается только добавлять строки цитат Одна цитата дважды не повторяется :-)э
  • 18 Апреля 2013 02:13
    mosalev
    Зачем использовать srand ( (double) microtime() * 10 000 00);? устаревшее уже, да и не неужно
  • 24 Октября 2013 13:52
    t_mclagen
    Здравствуйте =) У меня вопрос. Я совсем ничего не смыслю в php, но приходится сейчас использовать этот вариант, за не имением лучшего. Как сделать так, чтобы выводилась не одна случайная цитата, а, к примеру, 10 из 50, причем каждая из них в новом блоке? Такое вообще возможно именно с этим скриптом?
  • 27 Февраля 2015 00:14
    information_junkie
    Привет ребята, подскажите как сделать, так что бы цитата, обновлялась, по клику то есть, по нажатию.!) ))
  • 9 Июня 2015 14:28
    Раймондс
    Здравстйте. Спасибо за код автору! поставил работает. У меня просьба к уважаемым знатокам. Подскажите пожалуйста что нужно добавить в код, чтобы цитаты выводилсь одним цветом? (к примеру красным или синим, зеленым) Вообще возможно ли сделать их цветными вразнобой? У меня цитат 40 штук. Спасибо за ответ.
  • 5 Февраля 2016 15:05
    cherepinfo
    Привет всем! Кто-то решил вопрос по выводу цитаты через определенное, заданное время так же в рандомном порядке, без повторений цитат ???
^ Наверх ^