Как автоматически считать записи за 6 месяцев в SQL, помещенные в отдельное поле? - PullRequest
0 голосов
/ 31 октября 2019

У меня возникла большая проблема с автоматическим подсчетом предыдущей 6-месячной записи объявления в SQL, помещенной в отдельное поле. Используете ли вы цикл для подсчета записей объявлений? Кто-нибудь может направить меня или привести пример для этого? Если можете, лучше используйте мой код для редактирования и дайте мне ссылку. Большое спасибо.

Ниже приведена моя кодировка:

    <?php
    $sql_select = 'SELECT * FROM announcement where id = 20' ; //This I try to test id = 20 announcment to call out data

    $query_select = db_conn_select($sql_select);
    foreach ($query_select as $rs_select) {
    $title = $rs_select['title'];
    $date = $rs_select['posted_date'];
    $contents = $rs_select['contents'];
     }

     ?>

   <div class="row">
   <div class="col-md-12">
  <div class="box box-success box-solid">
    <div class="box-header with-border" style="text-align: center;" >
      <h3 class="box-title" ><?php echo $title ?> (<?php echo $date ?>)</h3>

       <div class="box-tools pull-right">
       <button type="button" class="btn btn-default btn-xs collapse-box" data-toggle="collapse" data-target="#collapseExample1" aria-expanded="false" aria-controls="collapseExample"><i class="fa fa-minus"></i></button>
      </div>

    </div>

   <div id="collapseExample1" class="collapse" style="overflow: auto; text-align: center;">
    <?php echo $contents ?>
    </div>

    </div>

  </div>

 </div>

Ниже приведена информация о моей базе данных (я хочу получить запись об объявлении за последние 6 месяцев, опубликованную за последние 6 месяцев):

enter image description here

Вывод моего кодирования выглядит следующим образом:

enter image description here

На самом деле я хочу вывод какниже показывается автоматический подсчет объявлений за предыдущие 6 месяцев, помещенных в отдельном поле:

enter image description here

1 Ответ

0 голосов
/ 31 октября 2019

Есть две проблемы:

1) Ваш запрос вернет только одну запись. Вам нужно изменить его, чтобы он получал набор записей за последние 6 месяцев.

Общий шаблон для поиска за последние 6 месяцев легко найти в Интернете

yourdatecolumn >= CURDATE() - INTERVAL 6 MONTH

(кредит этот ответ конкретно в этом случае, но есть десятки доступных примеров). NB. Вы не указали, но я предполагаю, что ваша СУБД - это MySQL, поскольку она наиболее часто используется с PHP. Если у вас есть другая СУБД, вы можете найти эквивалентный ответ онлайн с несколькими секундами поиска.

2) вы слишком быстро завершаете свой цикл. Текущий код подходит для одной записи, но потерпит неудачу, если их несколько. Он будет перебирать все записи, но затем продолжать присваивать их значения одинаковым переменным, поэтому после завершения цикла вы получите только значения последней записи внутри этих переменных. И вы не используете цикл для создания HTML несколько раз.

Чтобы это исправить, просто поместите HTML-код в цикл. Вот окончательная версия:

<?php
$sql_select = 'SELECT * FROM announcement where posted_date >= CURDATE() - INTERVAL 6 MONTH';

$query_select = db_conn_select($sql_select);
foreach ($query_select as $rs_select) {
  $title = $rs_select['title'];
  $date = $rs_select['posted_date'];
  $contents = $rs_select['contents'];
  ?>

<div class="row">
<div class="col-md-12">
  <div class="box box-success box-solid">
    <div class="box-header with-border" style="text-align: center;">
      <h3 class="box-title">
        <?php echo $title ?> (
        <?php echo $date ?>)</h3>

      <div class="box-tools pull-right">
        <button type="button" class="btn btn-default btn-xs collapse-box" data-toggle="collapse" data-target="#collapseExample1" aria-expanded="false" aria-controls="collapseExample"><i class="fa fa-minus"></i></button>
      </div>

    </div>

    <div id="collapseExample1" class="collapse" style="overflow: auto; text-align: center;">
      <?php echo $contents ?>
    </div>

  </div>

</div>

</div>
<?php 
} 
?>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...