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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Расписание
 
 автор: JESS   (01.08.2010 в 20:52)   письмо автору
 
 

Здравствуйте!

Делаю рассписание уроков, но вот попал в тупик.
Логика такая выводить 5 вертикальных колонок, каждая колонка - это день недели начиная с понедельника.

В колонке дивы, высота которых зависит от времяни, пример:

Начала урока в 8, конец урока в 9:40, того 1 час и 40 мин, переводиться в секунды. 120 секунд это 1px.

Загвостка в том, что я не знаю как высчитать перемену, а значит отступ второго урока от первого.
Тем самым если второй урок начинаеться в 11:00 , 1 час 20 мин перемена.

<div style="height:50px;margin-top:?????;">&nbsp;</div>

В базе я использую, урок, начало урока, и конец урока.

Будте добры помогите с решением проблемы))

  Ответить  
 
 автор: neadekvat   (01.08.2010 в 20:56)   письмо автору
 
   для: JESS   (01.08.2010 в 20:52)
 

Первое, что вы не знаете - правил русского языка, это пиздец печально.

Если вы можете из конца урока вычесть начало, то что мешает из начала следующего урока вычесть конец предыдущего?

  Ответить  
 
 автор: JESS   (01.08.2010 в 21:01)   письмо автору
 
   для: neadekvat   (01.08.2010 в 20:56)
 

Не знаю как алгоритм написать.

<?php
defined
('_INCLUDES') or die('ERROR');

$getSchemaTime mysql_query("SELECT * FROM `vA_ss_schema` WHERE `vecka`='27' ");
    while(
$d2mysql_fetch_row($getSchemaTime))
    {
    
//echo "Dag: ".$d[4]." /Lektion: ".$d[2]." /Starttid: ".$d[5]." /Sluttid ".$d[6]." /Sal: ".$d[7]."<br \>";

    
$date2 $d2[5]; //Начальное время
    
$date1 $d2[6]; //Конец времяни
    
$pattern "/(\d{4,4})\-(\d{1,2})\-(\d{1,2}) (\d{1,2}):(\d{1,2})/";
    
preg_match($pattern$date1$m1);
    
preg_match($pattern$date2$m2);
    
$date1 mktime($m1[4], $m1[5], 0$m1[2], $m1[1], $m1[3]);
    
$date2 mktime($m2[4], $m2[5], 0$m2[2], $m2[1], $m2[3]);
    
$d = ($date1 $date2) / 60;

    
$height = ($d*0.5); // 1мин = 0.5px
    //echo $margin = ((220-$d));
    
echo "<div style=\"height:".$height."px;background-color:green;\">&nbsp;</div>";

    }
?>

  Ответить  
 
 автор: neadekvat   (01.08.2010 в 21:17)   письмо автору
 
   для: JESS   (01.08.2010 в 21:01)
 

Во-первых, по-моему, здесь было бы удобнее использовать ассоциативный массив
Во-вторых, судя по шаблону рег.выражения, хранится время в формате ГГГ-ММ-ДД ЧЧ:ММ (хотя непонятно почему - ведь время занятий имеет постоянно значение), таким образом проще при выводе даты из бд привести это время во время юникс (то есть секунды) и из конца вычитать начало, таким образом можно было бы убрать бОльшую часть кода из цикла.
В-третьих, создайте переменную (перед циклом), например, $endOfPrevLesson = null, в цикле проверяйте ее, и если она не пуста, то из начала текущего занятия вычитайте значение в этой переменной - это и будет перемена. И естесственно в любом случаи надов эту переменную поместить время конца текущего урока.

  Ответить  
 
 автор: JESS   (02.08.2010 в 01:47)   письмо автору
 
   для: neadekvat   (01.08.2010 в 21:17)
 

В массивах я ничего не понимаю, так что решил проблему вот так))


<?php
    $getSchemaTime 
mysql_query("SELECT * FROM `vA_ss_schema` WHERE `vecka`='{$vecka}' ");
    while(
$dmysql_fetch_row($getSchemaTime))
    {
    
$atta "08:00:00";
    
$startTime $d[5];
    
$endTime $d[6];
    
$pattern "/(\d{1,2}):(\d{1,2})/";
    
preg_match($pattern$endTime$m1);
    
preg_match($pattern$startTime$m2);
    
preg_match($pattern$atta$m3);
    
$atta mktime($m3[1], $m3[2]);
    
$startTime mktime($m2[1], $m2[2]);
    
$endTime mktime($m1[1], $m1[2]);
    
$resultTime = ((($endTime $startTime) / 60));
    
$height = ($resultTime*0.7);
//--------------------------------------------------------------------
    
$formatStartTime substr($d[5], 05);
    
$formatEndTime substr($d[6], 05);
    
$verticalAlign = ($height-35)/2;
//--------------------------------------------------------------------
       
$margin = (($startTime $atta)/60)*0.7;

       if(
$margin 0) { $margin 0;  } else { $margin $margin; }
    echo 
"<div id=\"schemaHeadDiv\" style=\"height:".$height."px;margin-top:".$margin.";position:absolute;z-index:".$d[0]."\">
    <div id=\"schemaTable\" style=\"\">"
.$formatStartTime." - ".$formatEndTime."</div>
    <div id=\"schemaUnderTable\" style=\"padding-top:"
.$verticalAlign."\">Lektion</div>
    </div>"
;
    
// 9eb6ce
    //$arr["lession"][$startTime] = $finishTime;


    
}
?>

  Ответить  
 
 автор: bishake   (03.08.2010 в 12:23)   письмо автору
 
   для: JESS   (02.08.2010 в 01:47)
 

Вы видимо не только в массивах ничего не понимаете, но и в программировании в общем не очень разбираетесь.
Вот это что за чушь?
else { $margin = $margin; } 

  Ответить  
Rambler's Top100
вверх

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