@filippovanatoliy
Вот начал погружаться в кодинг)

Как сделать случайные отзывы на php?

Здравствуйте! Заказчик хочет от меня отображение случайных отзывов на сайте, чтобы при обновлении они менялись.
Нашел в интернете скрипт выбирающий случайные записи из массива, но теперь думаю как его применить грамотно. Суть его такая:
<?php
if (session_id()=='') session_start();
if (!isset($_SESSION["mass"])or count($_SESSION["mass"])<=2) $_SESSION["mass"] = array
	("text_1", "text_2", "text_3", "text_4", "text_5", "text_6", "text_7", "text_8", "text_9");
$rand_keys = array_rand($_SESSION["mass"], 3);

for ($n=0; $n<count($rand_keys); $n++) {
  /*  echo '<div class="moystyle">'.$_SESSION["mass"][$rand_keys[$n]].'</div>'; */
    			echo '			<div class="col-sm-4">					
							<div class="testimonial text-center animated" data-animation="fadeInUp" data-animation-delay="500">	
								<div class="testi-content">
									<p>'.$_SESSION["mass"][$rand_keys[$n]].'</p>
									<div class="testi-arrow"></div>
								</div>									
								<div class="client-img">
									<img src="img/thumbs/diana.jpg" alt="Клиент компании ITech.">
								</div>							
								<div class="testi-author">
									<h4>'.$_SESSION["mass"][$rand_keys[$n]].'</h4>
									<span>'.$_SESSION["mass"][$rand_keys[$n]].'</span>
								</div>								
							</div>
						</div>	';
    unset($_SESSION["mass"][$rand_keys[$n]]);
    }
?>


То есть массив один. Как мне кажется, надо в каждый массив добавить еще массивы содержащие заголовок, картинку и текст. И вставлять через эхо уже подмассивы сгенерированного рандомом основного.

Я так это вижу - рандом отобрал массивы text1, text3, text 5. В них содержаться title, photo, deskr. И я бы тогда в нужное место вставлял бы $_SESSION["mass"]["title"][$rand_keys[$n]], ну или как то так. Подскажите пожалуйста, как лучше реализовать это все? Сначала думал ой как все просто зафигачу в массив полностью div, ан нет почему то не вышло

То с чем работаю тут: mistxs.ru/dev17
  • Вопрос задан
  • 579 просмотров
Решения вопроса 1
@mantyr
Пишу много Golang кода с удовольствием:)
Всегда отделяйте алгоритмы от шаблонов, иначе потом эту кашу замучаетесь править и проверять.

У вас что все комментарии одинаковые что фотографии и заголовки можно тасовать как заблагорассудится?

Предложу так: 3 не ассоциативные массивы, rand(0, count($array_title)-1) для получения индекса.
<?php
    $array_title = ...
    $array_body = ...
    $array_photo = ...

    $title_id = rand(0, count($array_title)-1);
    $body_id = rand(0, count($array_body)-1);
    $photo_id = rand(0, count($array_photo)-1);

    $title = $array_title[$title_id];
    $body = $array_body[$body_id];
    $photo = $array_photo[$photo_id];

... передача этого всего в шаблон

Но лучше всего когда комментарии живые (написанные человеком) и тогда по сути один массив каждый объект которого хранит в себе и заголовок и сообщение и фотографию... и тогда rand() нужен уже один.

Хранить при этом можно как угодно. Например в CSV виде в обычном текстовом файле:)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
R0dger
@R0dger
Laravel/Yii/2 AngularJs PHP RESTful API
А что отзывы не в БД хранятся?
для БД я бы так сделал -
SELECT * FROM table1 ORDER BY RAND() LIMIT 1;
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Алгоритм:
Комбинаторика (шаблоны и списки: имена, существительные, прилагательные, глаголы и т.д.)
Т.е. задача составления всех возможных вариантов из имеющегося набора данных.
Затем вызов: $comment=get_comment(247,$ALL_DATA); и получаете комбинацию №247 из массива входных данных $ALL_DATA.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы