2015-12-08 5 views
1

У меня есть вход в PHP, который показывает все, что я сделал.Расчет количества часов работы с базой данных

строительство, как:

Дата - Вещи сделано - Часы

Я понял, как показать все данные в таблице. Но я хочу иметь общее количество часов в нижней части, которое рассчитало все часы базы данных.

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

Я надеюсь, что кто-нибудь может мне помочь.

Заранее спасибо.

Это, как я показываю мой код (короткая версия):

<tr> 
     <td class="date"><?php echo $row['Date'] ?></td> 
     <td><?php echo $row['Detail'] ?></td> 
     <td><?php echo $row['Hours'] ?></td> 
    </tr> 

Так что для уточнения:

я делаю новый тд, который Эхо общее количество часов, добавляя все часы.

Так что, если мои часы 8 + 8 + 8 + 8 + 4 + 5 в таблице часов будет показано, как:

Всего часов: 41 часов

+0

взгляд в использовании функции агрегированных данных MySQL. http://www.mysqltutorial.org/mysql-aggregate-functions.aspx или эквивалентные функции PHP. –

+1

Как создается таблица базы данных? int date, varchar details, int hour –

+0

Вы используете этот фрагмент кода в цикле? @Emre? –

ответ

1

Для отображения полной суммы часов , вы делаете это:

$db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_DATABASE); 
$sql = 'SELECT SUM(`Hours`) AS `total` FROM `table_name`'; 
$res = $db->query($sql) or die('MySQL error ' . $db->error); 
$row = $res->fetch_assoc(); 
echo 'Total: ' . $row['total']; 

Если date имеет тип даты и времени/даты/времени вы можете получить в общей сложности на каждый день, как это (если date имеет дату типа, вам не нужно DATE( даты )):

$sql = 'SELECT DATE(`date`) AS `day`, SUM(`Hours`) as `total` ' 
    . 'FROM `table_name` GROUP BY DATE(`date`) ORDER BY `date`'; 
$res = $db->query($sql) or die('MySQL error ' . $db->error); 
while($row = $res->fetch_assoc()) 
    echo $row['day'] . ' has ' . $row['total'] . ' hours' . PHP_EOL; 

Если date имеет станд междунар или PHP метку времени вы можете получить в общей сложности на каждый день, как это:

$sql = 'SELECT DATE(FROM_UNIXTIME(`date`)) AS `day`, SUM(`Hours`) as `total` ' 
    . 'FROM `table_name` GROUP BY DATE(FROM_UNIXTIME(`date`)) ORDER BY `date`'; 
$res = $db->query($sql) or die('MySQL error ' . $db->error); 
while($row = $res->fetch_assoc()) 
    echo $row['day'] . ' has ' . $row['total'] . ' hours' . PHP_EOL; 
+0

Это сработало! Это то, что я искал, и это был своего рода тупой вопрос, который я только что понял. Мне очень жаль. – Emre

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