![](/img/trans.png)
[英]PHP - "if" in "while" problems to alternate html table rows colour
[英]php table colour rows group by date
stackoverflow 的新手。 大约 5 年前,我建立了一个预订网站,从那以后就再也没有接触过 php,所以非常生疏。 一切都很好。 但是我想做一些更新。 作为更新的一部分,我有一个表,该表按 Mysql 表中的日期分组。 此表现在可以在同一日期有 1、2、3 或 4 个结果。 为了让用户更清楚,我想按日期为行着色。 一个日期可以是灰色,下一个日期可以是白色,下一个日期可以是灰色,依此类推。 我确实有为所有日期着色的代码,不幸的是,我最终可能会得到具有相同颜色的连续日期。
while ($row = mysqli_fetch_assoc($results)) {
$id_array[] = $row["id"];
$Fltnum_array[] = $row["fltnum"];
$Date_array[] = $row["Date"];
$Name_array[] = $row["Name"];
$Lesson_array[] = $row["vouchertype"];
$Vnum_array[] = $row["vnum"];
$Phone_array[] = $row["phone"];
$Email_array[] = $row["email"];
$Ten_array[] = $row["Ten"];
$Ten1_array[] = $row["Ten1"];
$Eleven_array[] = $row["Eleven"];
$Twelve_array[] = $row["Twelve"];
$Thirteen_array[] = $row["thirteen"];
$Fourteen_array[] = $row["Fourteen"];
$Fithteen_array[] = $row["Fifteen"];
$Sixteen_array[] = $row["Sixteen"];
}
<body style="left: 50%; position: absolute; height:1000px; ">
<div id="apDiv3">
<?php
echo "<form action='#' name='mainForm' method='post'>
<table border='1' align='center' cellpadding='3' cellspacing='0' >
<tr>
<th>Name</th>
<th>Flight Type</th>
<th>Date</th>
<th>10:00</th>
<th>10:00</th>
<th>11:00</th>
<th>12:00</th>
<th>13:00</th>
<th>14:00</th>
<th>15:00</th>
<th>16:00</th>
</tr>";
for ($i = 0; $i < count($id_array); $i++) {
$id = $id_array[$i];
$Fltnum = $Fltnum_array[$i];
$Date = $Date_array[$i];
$Name = $Name_array[$i];
$Lesson = $Lesson_array[$i];
$Vnum = $Vnum_array[$i];
$Phone = $Phone_array[$i];
$Email = $Email_array[$i];
$Ten = $Ten_array[$i];
$Ten1 = $Ten1_array[$i];
$Eleven = $Eleven_array[$i];
$Twelve = $Twelve_array[$i];
$Thirteen = $Thirteen_array[$i];
$Fourteen = $Fourteen_array[$i];
$Fithteen = $Fithteen_array[$i];
$Sixteen = $Sixteen_array[$i];
$set_checked = ($Ten < 1) ? 'checked="checked"' : '';
$set_checked0 = ($Ten1 < 1) ? 'checked="checked"' : '';
$set_checked1 = ($Eleven < 1) ? 'checked="checked"' : '';
$set_checked2 = ($Twelve < 1) ? 'checked="checked"' : '';
$set_checked3 = ($Thirteen < 1) ? 'checked="checked"' : '';
$set_checked4 = ($Fourteen < 1) ? 'checked="checked"' : '';
$set_checked5 = ($Fithteen < 1) ? 'checked="checked"' : '';
$set_checked6 = ($Sixteen < 1) ? 'checked="checked"' : '';
$newDate = date("d-m-Y", strtotime($Date));
echo "
<input type='hidden' name='id[]' value='$id'>
<input type='hidden' name='Fltnum-$id' value='$Fltnum'>
<td><input input type='text' name='Name-$id' value='$Name'></td>
<td><input input type='text' name='Lesson-$id' value='$Lesson'></td>
<td><input type='text' name='Date-$id' value='$newDate'> </td>
<input type='hidden' name='vnum-$id' value='$Vnum'>
<input type='hidden' name='Phone-$id' value='$Phone'>
<input type='hidden' name='Email-$id' value='$Email'>";
...
echo
"</tr>";
}
echo "<tr align='center'><td colspan='8'><input type='submit' name='submit' value='Make Booking' ></td></tr></table>";
echo "</form>";
?>
</div>
我也花了几天时间浏览论坛。
要添加更多细节,这是结果:
这就是我想要的:
看起来好像您想为行交替显示 colors,但前提是日期与前一行不同(因此相同的连续日期将显示相同的颜色)。
您可以通过将循环中的日期与前一个日期进行比较,然后根据它们是否相同来应用数组中的颜色来执行类似的操作。
$backgrounds = ["#FFFFFF", "#EEEEEE"];
$currentBackground = 0;
for ($i = 0; $i < count($id_array); $i++) {
$id = $id_array[$i];
$Fltnum = $Fltnum_array[$i];
$Date = $Date_array[$i];
$Name = $Name_array[$i];
$Lesson = $Lesson_array[$i];
$Vnum = $Vnum_array[$i];
$Phone = $Phone_array[$i];
$Email = $Email_array[$i];
$Ten = $Ten_array[$i];
$Ten1 = $Ten1_array[$i];
$Eleven = $Eleven_array[$i];
$Twelve = $Twelve_array[$i];
$Thirteen = $Thirteen_array[$i];
$Fourteen = $Fourteen_array[$i];
$Fithteen = $Fithteen_array[$i];
$Sixteen = $Sixteen_array[$i];
$set_checked = ($Ten < 1) ? 'checked="checked"' : '';
$set_checked0 = ($Ten1 < 1) ? 'checked="checked"' : '';
$set_checked1 = ($Eleven < 1) ? 'checked="checked"' : '';
$set_checked2 = ($Twelve < 1) ? 'checked="checked"' : '';
$set_checked3 = ($Thirteen < 1) ? 'checked="checked"' : '';
$set_checked4 = ($Fourteen < 1) ? 'checked="checked"' : '';
$set_checked5 = ($Fithteen < 1) ? 'checked="checked"' : '';
$set_checked6 = ($Sixteen < 1) ? 'checked="checked"' : '';
$newDate = date("d-m-Y", strtotime($Date));
// Only check previous value if we are not on the first row
if($i > 0) {
// If the date is the same, do not change backgrounds
// Otherwise, toggle between backgrounds
$currentBackground = ($Date_array[$i] == $Date_array[$i-1]) ? $currentBackground : ($currentBackground == 0) ? 1 : 0;
}
// This just sets the color from our backgrounds array
$background = $backgrounds[$currentBackground];
echo "
<tr style='background: $background;'>
<td><input type='hidden' name='id[]' value='$id'></td>
<td><input type='hidden' name='Fltnum-$id' value='$Fltnum'></td>
<td><input input type='text' name='Name-$id' value='$Name'></td>
<td><input input type='text' name='Lesson-$id' value='$Lesson'></td>
<td><input type='text' name='Date-$id' value='$newDate'> </td>
<td><input type='hidden' name='vnum-$id' value='$Vnum'></td>
<td><input type='hidden' name='Phone-$id' value='$Phone'></td>
<td><input type='hidden' name='Email-$id' value='$Email'></td>
</tr>";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.