Hello all, this is my first post on phpfreaks.
I'm trying to figure out what the better way to write this is. I think that the way I have it is very slow and not the best way to. Any idea?
function tot_time_worked_by_week(){ global $db; $username = $_SESSION['username']; $sundayTime = $mondayTime = $tuesdayTime = $wednesdayTime = $thursdayTime = $fridayTime = $saturdayTime = 0; $query = "SELECT user_id, time_zone FROM users WHERE user_name = '{$username}' "; $resSet = $db->query($query,'assoc'); $user_id = $resSet[0]['user_id']; $user_timezone = $resSet[0]['time_zone']; $time = 0; $query = "SELECT project_id FROM project WHERE user_id = '{$user_id}'"; $res = $db->query($query,'assoc'); if(!empty($res)): foreach($res as $project): $query = "SELECT track_id FROM project_track WHERE project_id = ".$db->prep($project['project_id']); $resT = $db->query($query,'assoc'); if($resT != false){ foreach($resT as $row): $query = "SELECT time_start, time_end FROM track_time WHERE track_id = ".$db->prep($row['track_id'])." AND YEARWEEK(FROM_UNIXTIME(time_start)) = YEARWEEK(CURRENT_DATE) AND DAYOFWEEK(FROM_UNIXTIME(time_start)) = 1"; $sunday = $db->query($query,'assoc'); if(empty($sunday[0]['time_start'])){ $sundayTime += 0; }else{ $sundayTime += calculate_time_past($sunday[0]['time_start'],$sunday[0]['time_end'],'U'); } $query = "SELECT time_start, time_end FROM track_time WHERE track_id = ".$db->prep($row['track_id'])." AND YEARWEEK(FROM_UNIXTIME(time_start)) = YEARWEEK(CURRENT_DATE) AND DAYOFWEEK(FROM_UNIXTIME(time_start)) = 2"; $monday = $db->query($query,'assoc'); if(empty($monday[0]['time_start'])){ $mondayTime += 0; }else{ $mondayTime += calculate_time_past($monday[0]['time_start'],$monday[0]['time_end'],'U'); } $query = "SELECT time_start, time_end FROM track_time WHERE track_id = ".$db->prep($row['track_id'])." AND YEARWEEK(FROM_UNIXTIME(time_start)) = YEARWEEK(CURRENT_DATE) AND DAYOFWEEK(FROM_UNIXTIME(time_start)) = 3"; $tuesday = $db->query($query,'assoc'); if(empty($tuesday[0]['time_start'])){ $tuesdayTime += 0; }else{ $tuesdayTime += calculate_time_past($tuesday[0]['time_start'],$tuesday[0]['time_end'],'U'); } $query = "SELECT time_start, time_end FROM track_time WHERE track_id = ".$db->prep($row['track_id'])." AND YEARWEEK(FROM_UNIXTIME(time_start)) = YEARWEEK(CURRENT_DATE) AND DAYOFWEEK(FROM_UNIXTIME(time_start)) = 4"; $wednesday = $db->query($query,'assoc'); if(empty($wednesday[0]['time_start'])){ $wednesdayTime += 0; }else{ $wednesdayTime += calculate_time_past($wednesday[0]['time_start'],$wednesday[0]['time_end'],'U'); } $query = "SELECT time_start, time_end FROM track_time WHERE track_id = ".$db->prep($row['track_id'])." AND YEARWEEK(FROM_UNIXTIME(time_start)) = YEARWEEK(CURRENT_DATE) AND DAYOFWEEK(FROM_UNIXTIME(time_start)) = 5"; $thursday = $db->query($query,'assoc'); if(empty($thursday[0]['time_start'])){ $thursdayTime += 0; }else{ $thursdayTime += calculate_time_past($thursday[0]['time_start'],$thursday[0]['time_end'],'U'); } $query = "SELECT time_start, time_end FROM track_time WHERE track_id = ".$db->prep($row['track_id'])." AND YEARWEEK(FROM_UNIXTIME(time_start)) = YEARWEEK(CURRENT_DATE) AND DAYOFWEEK(FROM_UNIXTIME(time_start)) = 6"; $friday = $db->query($query,'assoc'); if(empty($friday[0]['time_start'])){ $fridayTime += 0; }else{ $fridayTime += calculate_time_past($friday[0]['time_start'],$friday[0]['time_end'],'U'); } $query = "SELECT time_start, time_end FROM track_time WHERE track_id = ".$db->prep($row['track_id'])." AND YEARWEEK(FROM_UNIXTIME(time_start)) = YEARWEEK(CURRENT_DATE) AND DAYOFWEEK(FROM_UNIXTIME(time_start)) = 7"; $saturday = $db->query($query,'assoc'); if(empty($saturday[0]['time_start'])){ $saturdayTime += 0; }else{ $saturdayTime += calculate_time_past($saturday[0]['time_start'],$saturday[0]['time_end'],'U'); } endforeach; } endforeach; endif; echo $sundayTime; echo $mondayTime; echo $tuesdayTime; echo $wednesdayTime; echo $thursdayTime; echo $fridayTime; echo $saturdayTime; }