tabel in horizontale richting
alleen wil ik de tabel in de horizontale richting weergeven en heb geen idee hoe dat moet.
even een voorbeeldje.
datum | 03-03-2013 | 07-03-2013
teamwork | 5 | 8
controle | 7 | 6
enz.
dus de tabel koppen (kolomnamen uit database) onder elkaar
en de gegevens uit de tabel naast elkaar.
Je weet hoe een tabel in elkaar steekt? Kijk vervolgens eens logisch naar welke loops je waar neer moet plaatsen.
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 border=\"2\" align=\"center\" width=\"100%\">";
echo "<tr><th bgcolor=\"#D8D8D8\">Show</th>";
echo "<th bgcolor=\"#D8D8D8\">Datum</th>";
echo "<th bgcolor=\"#D8D8D8\">Keurmeester</th>";
echo "<th bgcolor=\"#D8D8D8\">Klasse</th>";
echo "<th bgcolor=\"#D8D8D8\">Kleur</th>";
echo "<th bgcolor=\"#D8D8D8\">Hond</th>";
echo "<th bgcolor=\"#D8D8D8\">Eigenaar</th>";
echo "<th bgcolor=\"#D8D8D8\">Uitslag</th></tr>";
while( $row = mysql_fetch_array( $result )) {
echo "<tr><td>";
echo $row['Shw'];
echo "</td><td>";
echo $row['Datum'];
echo "</td><td>";
echo $row['Keurmeester'];
echo "</td><td>";
echo $row['Klasse'];
echo "</td><td>";
echo $row['Kleur'];
echo "</td><td>";
echo $row['Hond'];
echo "</td><td>";
echo $row['Eigenaar'];
echo "</td><td>";
echo $row['Uitslag'];
echo "</td></tr>";
}
echo "</table>"; ?>
echo "<table border=\"2\" align=\"center\" width=\"100%\">";
echo "<tr><th bgcolor=\"#D8D8D8\">Show</th>";
echo "<th bgcolor=\"#D8D8D8\">Datum</th>";
echo "<th bgcolor=\"#D8D8D8\">Keurmeester</th>";
echo "<th bgcolor=\"#D8D8D8\">Klasse</th>";
echo "<th bgcolor=\"#D8D8D8\">Kleur</th>";
echo "<th bgcolor=\"#D8D8D8\">Hond</th>";
echo "<th bgcolor=\"#D8D8D8\">Eigenaar</th>";
echo "<th bgcolor=\"#D8D8D8\">Uitslag</th></tr>";
while( $row = mysql_fetch_array( $result )) {
echo "<tr><td>";
echo $row['Shw'];
echo "</td><td>";
echo $row['Datum'];
echo "</td><td>";
echo $row['Keurmeester'];
echo "</td><td>";
echo $row['Klasse'];
echo "</td><td>";
echo $row['Kleur'];
echo "</td><td>";
echo $row['Hond'];
echo "</td><td>";
echo $row['Eigenaar'];
echo "</td><td>";
echo $row['Uitslag'];
echo "</td></tr>";
}
echo "</table>"; ?>
dit is dan een tabel uit een andere pagina die ik heb gemaakt, maar de opzet is ongeveer hetzelfde, gegevens uit de database in de tabel laten zien.
Veel netter, en scheelt escaping...
het lijkt me overzichtelijker als je elke regel appart zet dan alles achter elkaar, of kan ik het ook zo doen:
Je hoeft niet alles direct te echo'en. Je kan het ook eerst aan elkaar plakken in strings en dan pas echo'en. heb je veel meer controle over hoe het uiteindelijk eruit komt te zien.
Pascal Wetzels op 06/03/2013 11:18:02:
of kan ik het ook zo doen:
Dat kan, maar dan moet je er komma's tussen zetten:
Zelf geef ik meer de voorkeur aan zoiets:
maar dat is net wat je gewend bent (en wat in een bepaalde situatie handiger/overzichtelijker is).
Gewijzigd op 06/03/2013 11:24:59 door Willem vp
dus ik maak eerst een string per regel en die geef ik dan weer:
bedoel je zoiets?
blijft alleen nog over dat ik steeds een cel erbij wil als ik gegevens toevoeg in de database
Nee, nu heb je niet de juiste gedachtegang te pakken. Schrijf de tabel eens uit op papier en bedenk hoe je nu moet werken. Normaal werk je in rijen, nu werk je in kolommen.
Code (php)
1
2
3
2
3
id | datum | teamwork | controle | enz...
1 | 3-3-2013| 5 | 7 |
2 | 7-3-2013| 8 | 6 |
1 | 3-3-2013| 5 | 7 |
2 | 7-3-2013| 8 | 6 |
deze wil ik dus zo weergeven:
zodat het verloop van 1 onderwerp (bijv. teamwork) op 1 regel te lezen is en niet zoals de standaard van boven naar beneden.
Kijk dan wat er elke keer verandert en hoe je dat in een simpele foreach loop kunt zetten. Bij elk extra record verandert er namelijk hetzelfde.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
foreach (veldnaam)
{
<tr>
<th> veldnaam </th>
foreach (id)
{
<td> data[id][veldnaam] </td>
}
</tr>
}
{
<tr>
<th> veldnaam </th>
foreach (id)
{
<td> data[id][veldnaam] </td>
}
</tr>
}
Gewijzigd op 06/03/2013 12:02:44 door Willem vp
Uhm, nee Willen, dat is niet wat ik bedoel. Zo moet je namelijk eerst alle gegevens uit de database halen, in een array opslaan en vanuit die array de tabel opbouwen. Kan, maar is niet waar ik op doel.
Gewijzigd op 06/03/2013 13:12:08 door Willem vp
de meeste velden zijn van het type integer
Hoe je tabel eruitziet is in mijn ogen niet zo van belang, de procedure is hetzelfde, alleen met wat meer of minder velden. Maar goed, hoe ver ben je inmiddels?
Code (php)
1
2
3
4
5
2
3
4
5
<table>
<tr><th>veld1</th></tr>
<tr><th>veld2</th></tr>
<tr><th>veld79</th></tr>
</table>
<tr><th>veld1</th></tr>
<tr><th>veld2</th></tr>
<tr><th>veld79</th></tr>
</table>
en door tussen de </th> en </tr> de <td></td>kan ik de cel met een inhoud weergeven, maar ergens zit ik dan fout, want als ik gegevens uit de database pluk laat ie niks zien.
de veldnamen moet ik toch appart echo-en en niet via een foreach loop, omdat afhankelijk van een waarde uit een andere tabel bepaalde velden wel of niet moeten worden weer gegeven, maar dat kan ik dan met if en elseif doen
maar om terug te komen hoe ver ik al ben.
nog aan de start, ik krijg de eerste zet maar niet gevonden
En terug naar mijn tweede tip, schrijf uit hoe je lege tabel er in html moet uitzien (dus echt de html uitschrijven), dan hoe de tabel eruitziet met 1 record, dan met 2 records etc.
Wat zie je dan elke keer erbij komen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<table>
<tr><th>veld1</th><td>cel1</td></tr>
<tr><th>veld2</th><td>cel1</td></tr>
<tr><th>veld79</th><td>cel1</td></tr>
</table>
<table>
<tr><th>veld1</th><td>cel1</td><td>cel2</td></tr>
<tr><th>veld2</th><td>cel1</td><td>cel2</td></tr>
<tr><th>veld79</th><td>cel1</td><td>cel2</td></tr>
</table>
<tr><th>veld1</th><td>cel1</td></tr>
<tr><th>veld2</th><td>cel1</td></tr>
<tr><th>veld79</th><td>cel1</td></tr>
</table>
<table>
<tr><th>veld1</th><td>cel1</td><td>cel2</td></tr>
<tr><th>veld2</th><td>cel1</td><td>cel2</td></tr>
<tr><th>veld79</th><td>cel1</td><td>cel2</td></tr>
</table>
de <td></td> tags komen er steeds bij met de inhoud
of is diet niet wat je bedoeld?
Maar anders dan dat, ja. Dus nu weet je dat bij elke stap in je foreach loop er op elke regel iets bij moet komen. Namelijk: '<td>waarde</td>'.
Je weet ook dat je niet direct kunt echo'en, want dan komt het niet op deze manier er uit. Wat je dus moet doen is per rij van je tabel, de totale string opslaan in een variabele, en pas nadat je de hele foreach loop hebt doorlopen moet je die echo'en.
En als je het slim doet, bouw je het op als een array, met elke rij een element in die array. De key van elke rij is de waarde die erin moet.
nu heb ik dat met onderstaande code al gedeeltelijk
Code (php)
1
2
3
4
5
6
2
3
4
5
6
echo '<table border="1">';
echo '<tr><th>datum</th>';
while($row = mysql_fetch_assoc($result)){
echo '<td>'.$row['Datum'].'</td>';}
echo'</tr>';
echo '</table>';
echo '<tr><th>datum</th>';
while($row = mysql_fetch_assoc($result)){
echo '<td>'.$row['Datum'].'</td>';}
echo'</tr>';
echo '</table>';
om het nu netjes te maken wil ik dat stukje in de array zetten, maar daar heb ik iet niet goed gedaan, want als ik die array echo krijg ik geen beeld.
Code (php)
1
$datum_array = array(echo'<tr><th>datum</th>'while($row = mysql_fetch_assoc($result)){'<td>'.$row['Datum'].'</td>'}'</tr>');
wat zie ik over het hoofd?