Lege regel in While Loop als de datum veranderd [php]

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • kmichael
  • Registratie: Februari 2005
  • Laatst online: 30-09 21:51
Hoi ik wil graag een lege witte regel als de datum veranderd.
Ik krijg het wel voor elkaar om na zoveel rows een witte regel toe te voegen, helaas zijn de aantal namen per datums gevarieerd.

Is het ook mogelijk om tables in while loop te groeperen op datum zoals ik wil?
Misschien omschrijf ik het verkeerd ik zal een voorbeeld geven:

Ik heb nu dit:
code:
1
2
3
4
5
6
7
8
9
Datum   Naam    Score 1     Score 2
2017    Geert   2           1
2017    Henk    5           2
2017    Jan     1           2
2018    Henk    4           2
2018    Jan     1           2
2019    Geert   5           2
2019    Henk    2           1
2019    Jan     1           2


Nu is het de bedoeling een lege regel nadat de datum veranderd:
code:
1
2
3
4
5
6
7
8
9
10
11
Datum   Naam    Score 1     Score 2
2017    Geert   2           1
2017    Henk    5           2
2017    Jan     1           2

2018    Henk    4           2
2018    Jan     1           2

2019    Geert   5           2
2019    Henk    2           1
2019    Jan     1           2


Nog mooier zou zijn dat de eerste table labels buiten de while loop zich herhaald :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Datum   Naam    Score 1     Score 2
2017    Geert   2           1
2017    Henk    5           2
2017    Jan     1           2

Datum   Naam    Score 1     Score 2
2018    Henk    4           2
2018    Jan     1           2

Datum   Naam    Score 1     Score 2
2019    Geert   5           2
2019    Henk    2           1
2019    Jan     1           2


Mijn huidige code (omgezet in een voorbeeld):
code:
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
echo "
<table border='1' cellspacing='0'>
  <tbody>
    <td width='100px'>Datum</td>
    <td width='70px' align='center'>Naam</td>
    <td width='70px' align='center'>Score 1</td>
    <td width='70px' align='center'>Score 2</td>
    <td width='70px' align='center'>Score 3</td>
  </tbody>
</table>
";

$sql = "SELECT * FROM `".$mysql_table."` WHERE serie LIKE 'test' ORDER BY datum ASC";
$db_data = mysql_query($sql);   
if (mysql_num_rows($db_data) >= 1)
{
  while ($row = mysql_fetch_array($db_data))
{ 

echo "
<table border='1' cellspacing='0'>
  <tbody>
    <td width='100px'>{$row['datum']}</td>
    <td width='70px' align='center'>{$row['naam']}</td>
    <td width='70px' align='center'>{$row['score1']}</td>
    <td width='70px' align='center'>{$row['score2']}</td> 
    <td width='70px' align='center'>{$row['score3']}</td>
  </tbody>
</table>";

Beste antwoord (via kmichael op 07-02-2017 21:15)


  • Orion84
  • Registratie: April 2002
  • Laatst online: 19:13

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Kwestie van in je loop bijhouden wat de datum van de vorige regel was, vergelijken met die van de nieuwe regel en dan de extra regels printen.

En sorteren/groeperen kan je natuurlijk prima in je sql query doen.

The problem with common sense is that it's not all that common. | LinkedIn | Flickr

Alle reacties


Acties:
  • 0 Henk 'm!

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 17:39

Gonadan

Admin Beeld & Geluid, Harde Waren
Stop de datum in een variabele een vergelijk bij elke iteratie of hij veranderd is ten opzichte van de vorige ronde. Zo ja dan print je die lege regel, eventueel met nieuwe header.

Edit:
Ik zie dat je twee tabellen print. Je kunt ook alleen de regels genereren met de loop, dan wordt je HTML wat netter.

[ Voor 26% gewijzigd door Gonadan op 07-02-2017 20:52 ]

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 19:13

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Kwestie van in je loop bijhouden wat de datum van de vorige regel was, vergelijken met die van de nieuwe regel en dan de extra regels printen.

En sorteren/groeperen kan je natuurlijk prima in je sql query doen.

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

  • kmichael
  • Registratie: Februari 2005
  • Laatst online: 30-09 21:51
Bedankt het is gelukt, Ik had al gezocht maar nu anders:

voor WHILE loop:
code:
1
$laatstedatum = "";


IN WHILE loop:
code:
1
2
if($laatstedatum != $row['datum']) { echo "<br /> nog meer code";
   $laatstedatum = $row['datum']; {


Bedankt voor jullie snelle reactie!

[ Voor 10% gewijzigd door kmichael op 07-02-2017 21:16 ]