PHP でユーザー出席スクリプトを作成しています。基本的には、次のような構造が必要です。
または私のjsFiddleを表示
<form action='this_page.php' method='post'>
<table>
<th>Member</th>
<th>Day One</th>
<th>Day Two</th>
<tr>
<td>Memeber One</td>
<td><input type='checkbox' name='student[davidsmith]' value='1' /></td>
<td><input type='checkbox' name='student[davidsmith]' value='1' /></td>
</tr>
<tr>
<td>Member Two</td>
<td><input type='checkbox' name='student[davidsmith]' value='1' /></td>
<td><input type='checkbox' name='student[davidsmith]' value='1' /></td>
</tr>
</table>
</form>
私はこれをデータベースとのやり取りなしで動的に動作させ、日番号は以下のコードで正しく動作しています:
<?php
$startDate = new DateTime();
$endDate = new DateTime('2013-09-31');
$days = array();
for ($c = $startDate; $c <= $endDate; $c->modify('+1 day')) {
echo "<th>".$c->format('d')."</th>";array_push($days,$c); }
?>
これから、データベース内のユーザーを表示したいので、データベースの相互作用を紹介するように拡張しました。
以下の関数は私がこれまでに持っているものを示していますが、問題が発生しました
1.日付が他のテーブルヘッダーと同じ行に表示されないことを示す動的関数。たとえば、日付はテーブルヘッダーの名の上にあります。
どうすればこれを修正できますか? 私はテーブルをあまり扱っていないので、何をしたかわかりません。何か案は?
public function viewall() {
$sth = $this->db->prepare("SELECT firstname, lastname FROM users");
$sth->execute();
/* Fetch all of the values of the first column */
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
$table = "<form action='' method='post'>
<table>
<th>Firstname</th>
<th>Lastname</th>";
$startDate = new DateTime();
$endDate = new DateTime('2013-09-31');
$days = array();
for ($c = $startDate; $c <= $endDate; $c->modify('+1 day')) {
echo "<th>".$c->format('d')."</th>";array_push($days,$c); }
foreach($result as $row) {
$firstname = $row['firstname'];
$lastname = $row['lastname'];
$table .= "<tr>
<td>$firstname</td>
<td>$lastname</td>
<td><input type='checkbox' name='$firstname' value='Y' /></td>
</tr>
</table></form>";
echo $table;
}
}