Как поставить разрыв в выводе при изменении определенных значений с помощью mysqli php

#php #mysqli

#php #mysqli

Вопрос:

Я создаю веб-сайт для перечисления статистики турниров по боулингу за последние 24 года. Использование следующего кода генерирует длинную единую таблицу, содержащую все данные. Я хотел бы поставить разрыв в таблице при изменении значения $row [‘season’], т.Е. С 1990-1991 на 1991-1992, и для каждой последующей смены сезонов и echo либо горизонтальную линию html между сезонами, либо поместить значение сезона из базы данных, т.Е. 2013-2014 вверхняя часть каждого сегмента таблицы. После недели поиска в Интернете не нашел ответа. Вот код, который у меня есть сейчас. Должен быть mysqli.

 $result = mysqli_query($conn,"SELECT * FROM members INNER JOIN scores ON members.id=scores.memberID WHERE format LIKE '%s%' ORDER BY year, STR_TO_DATE( month, '%b' ), format ASC;");

echo "<table border='0'>
<tr>
<th>Name</th>
<th>Hometown</th>
<th>Month</th>
<th>Year</th>
<th>Season</th>
<th>Center</th>
<th>Center City</th>
<th>Format</th>
</tr>";

foreach($result as $row) {

  echo "<tr>";
  echo "<td>" . $row['firstName'] . " ". $row['lastName'] . "</td>";
  echo "<td>" . $row['hometown'] . "</td>";
  echo "<td>" . $row['month'] . "</td>";
  echo "<td>" . $row['year'] . "</td>";
  echo "<td>" . $row['season'] . "</td>";
  echo "<td>" . $row['center'] . "</td>";
  echo "<td>" . $row['centerCity'] . "</td>";
  echo "<td>" . $row['format'] . "</td>";
  echo "</tr>";
}

echo "</table>";

mysqli_close($conn);
  

Комментарии:

1. Просто следите за годом в своем цикле. Когда он изменится, создайте новую строку и т. Д.

2. Почему бы вам; вместо создания этой одной огромной таблицы, создать условную таблицу для просмотра по годам (например, 1991-1992, 1992-1993 и т. Д.)?

Ответ №1:

Ответ на самом деле уже дан, но он выглядит как ваш новый с php, поэтому вот небольшой пример, я надеюсь, он вам полезен. Вам нужно вставить несколько операторов if, чтобы проверить, есть ли какие-либо изменения года. то же самое касается любых других проверок, которые вы хотите выполнить.

это то, что вы могли бы сделать…

 <?php
    $lastYear = null;//you can also set the first year manually of course
    foreach($result as $row) {
         //set the first year
         if($lastYear == null){$lastYear = $row['year'];}

         //check if the year changed or not
         if($lastYear == $row['year']){
             //if the year didnt change... do something
         }else{
             //your year changed... do something different
             $lastYear = $row['year']; //update your 'last'year
         }
    }
?>
  

Я надеюсь, что это вам поможет.

Комментарии:

1. Этот пример очень полезен. Я просматриваю свою базу данных, поскольку первая запись из некоторых сезонов не отображается в выводе. Хотите убедиться, что с данными нет проблем, поскольку это происходит не каждый год. Кроме того, я изменил код, чтобы поместить значение сезона в начало каждого сегмента таблицы, но это не работает для последнего сегмента. Предположим, это как-то связано с окончанием записей. Да, я довольно новичок в PHP, но работаю уже давно. Только что исполнилось 50 лет со дня моей свадьбы.