Изучив PHP до уровня между middle и junior и перечитывая старые статьи порой становится стыдно за тот бред, который когда-то писал. Исправление одного старого гайда по ротатору.
На этот раз исправляю вот это: Ротатор для объемных кодов на PHP
Готовые альтернативные решения
А если вы хотите стать опытным программистом на PHP, то переходите на айти-свалку и изучайте больше количество других примеров кода на php
Логичнее всего создать массив и воспользоваться функцией array_rand() (см. выше), которая сама выбирает нужный ей номер ключа массива и показывает его значение (баннер), но не в данном случае.
Данный пример для огромных кодов а-ля счетчик Liveinternet или Яндекс.Метрика, где вперемешку идут двойные и одинарные кавычки, которые просто глупо экранировать и записывать в переменную (элемент массива). Поэтому будем использовать первобытный примитив.
Мы разрываем PHP код, что дает нам возможность использовать HTML код безо всяких преображений (<<<HTML )и экранирования противоположных кавычек!
Первобытная логика
Скрипт генерирует число и согласно условию подставляет соответствующий номер.
Создаем условия для каждого из баннеров отдельно. Они обязательно должны начинаться с первого числа функции rand() (дабы не париться, пускай это всегда будет единица). Числа в условиях всегда должны идти в хронологии +1 (порядок не важен — 1,5,3,2,4, главное плотность) иначе будет показываться пустота.
Пример
Задача запустить ротатор из пяти элементов. Значит необходимо генерировать числа от одного до пяти следующей строчкой кода:
$n = rand(1, 5);
Далее необходимо обработать каждую из генераций индивидуально (написать условия для каждого из пяти чисел) следующим кодом:
if($n == 1) { ?>
<p>Код баннера номер один</p>
<?php }
Если этого не сделать, скрипт будет показывать пустые места для несуществующих условий для чисел, например, у нас пять условий, где мы пропустили хронологию и выставили следующие числа: 1,3,5,7,9, а скрипт генерирует 1,2,2,2,5. В таком случае получим:
- для числа — 1 и 5 отображение того, что прописано в условиях (т.е. правильно настроено);
- для чисел — 2 пустоту т.к. для них не прописано условие;
- для чисел — 7 и 9 пустоту т.к. для функции задана генерация чисел от 1 до 5;
Скрипт
<?php
# Генератор. Начало всегда с 1, конец = количеству условий
$n = rand(1, 4);
echo 'Сейчас сгенерировалось' . $n . 'и ему присвоилось: <br/>';
if($n == 1) { ?>
<p>Код баннера номер один</p>
<?php }
if($n == 2) { ?>
<p>Код баннера номер два</p>
<?php }
if($n == 3) { ?>
<p>Код баннера номер три</p>
<?php }
if($n == 4) { ?>
<p>Код баннера номер четыре</p>
<?php }
# Никогда не закрывайте PHP код, т.е. ?> ставить в конце не нужно
Далее заносим скрипт в отдельный файл и подключаем на страницу. Подключение отлично расписано в предыдущей статье.
<?php include __DIR__ . '/rotator.php'; ?>
Комментарии