mheddaMedlem sedan feb. 2000385 inlägg
Hejsan!
Har en liten fundering jag har fastnat på denna kod.
Vad är felet, månad visas bra nu det blir bara ett februari osv. men däremot så summeras inte tidåtgången på samma rara sätt. Vad är felet??
Kan tänka mig att loopen ligger fel, men jag tycker att jag har prövat olika alternativ sen är jag nog ingen värsting på detta, och när man sitter för länge med samma kod så blir man ju helt blind.
Denna info skall läggas ihop och visas.
Namn: Sven-Erik Backman Datum: 2003-12-07
Tid: 5.0 Timmar Projekt: Dynaweb
Namn: Sven-Erik Backman Datum: 2003-07-04
Tid: 2.0 Timmar Projekt: Dynaweb
Namn: Sven-Erik Backman Datum: 2003-07-08
Tid: 2.0 Timmar Projekt: Dynaweb
Namn: Sven-Erik Backman Datum: 2003-02-01
Tid: 10.0 Timmar Projekt: Dynaweb
Namn: Sven-Erik Backman Datum: 2003-02-01
Tid: 2.0 Timmar Projekt: Sveaskog
Detta är min kod:
<table width="145" border="0" cellspacing="3" cellpadding="0" class='kantlinje' height="50">
<tr>
<td class="blutten" height="18" align="left" valign="top" colspan="3">Timmar/Mån:
</td>
</tr>
<?
$strSQL_month="SELECT Month(cast(datum as datetime)) From tbl_tidrapport WHERE namn='$namn_user' group by month(cast(datum as datetime))";
$result_month = odbc_exec($conn,$strSQL_month);
while(odbc_fetch_row($result_month))
{
$project_month = stripslashes(odbc_result($result_month,1));
$year = substr($datum,0,4);
$strSQL_datum="Select datum From tbl_tidrapport WHERE namn='$namn_user' GROUP BY datum";
$result_datum=odbc_exec($conn,$strSQL_datum);
while(odbc_fetch_row($result_datum))
{
$datum = stripslashes(odbc_result($result_datum,"datum"));
$year = substr($datum,0,4);
$strSQL_man="SELECT SUM(tid_atgang) From tbl_tidrapport WHERE namn='$namn_user' AND datum='$datum'";
$result_man = odbc_exec($conn,$strSQL_man);
while(odbc_fetch_row($result_man))
{
$month_sum = stripslashes(odbc_result($result_man,1));
}
}
?>
<tr>
<td class="blutt" height="14" align="left" valign="top" width="33">
<?=$year?>
</td>
<td class="blutten" height="14" align="left" valign="top" width="40"><span class="blutt">
<?=$arrMonth[ $project_month ];?>
</span></td>
<td class="blutten" height="14" align="right" valign="top" width="60"><span class="blutt">
<?=$month_sum;?>
Tim</span></td>
</tr>
<?
}
?>
</table>
Det som visas:
Timmar/Mån:
2004 Februari 10.0 Tim
2004 Juli 10.0 Tim
2004 December 10.0 Tim
MVH Hedda
Hydr0maticMedlem sedan sep. 2001157 inlägg
Det behövs endast 1 query för att lösa ditt problem.
Jag är inte säker på om allt är korrekt nu, men jag testade det i mySQL och där funkade det iaf. Lösningen bör se ut ungefär så här:
<table width="145" border="0" cellspacing="3" cellpadding="0" class='kantlinje' height="50">
<tr>
<td class="blutten" height="18" align="left" valign="top" colspan="2">Timmar/Mån:
</td>
</tr>
<?
$strSQL_list="SELECT DATE_FORMAT(datum, '%Y %M') AS datumet, SUM(tid_atgang) AS summa FROM tbl_tidrapport WHERE namn='$namn_user' GROUP BY datumet";
$result_list = odbc_exec($conn, $strSQL_list);
while (odbc_fetch_row($result_list)) {
$datum = odbc_result($result_list, "datumet");
$summa_timmar = odbc_result($result_list, "summa");
?>
<tr>
<td class="blutten" height="14" align="left" valign="top" width="73">
<span class="blutt"><?=$datum?></span>
</td>
<td class="blutten" height="14" align="right" valign="top" width="60">
<span class="blutt"><?=$summa_timmar?> Tim</span>
</td>
</tr>
<?
}
?>
</table>
mheddaMedlem sedan feb. 2000385 inlägg
Helt otroligt bra Hydr0matic
Jag måste lära mig sql språket mycket bättre.
Nu funkar det med denna kod förrutom att jag fick byta ut DATE_FORMAT(datum, '%Y %M') mot Month(cast(datum as datetime)) eftersom jag sitter mot ms-sql med odbc funktion och
DATE_FORMAT(datum, '%Y %M') finns inte att tillgå där..
eftersom jag har en array som visar månadsnamn beroende på index 1, 2 osv..
Nu ska jag bara fixa till år också.
$strSQL_list="SELECT Month(cast(datum as datetime)) AS datumet, SUM(tid_atgang) AS summa FROM tbl_tidrapport WHERE namn='$namn_user' GROUP BY month(cast(datum as datetime))";
$result_list = odbc_exec($conn, $strSQL_list);
while (odbc_fetch_row($result_list)) {
$project_month = odbc_result($result_list, "datumet");
$summa_timmar = odbc_result($result_list, "summa");
?>
//end test
?>
<tr>
<td class="blutt" height="14" align="left" valign="top" width="33">
<?=$year?>
</td>
<td class="blutten" height="14" align="left" valign="top" width="40"><span class="blutt">
<?=$arrMonth[ $project_month ];?>
</span></td>
<td class="blutten" height="14" align="right" valign="top" width="60"><span class="blutt">
<?=$summa_timmar;
//$month_sum;?>
Tim</span></td>
</tr>
<?
}
?>
</table>
Hydr0maticMedlem sedan sep. 2001157 inlägg
oki =)
finns CONCAT() ? isf, testa
SELECT CONCAT(Year(cast(datum as datetime)), " ", Month(cast(datum as datetime))) AS datumet
Hydr0maticMedlem sedan sep. 2001157 inlägg
Hur du än gör måste du iaf gruppera summorna efter en sammansatt "år-månad"-sträng.... Så vet inte om det där med arrayn är så smidigt. Det måste finnas en funktion i ms som ger månaden som sträng ? samt året.... ?
mheddaMedlem sedan feb. 2000385 inlägg
CONCAT() fanns tyvärr inte, men jag löste det så här
$strSQL_list="SELECT Month(cast(datum as datetime)) AS datumet, Year(cast(datum as datetime)) AS year, SUM(tid_atgang) AS summa FROM tbl_tidrapport WHERE namn='$namn_user' GROUP BY month(cast(datum as datetime)), year(cast(datum as datetime))";
Hade aldrig löste utan din hjälp tusen tack Hydr0matic
--------------------------------------------------------------------
Vad tycker du om att jag har datum som varchar det kanske är väldigt osmart men det var därför jag fick casta om till datetime
Hydr0maticMedlem sedan sep. 2001157 inlägg
np =)
datum som varchar ? ja du... jag ser inte poängen med det ? Varför valde du det ?
mheddaMedlem sedan feb. 2000385 inlägg
Det var nog bara av farten. Ska tänka på det nästa gång :-}
Kan det bli problem längre fram tror du?
MVH Hedda
Hydr0maticMedlem sedan sep. 2001157 inlägg
Nä, blir nog inga problem... Tar bara mer plats i DBn, men det handlar om så lite så det spelar ingen roll.
mheddaMedlem sedan feb. 2000385 inlägg
Tack Hydr0matic
för all hjälp den har varit mycket givande..
MedMycketVänligaHälsningarHedda