@MZhack

Как внутри echo или переменной выполнить цикл и ещё одно echo?

Уважаемые товарищи! Подскажите пожалуйста, как заставить это работать?) По задумке, мне нужна таблица, "кол-во людей" на "кол-во дней в месяце". Инклюды не показываю, от них смылса нет. Код весь работает кроме
'.for ($td=1; $td<=$daysinmonth; $td++){echo '<td>тут какое-то значение, в будующем должен быть код с операторами if и т.д.</td>';}.'
Не понимаю, как засунуть цикл в цикл, echo в echo или под переменную. Извините за глупость, в php не очень силён. Пока получается как на скриншоте. А мне соответственно нужны ячейки с какими-то значениям на пересечении фио и числа месяца. P.S. То есть, хочу сделать подобие MS Excel только на PHP. Но знаний php мало.
63b5303077eeb504095522.png
<?php
$daysinmonth = date('t');

$req = pdo()->prepare("SELECT `username` FROM `users`");
$req->execute();
$array = $req->fetchAll(PDO::FETCH_COLUMN);

$amountpeople = count($array);
?>

  <table border="1">
   <caption>Таблица учёта</caption>
   <tr>
   <th>№ п/п</th>
   <th>ФИО</th>
<?php
	for ($th=1; $th<=$daysinmonth; $th++){
        echo '<th>'. $th .'</th>'; //отрисовывает первой строкой таблицы кол-во дней в месяце
    }
?>
   </tr>
<?php
	for ($trtd=1; $trtd<=$amountpeople; $trtd++){
		$table = '
		<tr>
		<td>'. $trtd .'</td> //отрисовывает первым столбиком таблицы номер сотрудника в таблице бд
		<td>'. $array[0]++ .'</td> //отрисовывает вторым столбиком таблицы имя сотрудника в таблице бд
		'.for ($td=1; $td<=$daysinmonth; $td++){echo '<td>тут какое-то значение, в будующем должен быть код с операторами if и т.д.</td>';}.' //отрисосывает оставшиеся столбцы в зависимости от кол-ва дней в месяце
		</tr>
		';
		echo ($table);
    }
?>
  </table>
  • Вопрос задан
  • 172 просмотра
Пригласить эксперта
Ответы на вопрос 2
vitaly_74
@vitaly_74
я понимаю что вы новичок но у пхп можно делать вставлять такие теги как <?php foreach(): ?> ... <?php endforeach;?>
<?php foreach ($amountpeople as $humanNum=>$human) :?>
    <tr>
        <td><?=$humanNum?></td> //отрисовывает первым столбиком таблицы номер сотрудника в таблице бд
        <td> <?=$human[0]++ ?></td> //отрисовывает вторым столбиком таблицы имя сотрудника в таблице бд
        <?php foreach ($daysinmonth as $day): ?>
        пишите сюда ячейки в строке которые вам нужны
        <?php endforeach;?>
    </tr>
<?php endforeach;?>


Не пользуйтесь конкатенацией в html пользуйтесь тегами, код станет читабильней
Ответ написан
@alexalexes
// Вы определитесь:
$table = /* либо копите результат верстки в переменной table, а потом после обработки выводите все содержимое на строке N */
 '
    <tr>
    <td>'. $trtd .'</td> //отрисовывает первым столбиком таблицы номер сотрудника в таблице бд
    <td>'. $array[0]++ .'</td> //отрисовывает вторым столбиком таблицы имя сотрудника в таблице бд
    '. // зачем тут перед for конкатенация ?

for ($td=1; $td<=$daysinmonth; $td++){
// Либо сразу выводите результат через echo, не накапливая ничего для вывода контента
echo '<td>тут какое-то значение, в будующем должен быть код с операторами if и т.д.</td>';}.' //отрисосывает оставшиеся столбцы в зависимости от кол-ва дней в месяце
    </tr>';// если вы множите ячейки дней месяца, то наверное, строку таблицы нужно закрывать не в теле цикла?
  /*строка N */  echo ($table); // вывод всего накопленного содержимого

Оператор .= вам в помощь, чтобы добавить еще что-то к $table.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы