Я работаю над этим два дня, не могу понять, мне нужна помощь.
Цель - Среди прочего ...
- СУММА всех записей расписания проекта
- СУММА всех счетов проекта
Сгруппируйте их по проекту (ID проекта) и отобразите в таблице.
В одном и том жеНа странице, как и в таблице, упомянутой выше, есть форма, которая позволяет пользователям вводить новую запись расписания.При обновлении прогоны и таблица отображают обновленную итоговую сумму.
Текущая ситуация - Когда я отправляю форму расписания (пример: 1,25 часа для проекта X), происходят три вещи.
- Данные формы заносятся в базу данных.Это работает отлично.Ввод данных осуществляется именно так, как и должно быть.
- Страница обновляется, а запись в расписании для проекта X обновляется за 2,5 часа (она должна была увеличиться на 1,25)
- Общая сумма счета-фактуры также увеличивается наобщая стоимость счета для этого проекта.т. е. если для проекта X выставлен счет в размере 5000 долларов США, добавление новой записи расписания приведет к увеличению этого значения до 10 000 долларов США, до 15 000 долларов США и т. д.
Запрос - следующим образом:
<?php
$query = "SELECT tsm_projects.projectName AS projectName, tsm_projects.projectID AS projectID, tsm_projects.value AS value, tsm_projects.estHours AS estHours, tsm_clients.clientName AS clientName, tsm_projects.estHours - SUM(tsm_timesheets.time) AS remaining, SUM(tsm_invoices.invoiceValue) AS invoiceValue, SUM(tsm_timesheets.time) AS totalTime FROM tsm_projects
LEFT JOIN tsm_timesheets ON tsm_projects.projectID = tsm_timesheets.projectID
LEFT JOIN tsm_clients ON tsm_clients.clientID = tsm_projects.clientID
LEFT JOIN tsm_invoices ON tsm_invoices.projectID = tsm_projects.projectID
WHERE projectType = 'active'
GROUP BY tsm_timesheets.projectID
ORDER BY tsm_projects.projectName";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo "<tr><td>". $row['projectName'] . " [" . $row['clientName'] . "]</td><td>$" . number_format($row[value], 2, '.', ',') . " [" . $row['estHours'] . "]</td><td>$" . $row['invoiceValue'] . "</td><td>" . number_format($row[totalTime], 2, '.', ',') ." [";
if($row["remaining"] <= 0) {
echo "<span class=\"redText\">" . $row['remaining'] . "</span>"; }
else {
echo "<span class=\"greenText\">+" . $row['remaining'] . "</span>"; }
echo "]</td></tr>"; }
?>
SQL - Я предполагаю, что таблицы расписаний и / или счетов-фактур, вероятно, актуальны:
TABLE `tsm_timesheets` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`projectID` varchar(10) NOT NULL,
`activity` varchar(20) NOT NULL,
`date` date NOT NULL,
`time` decimal(4,2) NOT NULL,
`timesheetID` varchar(10) NOT NULL,
`memberID` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
)
TABLE `tsm_invoices` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`projectID` varchar(10) NOT NULL,
`month` varchar(15) NOT NULL,
`notes` varchar(255) NOT NULL,
`invoiceValue` decimal(10,2) NOT NULL DEFAULT '0.00',
`gstValue` decimal(10,2) NOT NULL DEFAULT '0.00',
`fee` decimal(6,2) NOT NULL DEFAULT '0.00',
`costs` decimal(6,2) NOT NULL DEFAULT '0.00',
`invoiceNumber` varchar(15) NOT NULL,
`dateSent` date NOT NULL,
`dateDeposit` date NOT NULL,
`dateAdded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`addedBy` varchar(20) NOT NULL,
`invoiceID` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
)
Надеюсь, кто-то может помочь.Заранее спасибо.
rrfive