2013-09-18 2 views
0

Я создаю скрипт посещаемости пользователя с PHP, я в основном хочу структуру, которая выглядит как ниже:Использование PHP эхо таблицы HTML

Или осмотреть мой 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; 
     } 

} 
+1

между '

и' ' отсутствует, а позже ''. –

+0

@Joop это не меняет его на всех, я попытался это – 001221

ответ

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

Я попытался это, но он не работает либо, это то, как я попытался это: '

«; для ($ c = $ startDate; $ c <= $ endDate; $ c-> modify ('+ 1 день')) {echo " "; array_push ($ days, $ c);}' даже не изменил его немного – 001221

+0

, чтобы не волновать adam, вы правы, это так, как я отформатировал свой код. Я удалил '

' на отдельное эхо, и это сработало! +1 и скоро ответит – 001221

0

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

0

Вы эхо ваш DateTime, прежде чем повторить вашу таблицу

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

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

в это:

$table.="<th>".$c->format('d')."</th>";array_push($days,$c); 
Смежные вопросы
'есть '
Firstname Lastname". $ c-> format ('d'). "