Использование PHP для отображения таблицы HTML

0

Я создаю скрипт пользовательской посещаемости с 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;
        }

}
Теги:

3 ответа

5
Лучший ответ
<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>
  • 0
    Я пробовал это, но это тоже не работает, вот как я пробовал это: <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); } даже немного не изменил
  • 0
    не волнуйтесь, Адам, вы правы, так как я отформатировал свой код, я удалил <tr> в отдельное эхо, и это сработало! +1 и примет ответ в ближайшее время
0

Вы эхом отошлите свое время, прежде чем вы эхом отошлите свой стол

Попробуйте изменить этот код:

echo "<th>".$c->format('d')."</th>";array_push($days,$c);

в это:

$table.="<th>".$c->format('d')."</th>";array_push($days,$c);
0

Даты, на которые вы echo немедленно; вы должны контактировать их с table.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню