verdelen over meerdere kolommen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan Rie

Jan Rie

11/12/2014 21:15:57
Quote Anchor link
Uit de database haal ik van een maand alle records op, er is één record per dag en de max 31 records wil ik over twee kolommen verdelen. Het eerste deel is dag met waarde 2013, waarde 2014. daarnaast dag 2, waarde 2013, waarde 2014
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)
PHP script in nieuw venster Selecteer het PHP script
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
$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);
 
PHP hulp

PHP hulp

26/11/2020 17:02:32
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/12/2014 21:28:44
Quote Anchor link
Waar het uiteindelijk om gaat is het resultaat wat je uit de query, dus wat voor ons interessant is:
Welke gegevens zijn er opgeslagen en een voorbeeld met het gewenste resultaat, dat zegt veel meer dan een berg PHP code.
 
Jan Rie

Jan Rie

11/12/2014 21:43:43
Quote Anchor link
De tabel komt er nu zo uit:
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.
 
- SanThe -

- SanThe -

11/12/2014 22:23:59
 
Jan Rie

Jan Rie

12/12/2014 20:51:30
Quote Anchor link
Bedankt, met behulp van deze code is het gelukt
 
Mar kla

mar kla

17/02/2015 19:54:17
Quote Anchor link
Is het ook mogelijk om op zo'n manier twee kolomen te maken waar de eerste kolom 1 t/m 50 en de 2e kolom 51 t/m 100 toont?

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.