Hoi,

Stel ik heb een tabel met 5 kolommen.

Elke keer de inhoud wijzigd van de cel in kolom 1 moet ik een extra nieuwe lijn hebben.
Kan dit?

Hier een voorbeeld met 2 kolommen

1000|jfdkjfs
1000|fdsetre

2000|gfgreg

3000|gryt uyuy
3000|iopoipu
3000|pubngk


Het moet met zuiver html en inline css gebeuren.
Het resultaat komt uit een rapport welke uitsluitend met tekst werkt en javascript is niet altijd geactiveerd.

Jan.
table tr td:first-child
{
border-right: 1px solid #000;
}


Wat je bedoelt met de foutieve zin: "Elke keer de inhoud wijzigd van kolom 1 moet ik een extra nieue lijn hebben." is mij geheel onduidelijk.
Sla de laatst getoonde waarde op in een controlevariabele. Toon daarna een extra regel als de huidige waarde afwijkt van de controlevariabele en stel de controlevariabele in op de nieuwe waarde.

<?php
// Tabel opbouwen met foreach of while
while (...) {
echo '<tr>'; // Plus andere HTML per rij

if ($huidige_waarde_eerste_kolom != $controlevariabele) {
echo '-- Wat extra HTML voor een lege regel --';
$controlevariabele = $huidige_waarde_eerste_kolom;
}

echo '</tr>';
}
?>
Defineer dan wel voor je while() even $controlevariable, anders krijg je eenmalig een notice dat die variabele niet bestaat.
Eddy E op 20/08/2013 10:09:19

Defineer dan wel voor je while() even $controlevariable, anders krijg je eenmalig een notice dat die variabele niet bestaat.
Inderdaad, of doe dat in de while() als je niet zeker weet wat de eerste waarde zal worden.

Zal sowieso niet leeg zijn ;)

Ik gebruik het zelf ook op www.zunflappie.nl om die tussenheaders (met die rondjes) te maken.
In jouw geval (door Ward snap ik nu wat je bedoeld):

<?php
$vorige = false;

while(...)
{
// hier al je dingen om $kolom1 etc te maken
$kolom1 = intval($row['kolom_dinges']);

echo ' <tr>
<td>'.$kolom1.'</td>
<td>'.$kolom2.'</td>
<td>'.$kolom3.'</td>
<td>'.$kolom4.'</td>
<td>'.$kolom5.'</td>
</tr>';

if($vorige != $kolom1)
{
echo ' <tr>
<td colspan="5"></td>
</tr>
}
} // einde while-loop
?>

Let op dat dit voorbeeldcode is en niet zomaar erin geplakt kan worden.

Eddy E op 20/08/2013 09:32:55

table tr td:first-child
{
border-right: 1px solid #000;
}


Wat je bedoelt met de foutieve zin: "Elke keer de inhoud wijzigd van kolom 1 moet ik een extra nieue lijn hebben." is mij geheel onduidelijk.


Wel elke keer als ik een andere waarde heb in de eerste cel van de eerste kolom, de andere kolommen doen er niet toe, wil ik een extra lege lijn, een <br> als het ware.
in jouw code is de eerste lijn een andere opmaak.

Ward van der Put op 20/08/2013 09:45:15

Sla de laatst getoonde waarde op in een controlevariabele. Toon daarna een extra regel als de huidige waarde afwijkt van de controlevariabele en stel de controlevariabele in op de nieuwe waarde.

<?php
// Tabel opbouwen met foreach of while
while (...) {
echo '<tr>'; // Plus andere HTML per rij

if ($huidige_waarde_eerste_kolom != $controlevariabele) {
echo '-- Wat extra HTML voor een lege regel --';
$controlevariabele = $huidige_waarde_eerste_kolom;
}

echo '</tr>';
}
?>


Het resultaat komt uit een rapport welke uitsluitend met tekst werkt


Dus geen php sorry



Toch al allemaal bedankt om mee te denken.

Reageren