0

users テーブルにメンバーを持つ単純な出席スクリプトを作成しようとしています。テーブルを作成し、今日の日付とその月の残りの日付を表示するスクリプトがあります。

個々のユーザーを出力するスクリプトもあります。これらのユーザーと一緒に、日付が伸びる限り、すべての列にチェックボックスを配置したいと考えています。

ユーザーを出力するための foreach ステートメントがありますが、<td><input type="checkbox"/></td>この foreach ステートメントに を入れると、日付の最初の列にのみ入力されます。

<th>日付を出力する for ステートメントにそれを入れると、チェックボックスが追加されますが、<th>これは私が望むものではありません。

私は最高のプログラマーではないので、これを達成するために使用すべき方法がわかりません。これまでのところ、私が行ったことは簡単です。以下を見ると、私がこれをどのように達成したかがわかります。 :

問題を繰り返すと、以下のコードから日付値ごとにチェックボックスを追加できず、今日の日付から設定されているものに日付が出力されます。

アイデアや意見を歓迎します。

public function viewall() {
$sth = $this->db->prepare("SELECT * FROM users");
$sth->execute();

/* Fetch all of the values of the first column */
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
$startDate = new DateTime();
$endDate = new DateTime('2013-09-31');
$days = array();
 echo "<table>
 <tr>
 <th>Firstname</th>
 <th>Lastname</th>";    
for ($c = $startDate; $c <= $endDate; $c->modify('+1 day')) {
       echo "<th>".$c->format('d')."</th>"; }   
        echo "</tr>";

            foreach($result as $row) {
                $firstname = $row['firstname'];
                $lastname = $row['lastname'];
                  echo "<tr>";
                  echo "<td>$firstname</td>";
                  echo "<td>$lastname</td>";
        }
         echo "<td><input type='checkbox'/></td></tr>";
        echo "</table>";}

図 1 は問題を示しています

問題の写真です

写真2は、どのように見えるべきかを示しています

これは、それがどのように見えるかです

4

2 に答える 2

2

これがスクリーンショットに基づく解決策です。

<?php

public function viewall() {

    $sth = $this->db->prepare("SELECT * FROM users");
    $sth->execute();

    /* Fetch all of the values of the first column */
    $result = $sth->fetchAll(PDO::FETCH_ASSOC);
    $startDate = new DateTime();
    $endDate = new DateTime('2013-09-31');

    echo "<table>
     <tr>
     <th>Firstname</th>
     <th>Lastname</th>"; 

    for ($c = clone $startDate; $c <= $endDate; $c->modify('+1 day')) {
        echo "<th>".$c->format('d')."</th>";  
    }
    echo "</tr>";

    foreach($result as $row) {
        echo "<tr>";
        echo "<td>" . $row['firstname'] . "</td>";
        echo "<td>" . $row['lastname'] . "</td>";

        for($c = clone $startDate; $c <= $endDate; $c->modify('+1 day')) {
               echo "<td><input type='checkbox'/></td>";  
        }

        echo "</tr>";
    }

    echo "</table>";

}

?>

EDIT:cloneオブジェクトを正しくコピーするために追加

于 2013-09-18T16:36:53.273 に答える