我正在尝试创建一个表,显示培训计划的日期、计划本身以及可以参加的团队成员。前两个没问题,但谁能出席才是问题所在。与会者以字符串的形式存储在数据库中,并将其分解为一个数组,但当我使用foreach循环显示数组时,它会将前一行添加到下一行。
我的代码是:
$sql_group_name = mysqli_query($db_conx,"SELECT groupName,accepted FROM maingroup");
while ($row = mysqli_fetch_array($sql_group_name)){
$accepted= $row["accepted"];
$groupName = $row["groupName"];
$accept_array = explode(",", $accepted);
if (in_array($u,$accept_array)){
$sql = "SELECT * FROM training WHERE groupName='$groupName' ORDER BY sessDate ASC";
$training_query = mysqli_query($db_conx, $sql);
while ($row = mysqli_fetch_array($training_query, MYSQLI_ASSOC)) {
$id = $row["id"];
$date = $row["sessDate"];
$session = htmlspecialchars_decode(stripslashes($row['plan']), ENT_QUOTES);
$groupName = $row["groupName"];
$attending = $row["attending"];
$attend_array = explode(",",$attending);
foreach($attend_array as $value){
$attendList .= "" .$value. "<br/>";
}
if (in_array($u,$attend_array)){
$attendBtn = '<form name="sessUnAttend" id="sessUnAttend" method="post">
<input type="submit" value="Unattend">
<input type="hidden" name="id" id="id" value="' .$id. '">
<input type="hidden" name="unattend" id="unattend">
</form>';
} else { $attendBtn = '<form name="sessAttend" id="sessAttend" method="post">
<input type="submit" value="Attend">
<input type="hidden" name="id" id="id" value="' .$id. '">
<input type="hidden" name="attend" id="attend">
</form>';
}
$sessTable .= '<tr>
<td>' .$date. '</td>
<td>' .$session. '</td>
<td>' .$groupName. '</td>
<td>' .$attendList. '</td>
<td>' .$attendBtn. '</td>
</tr>';
}
}
}
我得到的结果是:
日期|计划|参加
4.4.16|some plan |me
5.4.16|一些计划|我,我
6.4.16|一些计划|me,me
显而易见的"我"只能参加一次。它会不断重复我,我,直到其他人说他们可以参加,然后加上他们的名字,重复这个直到其他人表示他们可以参加等等
我读到while循环应该是mysqli_fetch_assoc
而不是mysqli_fetch_array
,但这似乎把其他事情都搞砸了。
@MarkBaker的评论在朋友的帮助下成功了。
我所要做的就是重置$attendList
变量。
$sessTable .= '<tr>
<td>' .$date. '</td>
<td>' .$session. '</td>
<td>' .$groupName. '</td>
<td>' .$attendList. '</td>
<td>' .$attendBtn. '</td>
</tr>';
$attendList = '';
发生的事情是,变量是从上一个循环中设置的,然后它一直保持不变,直到添加了更多的变量
现在发生的情况是,每次循环完成时,它都会重置变量,以便新的id从头开始。
尝试取消设置id:
unset($accepted);