2016-11-28 66 views
0

我目前得到此代碼,其中有兩個循環:一個顯示所有ToDos,另一個計算在某個ToDo上工作的小時數。 我想要做的是將['pris'](成本pr小時)乘以循環中小時數['timer']的數量。將數據庫值乘以循環結果

echo "<div id='innhold'>"; 

$db = kobleTil(); 
$sql = "SELECT * FROM oppdrag"; 
$resultat = $db->query($sql); 
while($nesteRad = $resultat->fetch_assoc()) { 
echo "<hr />"; 

    echo "<table id='resultat'>"; 
    echo "<tr><th colspan='7'>" . $nesteRad['navn'] . "</th></tr>"; 
    echo "<tr><td><b>Type</b></td><td><b>Startdato</b></td><td><b>Sluttdato</b></td><td><b>Pris pr. time</b></td><td><b>Aktiv</b></td></tr>"; 
    echo "<tr>"; 
    echo "<td>" . $nesteRad['type'] . "</td>"; 
    echo "<td>" . $nesteRad['startDato'] . "</td>"; 
    echo "<td>" . $nesteRad['sluttDato'] . "</td>"; 
    echo "<td>" . $nesteRad['pris'] . "</td>"; 
    echo "<td>" . $nesteRad['aktiv'] . "</td>"; 
    echo '<td><a href="oppdrag.php?oppdrID=' . $nesteRad['oppdrID'] . '">Se på</a></td>'; 
    echo '<td><a href="litime.php?oppdrID=' . $nesteRad['oppdrID'] . '">Legg til timer</a></td>'; 
    echo '<td><a href="slett.php?oppdrID=' . $nesteRad['oppdrID'] . '">Slett</a></td>'; 
    echo "</tr></table>"; 
    echo "<hr />"; 

    $prisx = $nesteRad['pris']; 

    } 

echo "<a href='lioppdrag.php'><h5>Legg inn nytt oppdrag</h5></a>"; 
echo "<br />"; 
echo "<h3>Statistikk - Oppgaver arbeidet mest med<br /></h3>"; 

$statistikk = "SELECT oppdrag.*, (SELECT SUM(timer) FROM timeregistrering WHERE timeregistrering.oppdrID = oppdrag.oppdrID) AS Timer FROM oppdrag ORDER BY Timer DESC"; 
$print = $db->query($statistikk); 
while($rad = $print->fetch_assoc()) { 

    $timer = $rad['Timer'] . '00px'; 
    echo "<b>Oppdrag: " . $rad['navn'] ." Antal timer: " . $rad['Timer'] . " </b><br/>"; 
    echo "<img src='firkant.png' id='firkant' width='"; echo $timer; echo "'></img><br/><br/>"; 

    $timerx = $rad['Timer']; 

    } 

echo "</div>"; 
} else { 
echo "<div id='innhold'>"; 
echo "<a href='index.php'>Logg inn for å se innholdet</a>"; 

echo "</div>"; 
} 
?> 

回答

0

我會嘗試設置你在正確的方向,但沒有確切的表我不能給你確切的答案。首先我會在你進入PHOP和循環之前在SQL中執行此操作。根據set的不循環考​​慮,請將每個組的todo和sum(定時器)分組。然後你可以用sum(timer)* pris把它叫做Total來做另一個列。僞代碼會像

select ToDo.Name, sum(working.timer), sum(timer)*ToDo.Pris as Total 
from ToDo join working on todo.id = working.todo_id 
group by ToDo.Name 

(和where子句限制的日期可能的工作,除非你只是想一切)

編輯:對不起,我不知道爲什麼代碼沒有出現時我第一次看到這個問題,但我只是回答後纔看到它,但我仍然認爲這可能有幫助,所以請看看並讓我知道

+0

'select oppdrag.navn,sum(timeregistrering.timer),sum(timer)* oppdrag.pris as Total from oppdrag join timeregistrering on timeregistrering.timeID = timeregistrering.oppdrID group by op pdrag.navn'#1055 - SELECT列表的表達式#3不在GROUP BY子句中,並且包含非聚集列'prosjektphp.oppdrag.pris',它在功能上不依賴於GROUP BY子句中的列;這與sql_mode = only_full_group_by –

+0

不兼容,您可以將oppdrag.pris放在sum paren的第三個表達式中。由於它與oppdrag.navn位於同一個表中,因此它可能會在group by子句中通過oppdrag.navn,oppdrag.pris組來識別它。但我只是移動括號,它應該工作 – billpennock