webForumDet fria alternativet

Tredimensionell array?

1 svar · 205 visningar · startad av nkrantz

nkrantzMedlem sedan apr. 2002755 inlägg
#1

Hej!

Har lite strul med en kod som jag skall modifiera.
Koden:

1 $resultSet = mysql_query("SELECT project.id,project.name FROM hours_project AS project, hours_time AS time WHERE time.project_id = project.id AND project.active = 1 AND time.active = 1 AND time.crew_id = $crewId AND time.hours > 0 AND time.date > '$pYear-$pMonth-15' AND time.date < '$pYear-$pNextMonth-15'");
2 
3 	$nameValueArray = fetchNameValue($resultSet);
4
5 	?>
6 	<table cellspacing=1 cellpadding=2 border=0 bordercolor="black">
7	<tr>
8	<?
9	$totalHours = 0;
10	while ( list($name,$value)=each($nameValueArray) )
11	{
12		?>
13		<td colspan=9 class="blackBold" bgcolor="white"><br><?=$value?></td></tr><tr>
14		<td bgcolor="#000000" class="whiteBold"><?=lang("Week")?></td>
15		<?
16		while(list($nameWeek,$valueWeek)=each($aWeekdays))
17		{
18			?>
19			<td bgcolor='#000000' class='whiteBold' align='center'><?=$valueWeek?></td>
20			<?
21		}
22		reset($aWeekdays);
23		?>
24		<td bgcolor="#000000" class="whiteBold" align="center"><?=lang("WeeklyTotal")?></td>
25		</tr><tr>
26		<?
27		
28		$resultSet = mysql_query("SELECT WEEK(date,1) AS week,WEEKDAY(date) AS day,hours,thing_id FROM hours_time AS time WHERE time.project_id = $name AND time.active = 1 AND time.crew_id = $crewId AND time.hours > 0 AND time.date > '$pYear-$pMonth-15' AND time.date < '$pYear-$pNextMonth-15'");
29		
30		$theHours = null;
31		
32		for ($i = 0; $i < mysql_num_rows($resultSet); $i++)
33		{
34			$data = mysql_fetch_object($resultSet);
35			$theHours[$data->week][$data->day] = $data->hours;
36		}
37
38		$projectHours = 0;
39		
40		while(list($name,$value)=each($theHours))
41		{
42			$weekHours = 0;
43			?>
44			<td bgcolor="silver" class="blackBold"><?=$name?></td>
45			<?
46
47			for ($i = 0; $i < 7; $i++)
48			{
49				?>
50				<td bgcolor="silver" class='default' align='center'><?=$value[$i]?></td>
51				<?
52				$weekHours += $value[$i];
53			}
54			?>
55			<td bgcolor="silver" class="default" align="right"><?=$weekHours?></td>
56			</tr><tr>
57			<?
58			$projectHours += $weekHours;
59		}
60		?>
61		<tr>
62			<td colspan=8 class="blackBold" bgcolor="silver"><?=lang("ProjectTotal")?></td>
63			<td class="blackBold" bgcolor="silver" align="right"><?=$projectHours?></td>
64		</tr>
65		<?
66		$totalHours += $projectHours;
67	}

På rad 50 vill jag skriva ut en annan sak som jag också hämtar från queryn på rad 28, nämligen 'thing_id'. Problemet är att för varje inlagd timme (det som visas med $value[$i]) så finns det en thing_id kopplad, så egentligen vill jag bara ha en 2:d array, fast med två olika värden på den andra dimensionen... hm.. hoppas ni förstår...

//Nippe

nkrantzMedlem sedan apr. 2002755 inlägg
#2

löste det själv, litet urdrag ur koden:

for ($i = 0; $i < mysql_num_rows($resultSet); $i++)
		{
			$data = mysql_fetch_object($resultSet);
			$theHours[$data->week][$data->day] = $data->hours;
			$theThing[$data->week][$data->day] = $data->thing_id;
		}

		$projectHours = 0;
		
		while(list($name,$value)=each($theHours))
		{
			list($name2,$value2)=each($theThing);
			$weekHours = 0;
			?>
			<td bgcolor="silver" class="blackBold"><?=$name?></td>
			<?

			for ($i = 0; $i < 7; $i++)
			{
				?>
				<td bgcolor="silver" class='default' align='center'><?=$value[$i]?>><?=$value2[$i]?><</td>

//Nippe

Genererad på 389 ms · cache AV · v20260730165559-full.f96bc7eb