Я создаю скрипт пользовательской посещаемости с 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;
}
}
<table>
<th>Member</th>
<th>Day One</th>
<th>Day Two</th>
должен стать
<table>
<tr>
<th>Member</th>
<th>Day One</th>
<th>Day Two</th>
</tr>
Вы эхом отошлите свое время, прежде чем вы эхом отошлите свой стол
Попробуйте изменить этот код:
echo "<th>".$c->format('d')."</th>";array_push($days,$c);
в это:
$table.="<th>".$c->format('d')."</th>";array_push($days,$c);
Даты, на которые вы echo
немедленно; вы должны контактировать их с table
.
<tr><th>Firstname</th> <th>Lastname</th>";for ($c = $startDate; $c <= $endDate; $c->modify('+1 day')) {echo "<th>".$c->format('d')."</th></tr>";array_push($days,$c); }
даже немного не изменил<tr>
в отдельное эхо, и это сработало! +1 и примет ответ в ближайшее время