2013-10-13 3 views
0

У меня есть таблица, которую я заполняю информацией о базе данных. и эта таблица выглядит следующим образомПоказывать время между 2 часами в sql

enter image description here

Следующая У меня есть таблица на моей странице обзора, которая выглядит следующим образом

enter image description here

Но как я могу добавить это имя в 15:00?

Это код, который я использую.

$matrix = array(); 
    // matrix vullen 
    while ($row = $res->fetch_assoc()) { 
     if ($row['datum_van'] != $date) { 
      $date = $row['datum_van']; 
      $matrix[$date] = $times; 
     } 
     $matrix[$date][$row['tijd_van']][] = $row['name']; 
     $matrix[$date][$row['tijd_tot']][] = $row['name']; 
    } 
    // de tabel beginnen 
    $var = '<table class="striped">'; 
    $var .= '<tr class="header" id="ax">'; 
    $var .= '<td id="a_datum">Datum</td>'; 

    for($i=9; $i<24; $i++) { 

     $var .= '<td>' . $i . ':00</td>';       
    } 
    $var .= '<td>geen eindtijd</td>'; 

    $var .= '</tr>'; 
    // de matrix uitlezen 
    foreach ($matrix as $datekey => $timearray) { 
     $var .= '<tr><td>' . $datekey . '</td>'; 
     foreach ($timearray as $names) { 
      $var .= '<td>'; 
      if (count($names) > 0) { 
       $var .= implode('<br>', $names); 
      } 
      else { 
       $var .= '&nbsp;'; 
      } 
      $var .= '</td>'; 
     } 
     $var .= '</tr>' . PHP_EOL; 
    } 
    $var .= '</table>'; 
    echo $var; 
+0

Если пользователь находится на «собрании» с 14:00 до 16:00, это означает, что он находится на совещании только 2 часа, а не 3, поэтому следует указывать только час 14 и 15, а не 16. И что происходит, если из и в разные дни? –

+0

hmm теперь, когда я говорю это, это имеет смысл, но что, если его с 14:00 до 17:00, то мне все еще нужно больше часов, чтобы заполнить правильно? – Reshad

+0

Это ваша логика, я просто пытаюсь это понять. Если время с 14:00 до 17:00, необходимо заполнить 14-15-16 часов. Что, если время с 14:00 до 17:15, какие часы сейчас заполнены? И что произойдет, если от и до дат в разные дни? - Glavić 5 мин назад –

ответ

0

Не зная свой полный набор данных ... проверьте, если время больше (или равно) начало и меньше (или равно) конец, и если оба дела истинны, поставить имя человека в поле.

0

Проблема заключается в том, что вы только назначить эти двух ячеек их значение с этим кодом

$matrix[$date][$row['tijd_van']][] = $row['name']; 
$matrix[$date][$row['tijd_tot']][] = $row['name']; 

Вы должны проверить, сколько времени между этими двумя значениями van и von и установить имена для часов между ними, как Что ж.

Это можно сделать следующим образом

$start_timestamp = strtotime($row['tijd_van']); 
$scnds_between = strtotime($row['tijd_tot']) - $start_timestamp; 
$hrs_between = floor($scnds_between/3600) - 1; 
// -1 because the first hour is already in matrix 
for ($i=1; $i<=$hrs_between; ++$i) { 
    $new_date = date("Y-m-d H:i:s", $start_timestamp+($i*3600)); 
    $matrix[$date][$new_date][] = $row['name']; 
} 

это работает только, если tijd_* подобны datum_* значений и может (или изменения к) можно использовать с StrToTime

+0

$ new_date пуст. потому что $ start_timestap также пуст .. tijd_van уже время, поэтому strtotime не много для него? – Reshad

+0

Да, просто удалите все 'strtotime', если он уже является допустимой меткой времени – kero

+0

hmm все еще нет записей в таблице. Я отлаживал бит alittle, и кажется, что переменные внутри цикла for не заполняются. – Reshad

1

на основании метода для Наполнение имена в $ timearray (код не показан), вам нужно добавить еще одну дополнительную проверку. Вам нужно проверить, что существует запись имени, где время начала до текущего времени, а время окончания - по текущему времени. Простая проверка, как это поможет заполнить $ timearray правильно:

if $cur_time < $time_start and $cur_time > $time_end 
    // Add the name to the time-array 

где $ cur_time это время вы оцениваете, и TIME_START и time_end являются значения, сохраненных в таблице базы данных.

+0

'$ timearray' поступает из foreach над' $ matrix', который заполняется в начале кода – kero

+0

Как мне выполнить эту проверку в моем коде? – Reshad

Смежные вопросы