Как сформировать option в selecte для работы с временем?

Добрый день, столкнулся с задачей.
Есть выпадающий список, который сделан select - том. В нем есть что то вроде меток - время там от 8 до 22.
Пользователь выбирает время от до и его данные записываются в базу.
Дальше хочу проверить и закрыть то время которое выбрал юзер и которое записалось в базу.
Вот что есть.
Форма
5b321e5ea8b5e387503774.png
Не могу понять, как мне не задваивать данные. Там что выделено одно закрыто (disabled) а второе нет
Вот код
$timeStart 	= $formatter -> asTime( $this->model->working_time_start, 'php:G');
		$timeEnd 	= $formatter -> asTime( $this->model->working_time_end, 'php:G');

		$checkTimeStart = $this -> getAllTimeMyOrderInConferenceRoom();

		$options = '';
		for( $i = $timeStart; $i <= $timeEnd; $i++ )
		{
			foreach( $checkTimeStart as $time )
			{
				if( in_array( $i,$time ) )
				{
					$checkOrderTime	= $formatter -> asTime( $time[ 'time_start' ], 'php:G');
					if( $i == $checkOrderTime )
					{
						$options .= "<option disabled  value='".$checkOrderTime."'>".$checkOrderTime.":00</option>";
					}
				}
			}
			$options .= "<option  value='".$i."'>".$i.":00</option>";
		}

Я вижу что два раза запрашиваю данные, но как мне проверку сделать правильно и скрыть то что уже не доступно...
  • Вопрос задан
  • 27 просмотров
Решения вопроса 1
Jhon_Light
@Jhon_Light Автор вопроса
Вид
$timeStart 	= $formatter -> asTime( $this->model->working_time_start, 'php:G');
		$timeEnd 	= $formatter -> asTime( $this->model->working_time_end, 'php:G');

		$checkTimeStart = $this -> getAllTimeMyOrderInConferenceRoom();

		$options = '';
		for( $i = $timeStart; $i <= $timeEnd; $i++ )
		{
			$disabled = ( in_array( $i,$checkTimeStart)) ? 'disabled' : '';
			$options .= "<option ". $disabled ." value='".$i."'>".$i.":00</option>";
		}

Модель
public function getAllTimeMyOrderInConferenceRoom( $id_conf_rom )
		{

			$rows = BookingConferenceRoom ::find()
										  -> select( 'time_start' )
										  -> where( [ 'conf_room_id' => $id_conf_rom ] )
										  -> orderBy( [ 'time_start' => SORT_ASC ] )
										  -> column();
			if( $rows )
			{
				$dates = [];
				foreach( $rows as $row )
				{
					$dates[] = Yii ::$app -> formatter -> asTime( $row, 'php:G' );
				}
				return $dates;
			}
			return [];
		}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@iSensetivity
бухгалтер, програміст-самоук
Причем тут YII?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы