Получить последнюю строку в отображаемом массиве первой без использования команды SELECT? - PullRequest
0 голосов
/ 09 июля 2020

Я использовал foreach l oop для отображения строк в моей базе данных php, однако теперь я хотел бы отобразить это в порядке DES C (сначала отображать последнюю строку), однако исследования говорят мне не использовать Команда SELECT в массивах? есть другой способ? Большое спасибо.

index. php:

<?php 
include("app/database/db.php");

$posts = selectAll('posts', ['published' => 1]);
?>


<?php foreach ($posts as $post): ?>

    <div class="post">
      <div class="col-lg-6">

      <!-- HEADLINE -->
      <h1><strong><a href="/single_page_main.php?id=<?php echo $post['id']; ?>"><?php echo $post['title']; ?></a></strong></h1>
      
      <!-- TEXT BODY -->
      <!-- <h4></?php echo $post['body']; ?></h4> displays the full body -->
      <h4 class="mainbody"><?php echo html_entity_decode(substr($post['body'], 0, 100) . '...'); ?></h4> 
      <!-- IMAGE -->
      <div class="col-lg-6">
        <img src="<?php echo '/assets/images/' , $post['image']; ?>" style="width: 550px; height:      350px; object-fit: cover;">
      </div>

    </div>

    <?php endforeach; ?> 

db. php file:

<?php

function selectAll($table, $conditions = []) {

  global $conn;
  $sql = "SELECT * FROM $table";
  if (empty($conditions)) {
    $stmt = $conn->prepare($sql);
    $stmt->execute();
    $records = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
    return $records;
  } else {
    $i = 0;
    foreach ($conditions as $key => $value) {
      if ($i === 0) {
        $sql = $sql . " WHERE $key=?";
      } else {
        $sql = $sql . " AND $key=?";
      }
      $i++;
    }


    $stmt = executeQuery($sql, $conditions);
    $records = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
    return $records;
  }
}

?>
...