Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: заполнить select интервалом времени

Сообщения:  [1-10]   [11-20] 

 
 автор: confirm   (13.06.2012 в 01:39)   письмо автору
 
   для: Slo_Nik   (12.06.2012 в 22:59)
 

Ну вот еще, для разбора. ) Как я говорил, в случае такой надобности поступил бы так:
<style>
body {
  font: 10pt arial, sans-serif;  
}
input {
  display: inline-block;
  margin-right: 2px;
  border: 1px solid #777;
  width: 60px;
  height: 17px;
  padding-left: 4pt;
  float: left;
}
#bth {
  display: inline-block;
  border: 1px solid #777;
  background: #aaa;
  width: 19px;
  height: 19px;
  float: left;
}
.tm_box, .tm_box div .tm_box {
  display: none;
  position: relative;
  padding: 2px 0 0 2px;
  width: 111px;
  height: 111px;
  background: #fff;
  border: 1px solid #777;
}
.gray {background: #eee;}
.tm_box div .tm_box {
  height: 89px;
  top: -17px;
}
.tm_box div {
  display: block;
  text-align: right;
  padding: 1px;
  line-height: 17px;
  width: 17px;
  height: 17px;
  border: 1px solid #777;
  margin: 0 1px 1px 0;
  float: left;
  cursor: pointer;  
}
</style>
<script type="text/javascript" 
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script type="text/javascript">
var h, tms;
function showSelect(e) {
  $("#minutes").remove();
  var tm = '<div class="tm_box" id='+tms.id+'>';
  for(var i = tms.start; i<tms.end; i += tms.step)
      tm += '<div>'+(tms.prev && i<10 ? '0' : '')+i%tms.mod+'</div>';
  tm += '</div>';
  $(tm).appendTo($(e))
       .slideDown(300)
       .parent().off('click');
}
function startEvent() {
  $("#bth").on('click', function(){
     tms = {id:'hours',start:6,end:28,step:1,mod:25,prev:0}; 
     $("#time").val("");
     showSelect(this);
  });  
}
$(function(){
   startEvent();
   $("#hours div").live('click', 
      function(e) {
        e.stopImmediatePropagation();
        tms = {id:'minutes',start:0,end:60,step:3,mod:60,prev:1};
        if($(this).parent().attr("id")=="hours") {
           h = $(this).text();
           $(this).parent().addClass("gray");
           showSelect(this);
        } else {
           $("#time").val(h+":"+$(this).text());
           $("#hours").remove();
           startEvent(); 
        }      
     }
   );
});
</script>
<input id="time" />
<div id="bth"></div>

DIV "bth", это кнопка с иконкой календаря.

  Ответить  
 
 автор: Slo_Nik   (12.06.2012 в 22:59)   письмо автору
 
   для: confirm   (12.06.2012 в 22:37)
 

а... Понял...
Спасибо за подсказки и код... Буду разбираться.

  Ответить  
 
 автор: confirm   (12.06.2012 в 22:37)   письмо автору
 
   для: Slo_Nik   (12.06.2012 в 22:10)
 

Нет не это. Каждый часовой интервал поместить в группу, заголовком которого будет указываться начало часового интервала, например, 6 часов, 7 часов и т.д.. Так как такой заголовок отображается в списке жирным шрифтом, а элементы списка с отступом, то удобнее будет воспринимать такой длинный список, а значит и выбирать легче будет.

  Ответить  
 
 автор: Slo_Nik   (12.06.2012 в 22:10)   письмо автору
 
   для: confirm   (12.06.2012 в 22:00)
 

вот только не понял с группами...
Вы имеете ввиду на первую половину дня и второю?

  Ответить  
 
 автор: confirm   (12.06.2012 в 22:00)   письмо автору
 
   для: Slo_Nik   (12.06.2012 в 21:46)
 

Я понял что для тренировки ) Ну ради нее и разбейте на группы список. Я так думаю, будет более удобно в этом случае.

  Ответить  
 
 автор: Slo_Nik   (12.06.2012 в 21:46)   письмо автору
 
   для: confirm   (12.06.2012 в 21:21)
 

я же говорю, что не себе, для практического применения спросил.
Просто для общего развития.
Ну а фигурные скобки по привычке ставлю

  Ответить  
 
 автор: confirm   (12.06.2012 в 21:21)   письмо автору
 
   для: Slo_Nik   (12.06.2012 в 20:36)
 

К дате (текущей) все равно привязано, просто явно данным способом ее нет необходимости указывать.

Второй вариант как вариант, можно ведь и по второму сделать. Ну а если говорить о практическом применении, то я бы так не делал, очень уж неудобен такой список для восприятия. Если уж неймется, то хотя бы разделить список на группы по часам (optgroup), иначе либо крутить медленно всматриваясь во время, либо плюнуть на это занятие. )
Я бы применил календарное представление и использовал JS, может чуть позже опишу такой вариант.

PS. Фигурные скобки для одного оператора, это роскошь. :)

  Ответить  
 
 автор: Slo_Nik   (12.06.2012 в 20:36)   письмо автору
 
   для: confirm   (12.06.2012 в 17:24)
 

ага, понятно, а я то пытался делить при вычислении в $i += 3...

вот только зачем второй вариант, если первый работает без привязки к дате?
написал так

<select name = 'listDataOne'>
<?php
for($i mktime(6,0,0), $k strtotime('6:00 + 20 hours'); $i $k$i += 180){
 echo 
"<option>".date('H:i'$i)."</option>";    
}
?>
</select>

выводит только время в нужном диапазоне.

  Ответить  
 
 автор: confirm   (12.06.2012 в 17:24)   письмо автору
 
   для: Slo_Nik   (12.06.2012 в 16:35)
 

Да 360 - это 6 часов, 1560 - 6+20 часов. А дальше нет - дальше нужно делить на 60, округляя в меньшую сторону, получая часы, и по модулю 60, получая минуты:
<?
$s 
'<select>';
for(
$i=360$i<=1560$i += 3
    
$s .= '<option>'.(floor($i/60)%24).':'
           
.($i%60 10 '0'.$i%60 $i%60).'</option>';
echo 
$s.'</select>';

  Ответить  
 
 автор: Slo_Nik   (12.06.2012 в 16:35)   письмо автору
 
   для: confirm   (12.06.2012 в 07:49)
 

спасибо за подсказку, очень краткий код получился у Вас... Теперь пытаюсь понять, как и что...

убрал из date день-месяц-год, время нормально выводит. Вот второй вариант не совсем понятен.
Я понял так
$i = 360 (6 часов после полуночи)
$k = 1560 (20 часов от 6 утра отсчитываем)
в цикле всё так же как в Вашем варианте?

  Ответить  

Сообщения:  [1-10]   [11-20] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования