несколько флажков с php в таблице

0

Я пытаюсь создать простой скрипт посещаемости, в котором есть члены в таблице пользователей. У меня есть скрипт, который строит таблицу и показывает мне сегодня дату вместе с остальной частью месяца.

У меня также есть сценарий, который печатает отдельные пользователи, а рядом с этими пользователями я хочу иметь флажок в каждом столбце, насколько это касается дат.

У меня есть инструкция foreach для печати пользователей, однако, если я поставлю <td><input type="checkbox"/></td> в этот оператор foreach, это заполняет только первый столбец дат.

Если я поместил его в оператор for, который выводит мои <th> даты, тогда он добавляет флажок в <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 ПОКАЗЫВАЕТ ПРОБЛЕМУ

Изображение 174551

ИЗОБРАЖЕНИЕ 2 ПОКАЖЕТ КАК ЭТО СЛЕДУЕТ СМОТРЕТЬ

Изображение 174551

Теги:
checkbox

2 ответа

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>";

}

?>

EDIT: добавлен clone для правильной копии объекта

  • 0
    нет, это не сработало как ни странно, я был уверен, что это сработает, поскольку это имеет смысл, но это не отражало флажки, даже один
  • 0
    Я обновил свой код и проверил его, и он работает правильно.
Показать ещё 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 - это дети, каждый счетчик строк должен быть таким же.

  • 0
    это тоже не сработало, проблема в том, что флажки не появляются в тд для каждой распечатанной даты.
  • 0
    извини, только встал. Я знаю, что это потому, что $ startDate должен быть снова введен после того, как он был таким же, как $ endDate
Показать ещё 1 комментарий

Ещё вопросы

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