Необходимо отобразить запись по дате

php html mysql sql logic

212 просмотра

1 ответ

у меня есть следующая таблица MySQL с данными в нем. Таблица с данными показана на фото ниже:

введите описание изображения здесь

Я хочу, чтобы отобразить запись в HTML-таблицу, как это:

введите описание изображения здесь

Пока он отображает запись, как показано ниже:

введите описание изображения здесь

У меня есть следующий код для этого:

 <?php
 $year = intval($_POST['year']);
 $month = (intval($_POST['month']) < 10 && strlen($_POST['month']) < 2) ? '0'.intval($_POST['month']):intval($_POST['month']);
 $sql = "SELECT sno,file_path,bench_sno,causelist_date,date_entry 
         FROM phc_causelists 
         WHERE YEAR(causelist_date) = :year AND MONTH(causelist_date) = :month ORDER BY causelist_date DESC";
 $aryList = array(':year'=>$year,':month'=>$month);
 if($db->dbQuery($sql,$aryList)){
 ?>

 <strong>Causelists for the month of <?php echo($method->getMonthName(intval($month)).' '.intval($year)); ?> </strong>
 <table class="table table-bordered">
 <?php
 foreach($db->getRecordSet($sql,$aryList) as $row){
    ?>
      <tr>
        <td><?php echo($row['causelist_date']); ?></td>
        <td><?php if($row['bench_sno'] == '1'){ ?>
          <a href="<?php echo($method->baseURL()); ?>/causeLists/<?php echo($row['file_path']); ?>">Peshawar High Court</a>
          <?php } ?></td>
        <td><?php if($row['bench_sno'] == '2'){ ?>
          <a href="<?php echo($method->baseURL()); ?>/causeLists/<?php echo($row['file_path']); ?>">Abbottabad</a>
          <?php } ?></td>
        <td><?php if($row['bench_sno'] == '3'){ ?>
          <a href="<?php echo($method->baseURL()); ?>/causeLists/<?php echo($row['file_path']); ?>">D.I.Khan</a>
          <?php } ?></td>
        <td><?php if($row['bench_sno'] == '4'){ ?>
          <a href="<?php echo($method->baseURL()); ?>/causeLists/<?php echo($row['file_path']); ?>">Mingora</a>
          <?php } ?></td>
        <td><?php if($row['bench_sno'] == '5'){ ?>
          <a href="<?php echo($method->baseURL()); ?>/causeLists/<?php echo($row['file_path']); ?>">Bannu</a>
          <?php } ?></td>
      </tr>
    <?php
    }
    ?>
 </table>
 <?php
 }
  ?>
Автор: Abdul Rahman Источник Размещён: 08.11.2019 11:07

Ответы (1)


1 плюс

Решение

Это может сработать. С минимальными изменениями он группирует даты, а затем зацикливает дату.

<?php
foreach($db->getRecordSet($sql,$aryList) as $row){
    // build an array of dates 
    //   containing for each date an array of bench_sno
    $dates[$row['causelist_date']][$row['bench_sno']] = $row['filepath'];
}
foreach($dates as $date=>$row) {
?>
  <tr>
    <td><?php echo($date); ?></td>
    <td><?php if(isset($row['1'])){ ?> 
      <a href="<?php echo($method->baseURL()); ?>/causeLists/<?php echo($row['1']); ?>">Peshawar High Court</a>
      <?php } ?></td>
    <td><?php if(isset($row['2'])){ ?>
      <a href="<?php echo($method->baseURL()); ?>/causeLists/<?php echo($row['2']); ?>">Abbottabad</a>
      <?php } ?></td>
    <td><?php if(isset($row['3'])){ ?>
      <a href="<?php echo($method->baseURL()); ?>/causeLists/<?php echo($row['3']); ?>">D.I.Khan</a>
      <?php } ?></td>
    <td><?php if(isset($row['4'])){ ?>
      <a href="<?php echo($method->baseURL()); ?>/causeLists/<?php echo($row['4']); ?>">Mingora</a>
      <?php } ?></td>
    <td><?php if(isset($row['5'])){ ?>
      <a href="<?php echo($method->baseURL()); ?>/causeLists/<?php echo($row['5']); ?>">Bannu</a>
      <?php } ?></td>
  </tr>
<?php
}
?>

Кроме того, мне нравится избегать повторения кода и использовать альтернативный синтаксис управления в шаблонах, подобных этому:

<?php
foreach($db->getRecordSet($sql,$aryList) as $row) {
    // build an array of dates 
    //   containing for each date an array of bench_sno
    $dates[$row['causelist_date']][$row['bench_sno']] = $row['filepath'];
}
$bench_snos[
    '1' => 'Peshawar High Court',
    '2' => 'Abbottabad',
    '3' => 'D.I.Khan',
    '4' => 'Mingora',
    '5' => 'Bannu',
];
foreach($dates as $date=>$row) :
?>
  <tr>
    <td><?php echo $date ?></td>
    <?php foreach ($bench_snos as $no=>$bench_sno) : ?>
    <td><?php if (isset($row[$no])) : ?> 
      <a href="<?php echo $method->baseURL() ?>/causeLists/<?php echo $row[$no] ?>"><?php echo $bench_sno ?></a>
      <?php endif //isset ?>
    </td>
    <?php endfor //$bench_snos ?>
  </tr>
<?php endfor // $dates ?>
Автор: PaulH Размещён: 20.08.2016 10:08
Вопросы из категории :
32x32