在表中使用php的多个复选框

时间:2013-09-18 16:13:06

标签: php html checkbox

我正在尝试构建一个简单的出勤脚本,其中包含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显示问题

This is a picture of the problem

图2显示了它应该如何看待

This is how it should look

2 个答案:

答案 0 :(得分:1)

以下是基于屏幕截图的解决方案。

<?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以正确复制对象

答案 1 :(得分: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是孩子,每行的孩子的数量应该是相同的。