Есть таблица (html) в которую при загрузке страницы из MySql выводятся данные через цикл до последней записи.
Есть столбец с датой (срок), а она записана в миллисекундах.
Необходимо взять миллисекнды и преобразовать их в день\час\мин\сек, я для
этого пытался привернуть кем то написанный код, не вышло, т.к. я не осилил это, не могу понять как заставить это обрабатывать каждую полученную строку в цикле,а не вываливать все в одну строку.
Код обработчика миллисекнд в дату.
<?php
/**
* Преобразование секунд в секунды/минуты/часы/дни/года
*
* @param int $seconds - секунды для преобразования
*
* @return array $times:
* $times[0] - секунды
* $times[1] - минуты
* $times[2] - часы
* $times[3] - дни
* $times[4] - года
*
*/
function seconds2times($seconds)
{
$times = array();
// считать нули в значениях
$count_zero = false;
// количество секунд в году не учитывает високосный год
// поэтому функция считает что в году 365 дней
// секунд в минуте|часе|сутках|году
$periods = array(60, 3600, 86400, 31536000);
for ($i = 3; $i >= 0; $i--)
{
$period = floor($seconds/$periods[$i]);
if (($period > 0) || ($period == 0 && $count_zero))
{
$times[$i+1] = $period;
$seconds -= $period * $periods[$i];
$count_zero = true;
}
}
$times[0] = $seconds;
return $times;
}
?>
Это файл datarun.php я его инклюдю в индекс где должна быть выведена нормальная дата.
Вот код таблицы в цикле:
<?php
//Теперь строим таблицу с данными
if(mysql_num_rows($resultat) > 0){
$ids = 0;
while($array = mysql_fetch_array ($resultat)){
echo '<tr><td width="100">' . $array['name'] . '</td><td width="150">' . $array['authid'] . '</td><td width="110">' . $array['ip'] . '</td><td width="140">' . $array['reason'] . '</td><td width="170">' . $array['adminIp'] . '</td><td width="170">'.$array['length'].'</td></tr>';
$ids++; // увеличиваем значение $ids на 1 для следующей итерации
}
}
else{
echo 'Ошибка: В таблице нету ни одного чела.';
}
echo '</table>';
echo '<br><b><p class="bansblock">Аккаунтов всего: '.$ids.' </p></b>';
?>
'.$array['length'].' - Это массив MySql с миллисекундами, его и нужно преобразовывать.
Вот вторая часть кода преобразования миллисекнд в число, её и нужно прикрутить сюда в цикл, что бы на каждой новой строке она обрабатывала м.сек в число.
<?php
// массив секунд
$seconds = array($optimtimer);
// значения времени
$times_values = array('сек.','мин.','час.','д.','лет');
foreach ($seconds as $second)
{
echo $second . ' сек. = ';
$times = seconds2times($second);
for ($i = count($times)-1; $i >= 0; $i--)
{
echo $times[$i] . ' ' . $times_values[$i] . ' ';
}
}
?>
И как я только не пытался, преобразование работает, но вываливает все в одну строку (как видит в массиве), вместо того что бы на каждой строке отдельно выводить.