2015-12-05 2 views
3

У меня есть таблица (MySQL), которая содержит строки для уроков. В каждой из этих строк есть счетная страница просмотра и продолжительность урока. Я могу получить функцию (PHP), которая расскажет мне время, потраченное на просмотр урока, и добавьте все остальные уроки.Получить разные значения Mysql и умножить PHP

Мои таблицы изделия

id | time | views 
----------------- 
1 | 5 | 20 
2 | 40 | 0 
3 | 30 | 6 

общая сумма: (5 * 20) + (40 * 0) + (30 * 6) = 280 минут, и конвертировать в часах: 4,6667 ч (4 часа без десятичной)

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

function hoursLessons() { 

$con = new mysqli('localhost', 'root', 'root', 'myDB'); 


// Total Views 

$views_sql = "SELECT SUM(views) as total FROM articles"; 
$views_result = $con->query($views_sql); 
$views_row = $views_result->fetch_array(MYSQLI_ASSOC); 
$views_total = $views_row['total']; 

// Total Minutes 

$minutes_sql = "SELECT SUM(time) as total FROM articles"; 
$minutes_result = $con->query($minutes_sql); 
$minutes_row = $minutes_result->fetch_array(MYSQLI_ASSOC); 
$minutes_total = $minutes_row['total']; 

// Convert Minutes to Hours 

$hours = floor($minutes_total/60); 
$totalHours = $hours * $views_total; 

return $totalHours; 

$views_result->free(); 
$minutes_result->free(); 
$con->close(); 

} 
+0

Итак - какой именно вопрос? –

+0

что вам нужно? –

ответ

1

Вы можете использовать 1 запрос, чтобы получить результат 280:

select sum(time_views) from (select id,time*views as time_views from articles) a 

, и если вы хотите получить часы из самого запроса вы можете использовать:

select round(sum(time_views)/60) from (select id,time*views as time_views from articles) a 

в выше дадут 5 часов, но ниже дадут 4 часа:

select floor(sum(time_views)/60) from (select id,time*views as time_views from articles) a 
1

Я думаю, что это решит вашу проблему.

<?php 

function hoursLessons() { 

    $con = new mysqli('localhost', 'root', 'root', 'myDB'); 

    $sql = "SELECT (`time` * `views`) AS `times` FROM `articles`"; 
    $query = $con->query($sql); 

    $minutes_total = 0; 
    while ($result = $query->fetch_array(MYSQLI_ASSOC)) { 
     $minutes_total += $result["times"]; 
    } 

    // Convert Minutes to Hours 

    $totalHours = floor($minutes_total/60); 

    return $totalHours; 
} 

echo hoursLessons();