|
|
|
| Здравствуйте!
Делаю рассписание уроков, но вот попал в тупик.
Логика такая выводить 5 вертикальных колонок, каждая колонка - это день недели начиная с понедельника.
В колонке дивы, высота которых зависит от времяни, пример:
Начала урока в 8, конец урока в 9:40, того 1 час и 40 мин, переводиться в секунды. 120 секунд это 1px.
Загвостка в том, что я не знаю как высчитать перемену, а значит отступ второго урока от первого.
Тем самым если второй урок начинаеться в 11:00 , 1 час 20 мин перемена.
<div style="height:50px;margin-top:?????;"> </div>
В базе я использую, урок, начало урока, и конец урока.
Будте добры помогите с решением проблемы)) | |
|
|
|
|
|
|
|
для: JESS
(01.08.2010 в 20:52)
| | Первое, что вы не знаете - правил русского языка, это пиздец печально.
Если вы можете из конца урока вычесть начало, то что мешает из начала следующего урока вычесть конец предыдущего? | |
|
|
|
|
|
|
|
для: neadekvat
(01.08.2010 в 20:56)
| | Не знаю как алгоритм написать.
<?php
defined('_INCLUDES') or die('ERROR');
$getSchemaTime = mysql_query("SELECT * FROM `vA_ss_schema` WHERE `vecka`='27' ");
while($d2= mysql_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;\"> </div>";
}
?>
|
| |
|
|
|
|
|
|
|
для: JESS
(01.08.2010 в 21:01)
| | Во-первых, по-моему, здесь было бы удобнее использовать ассоциативный массив
Во-вторых, судя по шаблону рег.выражения, хранится время в формате ГГГ-ММ-ДД ЧЧ:ММ (хотя непонятно почему - ведь время занятий имеет постоянно значение), таким образом проще при выводе даты из бд привести это время во время юникс (то есть секунды) и из конца вычитать начало, таким образом можно было бы убрать бОльшую часть кода из цикла.
В-третьих, создайте переменную (перед циклом), например, $endOfPrevLesson = null, в цикле проверяйте ее, и если она не пуста, то из начала текущего занятия вычитайте значение в этой переменной - это и будет перемена. И естесственно в любом случаи надов эту переменную поместить время конца текущего урока. | |
|
|
|
|
|
|
|
для: neadekvat
(01.08.2010 в 21:17)
| | В массивах я ничего не понимаю, так что решил проблему вот так))
<?php
$getSchemaTime = mysql_query("SELECT * FROM `vA_ss_schema` WHERE `vecka`='{$vecka}' ");
while($d= mysql_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], 0, 5);
$formatEndTime = substr($d[6], 0, 5);
$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;
}
?>
|
| |
|
|
|
|
|
|
|
для: JESS
(02.08.2010 в 01:47)
| | Вы видимо не только в массивах ничего не понимаете, но и в программировании в общем не очень разбираетесь.
Вот это что за чушь?
else { $margin = $margin; }
|
| |
|
|
|