verdelen over meerdere kolommen
De volgende code geeft nog steeds 31 (of) 30 rijen ipv 2x 15
Door $kolom de waarde 1 of 2 te geven probeer ik naar een nieuwe regel of naar het deel te gaan.
Ergens maak ik nog een denk fout.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
$dbegin = 2013 ;
$deind = date("Y") ;
$sql = "" ;
$sql = "SELECT Dag AS Dag, " ;
while ($dbegin <= $deind) {
$sql = $sql . "SUM(CASE Jaar WHEN " . (string)$dbegin . " THEN Levering END) AS '" . (string)$dbegin . "'" ;
if ($dbegin < $deind) {
$sql = $sql . " , " ;
} else {
break ;
}
$dbegin = $dbegin + 1 ;
} ;
$sql = $sql . " FROM tbl_Levering INNER JOIN tbl_EParameter ON (Maand = tbl_EParameter.ZMaand) GROUP BY Dag ORDER BY Dag" ;
$result = mysqli_query($con,$sql) ;
$dbegin = 2013 ;
$lengte = (($deind-2013) * 95* 2 ) + 150 ;
$header = "<table border '1', width='" . (string)$lengte ."'>" ;
$header = $header . "<tr> <th width='60' scope='col'>Dag</th>" ;
$header1 = "<th width='10'></th> <th width='60' scope='col'>Dag</th> " ;
while ($dbegin <= $deind) {
$header = $header . "<th width='95' scope='col'>" . (string)$dbegin . "</th>" ;
$header1 = $header1 . "<th width='95' scope='col'>" . (string)$dbegin . "</th>" ;
if ($dbegin>$deind) {break ;
}
$dbegin = $dbegin + 1 ;
} ;
$header = $header . $header1 . "</tr>";
echo $header;
$dbrow = mysqli_fetch_all($result,MYSQLI_BOTH) ;
$kolom = 1 ;
foreach ($dbrow as $row) {
$dbegin = 2013 ;
echo "<tr>";
echo "<td><div align='center'>", $row['Dag'], "</td>";
while ($dbegin <= $deind) {
echo "<td><div align='right'>", $row[(string)$dbegin] ,"</td>";
if ($dbegin>$deind) {break;
}
$dbegin = $dbegin + 1 ;
} ;
if ($kolom == 1) {echo "<td> </td>";
$kolom = 2 ;
} else {echo "</tr>";
$kolom = 1 ;
}
} ;
echo "</table>";
mysqli_close($con);
$deind = date("Y") ;
$sql = "" ;
$sql = "SELECT Dag AS Dag, " ;
while ($dbegin <= $deind) {
$sql = $sql . "SUM(CASE Jaar WHEN " . (string)$dbegin . " THEN Levering END) AS '" . (string)$dbegin . "'" ;
if ($dbegin < $deind) {
$sql = $sql . " , " ;
} else {
break ;
}
$dbegin = $dbegin + 1 ;
} ;
$sql = $sql . " FROM tbl_Levering INNER JOIN tbl_EParameter ON (Maand = tbl_EParameter.ZMaand) GROUP BY Dag ORDER BY Dag" ;
$result = mysqli_query($con,$sql) ;
$dbegin = 2013 ;
$lengte = (($deind-2013) * 95* 2 ) + 150 ;
$header = "<table border '1', width='" . (string)$lengte ."'>" ;
$header = $header . "<tr> <th width='60' scope='col'>Dag</th>" ;
$header1 = "<th width='10'></th> <th width='60' scope='col'>Dag</th> " ;
while ($dbegin <= $deind) {
$header = $header . "<th width='95' scope='col'>" . (string)$dbegin . "</th>" ;
$header1 = $header1 . "<th width='95' scope='col'>" . (string)$dbegin . "</th>" ;
if ($dbegin>$deind) {break ;
}
$dbegin = $dbegin + 1 ;
} ;
$header = $header . $header1 . "</tr>";
echo $header;
$dbrow = mysqli_fetch_all($result,MYSQLI_BOTH) ;
$kolom = 1 ;
foreach ($dbrow as $row) {
$dbegin = 2013 ;
echo "<tr>";
echo "<td><div align='center'>", $row['Dag'], "</td>";
while ($dbegin <= $deind) {
echo "<td><div align='right'>", $row[(string)$dbegin] ,"</td>";
if ($dbegin>$deind) {break;
}
$dbegin = $dbegin + 1 ;
} ;
if ($kolom == 1) {echo "<td> </td>";
$kolom = 2 ;
} else {echo "</tr>";
$kolom = 1 ;
}
} ;
echo "</table>";
mysqli_close($con);
Welke gegevens zijn er opgeslagen en een voorbeeld met het gewenste resultaat, dat zegt veel meer dan een berg PHP code.
Dag 2013 2014 Dag 2013 2014
1 5,74 4,22
2 3,99 2,30
etc
Het moet zo worden
Dag 2013 2014 Dag 2013 2014
1 5,74 4,22 2 3,99 2,30
etc...
De record bevat de dag, waarde van 2013 en waarde van 2014. De opzet is zo dat volgend jaar automatisch 2015 is de sql komt. Het deel waar het fout gaat zit in het deel van de foreach.
Bedankt, met behulp van deze code is het gelukt
Dus zo iets
1 a 11 k
2 b 12 l
3 c 13 m
4 d 14 n
5 e 15 o
6 f 16 p
7 g
8 h
9 i
10j
Gewijzigd op 17/02/2015 19:55:02 door mar kla