tabel in horizontale richting

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Pascal Wetzels

Pascal Wetzels

06/03/2013 10:54:54
Quote Anchor link
Ik wil gegevens uit een databse gaan weergeven in een tabel, op zich niet zo'n probleem.
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.
 
PHP hulp

PHP hulp

16/11/2024 06:55:45
 
- Ariën  -
Beheerder

- Ariën -

06/03/2013 10:57:09
Quote Anchor link
Je weet hoe een tabel in elkaar steekt? Kijk vervolgens eens logisch naar welke loops je waar neer moet plaatsen.
 
Pascal Wetzels

Pascal Wetzels

06/03/2013 11:02:29
Quote Anchor link
normaal gesproken maak ik een tabel op de volgende manier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>"; ?>

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.
 
- Ariën  -
Beheerder

- Ariën -

06/03/2013 11:09:40
Quote Anchor link
Waarom voor elke regel een echo, en waarom geen single-quotes voor je echo gebruiken?
Veel netter, en scheelt escaping...
 
Pascal Wetzels

Pascal Wetzels

06/03/2013 11:18:02
Quote Anchor link
dit was al een iets oudere tabel, toen was ik nog niet zover bekend met de single-quotes.
het lijkt me overzichtelijker als je elke regel appart zet dan alles achter elkaar, of kan ik het ook zo doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
echo '<tr><td>'
      $row ['Shw']
     '</td></tr>';
 
Erwin H

Erwin H

06/03/2013 11:19:58
Quote Anchor link
Tip (om in de richting van de oplossing te komen):
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.
 
Willem vp

Willem vp

06/03/2013 11:23:23
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
echo '<tr><td>',
      $row ['Shw'],
     '</td></tr>';

Zelf geef ik meer de voorkeur aan zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo "<tr><td>{$row ['Shw']}</td></tr>";

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
 
Pascal Wetzels

Pascal Wetzels

06/03/2013 11:24:57
Quote Anchor link
@erwin

dus ik maak eerst een string per regel en die geef ik dan weer:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$datum = '<tr><th>datum</th><td>03-03-2013</td><td>07-03-2013</td></tr>';
echo $datum


bedoel je zoiets?
blijft alleen nog over dat ik steeds een cel erbij wil als ik gegevens toevoeg in de database
 
Erwin H

Erwin H

06/03/2013 11:28:59
Quote Anchor link
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.
 
Pascal Wetzels

Pascal Wetzels

06/03/2013 11:42:51
Quote Anchor link
Ik heb de tabel als volgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
id | datum   | teamwork | controle | enz...
 1 | 3-3-2013|   5      |     7    |
 2 | 7-3-2013|   8      |     6    |

deze wil ik dus zo weergeven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
datum    |3-3-2013 |7-3-2013
teamwork |   5     |   8
controle |   7     |   6
enz...

zodat het verloop van 1 onderwerp (bijv. teamwork) op 1 regel te lezen is en niet zoals de standaard van boven naar beneden.
 
Erwin H

Erwin H

06/03/2013 11:59:06
Quote Anchor link
Schrijf het uit in html. Eerst een lege tabel, dan een tabel met 1 record, dan met 2, etc.
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.
 
Willem vp

Willem vp

06/03/2013 12:01:45
Quote Anchor link
Even in pseudocode:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
foreach (veldnaam)
{
   <tr>
   <th> veldnaam </th>
   foreach (id)
   {
      <td> data[id][veldnaam] </td>
   }
   </tr>
}
Gewijzigd op 06/03/2013 12:02:44 door Willem vp
 
Erwin H

Erwin H

06/03/2013 12:09:24
Quote Anchor link
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.
 
Willem vp

Willem vp

06/03/2013 13:11:49
Quote Anchor link
Je zou in een for-loopje een 'select veldnaam from database order by id' kunnen doen en zo rij voor rij de tabel opbouwen. Als de database niet al te groot is, zou ik de gegevens echter gewoon eerst inlezen in een array.
Gewijzigd op 06/03/2013 13:12:08 door Willem vp
 
Pascal Wetzels

Pascal Wetzels

06/03/2013 13:48:48
Quote Anchor link
de tabel waar alles uitgehaald wordt bestaat uit 79 veldnamen incl de id, daarnaast zitten nog 3 tabellen in de database in verband met inloggen en diverse namen, maar die zijn niet zo van belang voor deze vraag.
de meeste velden zijn van het type integer
 
Erwin H

Erwin H

06/03/2013 14:01:25
Quote Anchor link
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?
 
Pascal Wetzels

Pascal Wetzels

06/03/2013 14:12:04
Quote Anchor link
ik kom er niet echt uit, om de veldnamen onder elkaar te krijgen kom ik uit op
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<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
 
Erwin H

Erwin H

06/03/2013 14:18:31
Quote Anchor link
Ga terug naar mijn eerste tip: je hoeft het niet meteen te echo'en.

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?
 
Pascal Wetzels

Pascal Wetzels

06/03/2013 14:25:15
Quote Anchor link
dan krijg ik de tabel dus als volgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>

de <td></td> tags komen er steeds bij met de inhoud

of is diet niet wat je bedoeld?
 
Erwin H

Erwin H

06/03/2013 14:30:04
Quote Anchor link
Behalve dat die th's, ook td's zijn, want die gebruik je alleen in een header row, niet in een kolom.

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.
 
Pascal Wetzels

Pascal Wetzels

06/03/2013 15:41:41
Quote Anchor link
ik heb wat zitten proberen om de gegevens zichtbaar te krijgen zoals ik wil.
nu heb ik dat met onderstaande code al gedeeltelijk
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';

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)
PHP script in nieuw venster Selecteer het PHP script
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?
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.