Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Циклы для вывода в таблицу
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Циклы для вывода в таблицу

Страниц (1): [1]
 

1. Lora - 11 Мая, 2020 - 20:30:06 - перейти к сообщению
Всем привет. Пытаюсь написать код для вывода html таблицы расписания приёмных часов. То есть,хочу записаться на 12-00.Выводится таблица, в которой можно посмотреть какие часы заняты,а какие свободны. Для примера. С базы получаю массив,для двух дней. Перебираю.
PHP:
скопировать код в буфер обмена
  1. Array ( [0] => Array ( [id] => 56  [date] => 2020-05-11 [time] => Array ( [0] => 2:13:30 [1] => 1:14:30 ) )
  2. [1] => Array ( [id] => 58 [date] => 2020-05-12 [time] => Array ( [0] => 1:12:30 ) )

Приготовил массивы для таблицы html.
$list - список приёмных часов. Будет первый столбец в таблице.
$w_weeks - дни недели.
Рисую таблицу.
CODE (html):
скопировать код в буфер обмена
  1.         <table class="table table-bordered" >
  2.                 <tr>
  3.                         <td>Часы/Дни</td>
  4.                         <?php $j = 0; while($j<7){ ?>
  5.                                 <td ><?php echo $w_weeks[$j] ?></td>
  6.                         <?php $j++;} ?>
  7.                 </tr>
  8.                 <?php $i = 0; while($i<count($list)){ ?>
  9.                         <tr>                           
  10.                                 <td><?php echo $list[$i];?></td>
  11.                         </tr>
  12.                 <?php $i++;}?>                 
  13.         </table>

Теперь мне надо как то составить условие, что такое то время занято,такое то свободно. То есть связать время из базы со временем из таблицы. Весь мозг сломал уже.
Время из базы состоит из id пользователя,первая цифра и времени,следующие две. В процессе перебора оставляю только время
$pre_items - массив из базы
PHP:
скопировать код в буфер обмена
  1.                         foreach($pre_items as $pre){
  2.                          $pre['time'] = explode(',',$pre['time']);
  3.                          $date[] = $pre['date'];
  4.                          $array[] = $pre;
  5.                         }
  6.                                        
  7.                         foreach($array as $lists){
  8.                         $times = $lists['time'];
  9.                         foreach($times as $tim){
  10.                         $list_time = explode(':',$tim);
  11.                         $time[] = $list_time[1].':'.$list_time[2];
  12.                                 }                              
  13.                         }
2. Vladimir Kheifets - 13 Мая, 2020 - 12:51:24 - перейти к сообщению
Lora пишет:
Всем привет. Пытаюсь написать код для вывода html таблицы расписания приёмных часов. То есть,хочу записаться на 12-00.Выводится таблица, в которой можно посмотреть какие часы заняты,а какие свободны. Для примера. С базы получаю массив,для двух дней. Перебираю.
PHP:
скопировать код в буфер обмена
  1. Array ( [0] => Array ( [id] => 56  [date] => 2020-05-11 [time] => Array ( [0] => 2:13:30 [1] => 1:14:30 ) )
  2. [1] => Array ( [id] => 58 [date] => 2020-05-12 [time] => Array ( [0] => 1:12:30 ) )

Приготовил массивы для таблицы html.
$list - список приёмных часов. Будет первый столбец в таблице.
$w_weeks - дни недели.
Рисую таблицу.
CODE (html):
скопировать код в буфер обмена
  1.         <table class="table table-bordered" >
  2.                 <tr>
  3.                         <td>Часы/Дни</td>
  4.                         <?php $j = 0; while($j<7){ ?>
  5.                                 <td ><?php echo $w_weeks[$j] ?></td>
  6.                         <?php $j++;} ?>
  7.                 </tr>
  8.                 <?php $i = 0; while($i<count($list)){ ?>
  9.                         <tr>                           
  10.                                 <td><?php echo $list[$i];?></td>
  11.                         </tr>
  12.                 <?php $i++;}?>                 
  13.         </table>

Теперь мне надо как то составить условие, что такое то время занято,такое то свободно. То есть связать время из базы со временем из таблицы. Весь мозг сломал уже.
Время из базы состоит из id пользователя,первая цифра и времени,следующие две. В процессе перебора оставляю только время
$pre_items - массив из базы
PHP:
скопировать код в буфер обмена
  1.                         foreach($pre_items as $pre){
  2.                          $pre['time'] = explode(',',$pre['time']);
  3.                          $date[] = $pre['date'];
  4.                          $array[] = $pre;
  5.                         }
  6.                                        
  7.                         foreach($array as $lists){
  8.                         $times = $lists['time'];
  9.                         foreach($times as $tim){
  10.                         $list_time = explode(':',$tim);
  11.                         $time[] = $list_time[1].':'.$list_time[2];
  12.                                 }                              
  13.                         }

Добрый день!
Советую Вам в начале сформализовать задачу, а затем думать о том как её реализовать.
Например:
Важно продумать авторизацию перед записью на прием.
Как минимум необходимо получить имя, номер документа(например, карты мед. страховки),
мэйл и отправить на него код доступа.
Получив доступ, посититель может ввести, дату и время, и ему, после проверки, может выдаваться сообщение:
"Ок записан", или "занято" и "рисуется" календарь на ближайшей от выбранной даты неделю или месяц.
Для этого необходимо иметь информацию о рассписании работы (по дням недели и часам)
и информацию об уже зарегистрированных поситителях.
Нужно знать максиимальную продолжительность обслуживания одного поситителя
и допустимое время ожидания в месте приёма.
Посмотрите запись на приём здесь:
https://q[dot]midpass[dot]ru/ru/account/[dot][dot][dot]oviderCode=49305
Удачи!
3. Thomas_Bergersen - 28 Мая, 2022 - 11:26:19 - перейти к сообщению
<?php

if (isset($_POST['name']) && isset($_POST['surename']) && isset($_POST['age']) && isset($_POST['nationality'])&& isset($_POST['university'])&& isset($_POST['kurs'])&& isset($_POST['group'])&&(isset($_POST['birinshi_san']) && isset($_POST['ekinshi_san']))&&(isset($_POST['email']) && isset($_POST['password']))) {
$name = $_POST['name'];
$surename = $_POST['surename'];
$age = $_POST['age'];
$nationality = $_POST['nationality'];
$university = $_POST['university'];
$kurs = $_POST['kurs'];
$group = $_POST['group'];
$plus = (int)$_POST['birinshi_san'] + (int)$_POST['ekinshi_san'];
$minus = (int)$_POST['birinshi_san'] - (int)$_POST['ekinshi_san'];
$proiz = (int)$_POST['birinshi_san'] * (int)$_POST['ekinshi_san'];
$div = (int)$_POST['birinshi_san'] / (int)$_POST['ekinshi_san'];
$email = $_POST['email'];
$password = $_POST['password'];
$tel = $_POST['tel'];
$name = $_POST['name'];
$dob = $_POST['dob'];
$age = floor( ( time() - strtotime($dob) ) / (60 * 60 * 24 * 365.25) );
require 'natizhe.php';

}
4. Vladimir Kheifets - 29 Мая, 2022 - 10:42:27 - перейти к сообщению
Thomas_Bergersen пишет:
Спойлер (Отобразить)


Добрый день!
Код, который Вы показали совсем не по теме "Вывод html таблицы расписания приёмных часов".
Однако, раз уж Вы его опубликовали, обратите внимание на следущее:
1. Нет необходимости применять функцию isset ко всем POST переменным.
2. Если необходимо применить (int) к $_POST['birinshi_san'] и $_POST['ekinshi_san'],
то лучше было бы вычислить значения integer один раз, а потом их использовать в расчетах $plus, $minus, $proiz, $div
3. Для вычисления интервала между двумя датами, в вашем случае возраста $age, лучше применять методы diff и format класса DateTime
4. Ваш код можно записать так:
Спойлер (Отобразить)
Удачи!

 

Powered by ExBB FM 1.0 RC1