---
title: "loop med med summering"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/80899-loop-med-med-summering"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "mhedda"
published: "2003-06-30T10:27:29.000Z"
updated: "2003-06-30T12:23:22.000Z"
replies: 9
views: 308
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/80899-loop-med-med-summering"
---

# loop med med summering

## #1 — mhedda, 2003-06-30T10:27Z

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:

```php
      <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

Permalänk: https://www.webforum.nu/p/80899

## #2 — Hydr0matic, 2003-06-30T11:02Z

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:

```php
      <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>
```

Permalänk: https://www.webforum.nu/p/1098384

## #3 — mhedda, 2003-06-30T11:19Z

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å.

```php
	$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>
```

Permalänk: https://www.webforum.nu/p/1098401

## #4 — Hydr0matic, 2003-06-30T11:23Z

oki =)

finns CONCAT() ? isf, testa

SELECT CONCAT(Year(cast(datum as datetime)), " ", Month(cast(datum as datetime))) AS datumet

Permalänk: https://www.webforum.nu/p/1098403

## #5 — Hydr0matic, 2003-06-30T11:26Z

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.... ?

Permalänk: https://www.webforum.nu/p/1098405

## #6 — mhedda, 2003-06-30T11:49Z

CONCAT()  fanns tyvärr inte, men jag löste det så här 

```php
					$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

Permalänk: https://www.webforum.nu/p/1098416

## #7 — Hydr0matic, 2003-06-30T12:13Z

np =)

datum som varchar ? ja du... jag ser inte poängen med det ? Varför valde du det ?

Permalänk: https://www.webforum.nu/p/1098434

## #8 — mhedda, 2003-06-30T12:17Z

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

Permalänk: https://www.webforum.nu/p/1098436

## #9 — Hydr0matic, 2003-06-30T12:19Z

Nä, blir nog inga problem... Tar bara mer plats i DBn, men det handlar om så lite så det spelar ingen roll.

Permalänk: https://www.webforum.nu/p/1098439

## #10 — mhedda, 2003-06-30T12:23Z

Tack Hydr0matic
för all hjälp den har varit mycket givande..

MedMycketVänligaHälsningarHedda

Permalänk: https://www.webforum.nu/p/1098442

---

Tråden på webben: https://www.webforum.nu/amne/php/80899-loop-med-med-summering
