私は、トレーニングプランの日付、プランの自己、および参加可能なグループのメンバーを示すテーブルを作成しようとしています。 最初の2つは問題はありませんが、それに出席できるのは問題です。 出席者はデータベースに文字列として格納され、配列に展開されますが、配列を表示するためにforeachループを使用すると、前の行が次の行に追加されます。foreachループは、各テーブル行の次の行にpreviouse結果を追加し続けます。
私が持っているコードは次のとおりです。
$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 |いくつかの計画|私
5.4.16 |いくつかの計画|私、私
6.4.16 |いくつかの計画|私、私
Obviuosly "私"は一度だけ出席することができます。他の人が出席できると言ってから、自分の名前を付け加えて、他の人が出席できると言ってくれるまで繰り返すことになるまで、私は何度も繰り返しています。
whileループはmysqli_fetch_array
の代わりにmysqli_fetch_assoc
であるはずですが、それは他のすべてのものを混乱させるようです。
日付/プランを変更したときに '$ attendList'を' '''にリセットします –
あなたのコードはとても面倒です。まず第一に、 '$ u'の由来は?このコードの外で、仮定しましょう。しかし、非常に問題は、最初のクエリで '$ row'をループし、内部ループが' $ row'を上書きすることです。まずそれを修正してください。 – vaso123
@lolka_bolka - はい、$ u変数がページ内にeslwhereとして設定されていますが、申し訳ありませんが、ほとんどの場合問題とは関係のないコードページ全体を投稿したくありませんでした。私は内部whileループを$ row1に変更しようとしましたが、結果に何もしないようです。これはあなたが意味するものですか? – dyer926