0

我正在尝试构建一个简单的出勤脚本,其中包含用户表中的成员。我有一个脚本可以构建表格并向我显示今天的日期以及本月的剩余时间。

我还有一个脚本可以打印出单个用户,除了这些用户之外,我希望在每一列中都有一个复选框,只要日期延伸到。

我有一个用于打印用户的 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>";

}

?>

编辑:添加clone以正确复制对象

于 2013-09-18T16:36:53.273 回答
0

我对您的问题不是很清楚,但我认为以下代码可能会有所帮助:

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>";
    $startDate = new DateTime();
    $endDate = new DateTime('2013-09-31');
    for ($c = $startDate; $c <= $endDate; $c->modify('+1 day')) 
    {
      echo "<td><input type='checkbox'/></td>"; 
    }     
    echo "</tr>";
  }

  echo "</table>";
}

我无法访问db,所以我无法测试它,我想说的是,tr或th代表一个表行,td是孩子,每一行的孩子数应该是一样的。

于 2013-09-18T16:29:12.770 回答