Loop met kolommen
Een lijst met berichten verdeel ik over kolommen,
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
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
Wil je alleen het 6e bericht (ongeacht de inhoud) wel 2 kolommen geven?
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.
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.
Als HTML zou het er zo uit moeten zien,
<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,
Maar hoe combineer ik de 1ste <tr> en de 2de in één loop.
<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.
Probeer dit eens:
Mocht het 4-3-4-3-4 zijn etc, zet dan $teller dan op 1 i.p.v. 0.
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
1 rij met 3 berichten en 1 rij met 4 berichten en dat om en om.
Net zo lang de database leeg is.
Je krijgt dan een bakstenen muur met op iedere baksteen een bericht
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).
Bedankt Eddy,
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>
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>
Mmmm dat zit hem waarschijnlijk in de % 3.
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.
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.
Met deze kom ik het dichste bij,
<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
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
Verhoogd $teller++ as $column == 2
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++;
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++;
Bedankt voor de moeite Eddy
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.
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>';
?>




