Задать вопрос
@elizaveta_kotik

Как сделать рандомный вызов только двух первых данных из таблицы?

У меня два блока, которым присвоена одна функция рандомного выбора из базы данных
function det_posts_random() { 
    global $link; 
    $sql = "SELECT * FROM posts p INNER JOIN category c ON p.id_category = c.id_category ORDER BY RAND()";
    $result = mysqli_query($link, $sql);
    $posts = mysqli_fetch_all($result, MYSQLI_ASSOC);
    return $posts;      
}

Которая вызывает два разных блока:
9e829f3741b840e79c2419eec080551c.png

Но бывает, что она вызывает два одинаковых блока
149ed8ef8d974445bb35694f46e364dd.png

Как сделать этот код логичнее, чтобы они всегда были разными?
<div class="col-md-6">
                <?php $posts = det_posts_random(); ?>
                <?php foreach($posts as $post): ?>
                <?php endforeach; ?>
                <?php if($posts): ?>
                <div class="fav">
                    <a href="post.php?post_id=<?=$post['id']?>">
                        <img src="<?=$post['image']?>" style="width:250px; -webkit-clip-path: polygon(50% 0%, 100% 38%, 100% 100%, 0 100%, 0 0);
                        clip-path: polygon(50% 0%, 100% 38%, 100% 100%, 0 100%, 0 0);">
                    </a>
                    <h3 class="hello">
                        <a href="post.php?post_id=<?=$post['id']?>" style="color: #3c3b35;">
                            <?=$post['title']?>
                        </a>
                    </h3>
                </div>
                <?php endif; ?>
            </div>
            <div class="col-md-6">
                <?php $posts = det_posts_random(); ?>
                <?php foreach($posts as $post): ?>
                <?php endforeach; ?>
                <?php if($posts): ?>
                <div class="fav">
                    <a href="post.php?post_id=<?=$post['id']?>">
                        <img src="<?=$post['image']?>" style="width:250px; 
                        -webkit-clip-path: polygon(50% 0%, 100% 38%, 100% 100%, 0 100%, 0 0);
                        clip-path: polygon(50% 0%, 100% 38%, 100% 100%, 0 100%, 0 0);">
                    </a>
                    <h3 class="hello">
                        <a href="post.php?post_id=<?=$post['id']?>" style="color: #3c3b35;">
                            <?=$post['title']?>
                        </a>
                    </h3>
                </div>
                <?php endif; ?>
            </div>
  • Вопрос задан
  • 237 просмотров
Подписаться Оценить Комментировать
Решения вопроса 1
iNickolay
@iNickolay
Мсье знает толк в извращениях!

Используйте всю силу LIMIT в вашем запросе:

SELECT * FROM posts p
  INNER JOIN category c
  ON p.id_category = c.id_category
  ORDER BY RAND()
  LIMIT 2


И возрадуйтесь простоте:

<?php foreach ($det_posts_random as $post) : ?>
<div class="col-md-6">
  <div class="fav">
    <a href="post.php?post_id=<?=$post['id']?>">
      <img src="<?=$post['image']?>" style="width:250px;  -webkit-clip-path: polygon(50% 0%, 100% 38%, 100% 100%, 0 100%, 0 0); clip-path: polygon(50% 0%, 100% 38%, 100% 100%, 0 100%, 0 0);">
    </a>
    <h3 class="hello">
      <a href="post.php?post_id=<?=$post['id']?>" style="color: #3c3b35;"><?=$post['title']?> </a>
    </h3>
  </div>
</div>
<?php endforeach; ?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы