#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 лет со дня моей свадьбы.