Как внутри echo или переменной выполнить цикл и ещё одно echo?
Уважаемые товарищи! Подскажите пожалуйста, как заставить это работать?) По задумке, мне нужна таблица, "кол-во людей" на "кол-во дней в месяце". Инклюды не показываю, от них смылса нет. Код весь работает кроме
'.for ($td=1; $td<=$daysinmonth; $td++){echo '<td>тут какое-то значение, в будующем должен быть код с операторами if и т.д.</td>';}.' |
'.for ($td=1; $td<=$daysinmonth; $td++){echo '<td>тут какое-то значение, в будующем должен быть код с операторами if и т.д.</td>';}.'
Не понимаю, как засунуть цикл в цикл, echo в echo или под переменную. Извините за глупость, в php не очень силён. Пока получается как на скриншоте. А мне соответственно нужны ячейки с какими-то значениям на пересечении фио и числа месяца. P.S. То есть, хочу сделать подобие MS Excel только на PHP. Но знаний php мало.
<?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> |
<?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>
Дополнительно:
Ответы:
я понимаю что вы новичок но у пхп можно делать вставлять такие теги как <?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;?> |
<?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 пользуйтесь тегами, код станет читабильней
-
<?php $amountpeople = count($array); ?> .. <?php foreach ($amountpeople as $humanNum=>$human) :?> <tr> <td><?=$humanNum?></td> <td> <?=$human[0]++ ?></td> // - что это такое? <?php foreach ($daysinmonth as $day): ?> пишите сюда ячейки в строке которые вам нужны // - мне нужно, что бы ячейки нарисовались сами, в зависимости от размера таблицы (5x31 или к примеру 21x28). А я мог записать значение уже в конктретную ячейку после. <?php endforeach;?> </tr> <?php endforeach;?>
<?php $amountpeople = count($array); ?> .. <?php foreach ($amountpeople as $humanNum=>$human) :?> <tr> <td><?=$humanNum?></td> <td> <?=$human[0]++ ?></td> // - что это такое? <?php foreach ($daysinmonth as $day): ?> пишите сюда ячейки в строке которые вам нужны // - мне нужно, что бы ячейки нарисовались сами, в зависимости от размера таблицы (5x31 или к примеру 21x28). А я мог записать значение уже в конктретную ячейку после. <?php endforeach;?> </tr> <?php endforeach;?>
Извиняюсь, вообще не понял, что вы предлагаете.
- MZhack, я вашего кода тоже не понял но как то выкручиваюсь)
// Вы определитесь: $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 = /* либо копите результат верстки в переменной 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.
- Обратив внимание на конкатенацию - затуп ушёл, наступило озарение :) Вот что бы нужно.
for ($trth=1; $trth<=$amountpeople; $trth++){ echo '<tr> <td>'. $trth .'</td> <td>'. $array[0]++ .'</td>'; for ($td=1; $td<=$daysinmonth; $td++){echo '<td></td>';} echo '</tr>'; }
for ($trth=1; $trth<=$amountpeople; $trth++){ echo '<tr> <td>'. $trth .'</td> <td>'. $array[0]++ .'</td>'; for ($td=1; $td<=$daysinmonth; $td++){echo '<td></td>';} echo '</tr>'; }
Теперь осталось придумать, как задать пустым ячейкам уникальные значения, в зависимости от того, на пересечении какого пользователя и дня они находятся. То есть что то на подобии как на скрине ниже.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос



Для выполнения цикла и вывода значения с помощью echo внутри PHP кода, можно воспользоваться следующим синтаксисом:
<?php // Пример выполнения цикла и вывода значения с помощью echo for ($i = 0; $i < 5; $i++) { echo "Значение переменной i равно: " . $i . "<br>"; }
В данном примере мы используем цикл for, который выполняется 5 раз (пока переменная $i меньше 5). Внутри цикла мы используем функцию echo для вывода значения переменной $i и текста "Значение переменной i равно: ".
Если необходимо выполнить ещё одно echo после завершения цикла, то можно просто добавить его за пределами цикла. Например:
<?php for ($i = 0; $i < 5; $i++) { echo "Значение переменной i равно: " . $i . "<br>"; } // Ещё одно echo после завершения цикла echo "Цикл завершен!";
Таким образом, после завершения цикла мы выводим ещё одно сообщение с помощью функции echo. Важно помнить, что в PHP можно использовать неограниченное количество функций echo для вывода информации на экран.