Loop met kolommen
Code (php)
Is het mogelijk om rijen om en om te wisselen met 3 en 4 kolommen?
Dus
bericht1 bericht2 bericht3
bericht4 bericht5 bericht6 bericht6
bericht7 bericht7 bericht8
Hoe krijg ik bovenstaande voor elkaar?
En is het mogelijk om de lege 4de plek van de rij met 3, op te vullen met standaardbericht?
Dus
bericht1 bericht2 bericht3 standaardbericht
bericht4 bericht5 bericht6 bericht6
bericht7 bericht7 bericht8 standaardbericht
Ik hoop dat jullie me verder kunnen helpen.
Alvast bedankt
2 manieren: colspan="2" in je HTML.
Of empty-cells in CSS.
Ik zou persoonlijk voor de eerste gaan, omdat je tabel dan overal even breed is (en dus geen gat komt).
En als je zeker te weten 4 kolommen weet: schrijf het per <tr> even statisch uit in je loop.
En soms vervang je de inhoud, anders niet.
Laat eens zien welke PHP-code je hebt gemaakt met de tips die ik je hierboven gaf.
<table width="200" border="1">
<tr>
<td> </td>
<td colspan="2"> </td>
<td colspan="2"> </td>
<td> </td>
</tr>
<tr>
<td colspan="2"> </td>
<td colspan="2"> </td>
<td colspan="2"> </td>
</tr>
<tr>
<td> </td>
<td colspan="2"> </td>
<td colspan="2"> </td>
<td> </td>
</tr>
<tr>
<td colspan="2"> </td>
<td colspan="2"> </td>
<td colspan="2"> </td>
</tr>
</table>
En dan in een loop.
De 2de <tr> is simpel,
Code (php)
Maar hoe combineer ik de 1ste <tr> en de 2de in één loop.
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
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
<?php
echo '<table><tr>';
$teller = 0;
$aantal = count($result);
foreach($result as $row)
{
// raise teller
$teller++;
// if $i is odd: 2 colspan on last thing
$colspan = 1;
if($teller % 2 == 0 AND $teller % 3 == 0)
{
$colspan = 2;
}
// echo the row, with right colspan
echo '<td colspan="' . $colspan . '">' . $row['bericht'] . '</td>';
// end the row (table-row) accordenly
if($teller % 3 == 0 OR $teller == $aantal)
{
echo '</tr><tr>';
}
}
// end the table
echo '</tr></table>';
?>
echo '<table><tr>';
$teller = 0;
$aantal = count($result);
foreach($result as $row)
{
// raise teller
$teller++;
// if $i is odd: 2 colspan on last thing
$colspan = 1;
if($teller % 2 == 0 AND $teller % 3 == 0)
{
$colspan = 2;
}
// echo the row, with right colspan
echo '<td colspan="' . $colspan . '">' . $row['bericht'] . '</td>';
// end the row (table-row) accordenly
if($teller % 3 == 0 OR $teller == $aantal)
{
echo '</tr><tr>';
}
}
// end the table
echo '</tr></table>';
?>
Mocht het 4-3-4-3-4 zijn etc, zet dan $teller dan op 1 i.p.v. 0.
Gewijzigd op 16/11/2012 21:15:29 door Eddy E
Net zo lang de database leeg is.
Je krijgt dan een bakstenen muur met op iedere baksteen een bericht
Aha, zie mijn vorige bericht (net gewijzigd).
ik ben een stuk verder hiermee.
met teller op 1 krijg ik dit,
<table>
<tr>
<td colspan="1">bericht 1</td>
<td colspan="1">bericht 2</td>
<td colspan="1">bericht 3</td>
</tr>
<tr>
<td colspan="1">bericht 4</td>
<td colspan="2">bericht 5</td>
<td colspan="1">bericht 6</td>
<td colspan="1">bericht 7</td>
</tr>
<tr>
<td colspan="1">bericht 8</td>
</tr>
<tr>
<td colspan="1">bericht 9</td>
</tr>
</table>
Zet die teller weer terug op 0.
En verander regel 13 naar:
Toevoeging op 16/11/2012 21:40:34:
Oftewel: ga zelf eens even wat spelen.
Code (php)
<table>
<tr>
<td colspan="1">bericht 1</td>
<td colspan="2">bericht 2</td>
<td colspan="1">bericht 3</td>
</tr>
<tr>
<td colspan="1">bericht 4</td>
<td colspan="1">bericht 5</td>
<td colspan="1">bericht 6</td>
<td colspan="1">bericht 7</td>
</tr>
<tr>
<td colspan="2">bericht 8</td>
</tr>
<tr>
<td colspan="1">bericht 9</td>
</tr>
</table>
Er staan maar 9 berichten in de database.
Ik ga morgen even testen met meer berichten (moet nu helaas naar m'n werk)
Ik ben in ieder geval een heel stuk verder. Bedankt
Probeer eens.
Toevoeging op 17/11/2012 08:35:59:
Nee anders.
Die -1 bij $teller weg.
Die %3 wordt %4
Waar je $columns =2 doet doe je $teller++;
Maar trapsgewijs en om en om, lukt niet met tabellen.
Wat ik ook probeer. Niet het gewenste resultaat.
Ben nu overgestapt naar div's
Ga proberen rij om rij "margin-left:"
Zodat bijv de oneven rijen verspringen naar rechts
Achtergrondplaatje van de overkoepelende div is dan de muur.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
echo '<div style="background: url(/afbeeldingen/muur.png) repeat-y; max-width: 800px; border:1px solid black; margin: 0; padding: 0;">';
$teller = 0;
$aantal = count($result);
foreach($result as $row) {
echo '<div style="float: left;">';
echo ' <div style="width: 172px; height: 56px;>' . $row['bericht'] . '</div>';
echo '</div>';
$teller++;
}
echo '<div style="clear: left;"></div>';
echo '</div>';
?>
echo '<div style="background: url(/afbeeldingen/muur.png) repeat-y; max-width: 800px; border:1px solid black; margin: 0; padding: 0;">';
$teller = 0;
$aantal = count($result);
foreach($result as $row) {
echo '<div style="float: left;">';
echo ' <div style="width: 172px; height: 56px;>' . $row['bericht'] . '</div>';
echo '</div>';
$teller++;
}
echo '<div style="clear: left;"></div>';
echo '</div>';
?>