<MyRusakov.ru />

PHP и MySQL с Нуля до Гуру

PHP и MySQL с Нуля до Гуру

Данный курс - это более 20-ти часов видеоуроков по изучению PHP и MySQL. Ключевой момент курса - это создание движка для сайта с нуля. Каждая строчка комментируется. Практически для каждого урока имеются упражнения. Причём данные упражнения направлены не только на закрепление материала, но и на реализацию реальных задач, встающих перед Web-разработчиками при создании сайтов. После курса Вы сможете без проблем создавать движки для любых сайтов.

Также почти к каждому уроку идут упражнения для закрепления материала.

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

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Случайный выбор из массива в PHP

Случайный выбор из массива в PHP

У меня уже спрашивали пару раз, как я делаю случайный вывод цитат у себя на сайте в блоке "Умные цитаты". Далее мне удалось выяснить, что проблема здесь с непониманием людей, как вывести случайный элемент из массива в PHP. Задача простая, но тем не менее, раз возникают вопросы, то надо на них отвечать.

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

<?php
  $quotes = array(); // Инициализируем пустой массив
  $quotes[] = "Будьте внимательны к своим мыслям, они — начало поступков."; // Первая цитата
  $quotes[] = "Выживает не самый умный или самый сильный, а самый восприимчивый к переменам."; // Вторая цитата
  $quotes[] = "Жизнь — гора: поднимаешься медленно, спускаешься быстро."; // Третья цитата
  $quotes[] = "Люди не хотят быть богатыми, люди хотят быть богаче других."; // Четвёртая цитата
  $number = mt_rand(0, count($quotes) - 1); // Берём случайное число от 0 до (длины массива минус 1) включительно
  echo $quotes[$number]; // Выводим цитату
?>

Ключевой момент - это получение случайного числа. Всё, что нужно сделать, это задать правильные границы. Если нужно выбрать на всей длине массива случайный элемент, то это от 0 до (длины массива минус 1). А далее просто вытащить элемент из массива с полученным случайным индексом.

Что касается задачи с цитатами, то их лучше хранить в базе данных. В принципе, если сайт совсем простой, то можно и в текстовом файле. Но если в базе данных, то лучше использовать RAND() и LIMIT в SQL-запросе, чтобы Вы сразу получали единственную и случайную цитату из базы данных.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (19):

malina95 malina95 05.11.2012 15:13:12

Я правильно понимаю? $res = $mysqli->query("SELECT `text` FROM `citata` ORDER BY RAND() LIMIT 1"); $arr = $res->fetch_assoc(); echo $arr['text'];

Ответить

Admin Admin 05.11.2012 15:51:26

Да, всё правильно.

Ответить

(Алекс) (Алекс) 06.04.2014 16:48:08

Я не могу понять, а зачем от count($quotes) отнимать 1? Ведь тогда получается, что номер самой последней цитаты мы не принимаем в счет.

Ответить

lion337 lion337 05.11.2012 20:41:06

Не рекомендовал бы использовать ORDER BY RAND(), это немного тормозит сайт. Данная функция ускорит данный запрос: function getCitata(){ $mysqli = conectDB(); $offset_result = $mysqli->query("SELECT MIN(`id`) AS min, MAX(`id`) AS max FROM citata"); $offset_row = mysqli_fetch_object($offset_result); $RID = mt_rand($offset_row->min,$offset_row->max); $res_ad = $mysqli->query("SELECT text FROM citata WHERE id >= ".$RID." LIMIT 1"); $row_ad = $res_ad->fetch_assoc(); closeDB($mysqli); echo $row_ad['text']; }

Ответить

kep kep 17.01.2013 01:19:02

Подскажите куда надо вставлять это код? И еще можно ли сделать что бы при нажатие кнопки текст менялся, если да то напишите))) p.s. Можно по подробней только) спс.

Ответить

Admin Admin 17.01.2013 04:25:19

Вопрос некорректный, рекомендую посмотреть вот этот курс: http://srs.myrusakov.ru/freephp

Ответить

kep kep 17.01.2013 13:16:37

У меня мобильный интернет и я не могу скачать видео урок( а в youtube есть видео урок?

Ответить

Admin Admin 17.01.2013 15:47:12

В youtube нет, но с мобильным Интернетом и там не удастся посмотреть.

Ответить

21nazar12 21nazar12 05.11.2012 20:35:07

А это можно сделать при помощи HTML или JS?

Ответить

Admin Admin 05.11.2012 22:24:26

В JS да, только хранить цитаты надо будет прямо в исходном коде страницы.

Ответить

21nazar12 21nazar12 06.11.2012 17:14:29

Можете привести скрипт?

Ответить

Admin Admin 06.11.2012 18:37:04

Там есть функция Math.random(), вот её и используйте. А с массивом Вы обязаны уметь работать, а если не умеете, то тогда изучайте JS с нуля.

Ответить

21nazar12 21nazar12 06.11.2012 21:49:19

Ясно, спасибо.

Ответить

malina95 malina95 20.01.2013 23:22:23

Михаил, напишите пожалуйста статью а лучше скрипт полной статистики сайта на PHP и MySQL, я вас очень прошу

Ответить

Admin Admin 21.01.2013 10:08:30

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

Ответить

(Алекс) (Алекс) 06.04.2014 16:46:20

Михаил, если такой проект у Вас будет, дадите ссылку.)

Ответить

korjik korjik 01.02.2013 23:01:20

Михаил, а нужно делать unset для массива? после вывода?

Ответить

Admin Admin 02.02.2013 10:55:31

Если он не нужен больше, то можно, хотя никто это не делает, а если потребуется, то нет.

Ответить

sveta-63 sveta-63 15.10.2014 17:44:07

смотрите, я правильно поняла? то есть в данном случае получается такой код: <?php $quotes = array(); $quotes[] = "Будьте внимательны к своим мыслям, они — начало поступков."; $quotes[] = "Выживает не самый умный или самый сильный, а самый восприимчивый к переменам."; $quotes[] = "Жизнь — гора: поднимаешься медленно, спускаешься быстро."; $quotes[] = "Люди не хотят быть богатыми, люди хотят быть богаче других."; // $number = mt_rand(0, count($quotes) - 3); echo $quotes[$number]; ?>

Ответить

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