Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[PHP/MySQL] Tabel op webpagina vullen met gegevens

Anoniem
None
16 antwoorden
  • Ik heb een adressenboek opgeslagen in een MySQL database.

    Nu wil ik deze adressen met PHP uit de database halen en op een webpagina presenteren in een tabel.
    Het uit de database halen lukt prima, alleen het presenteren lukt niet.

    Ik wil met PHP een tabel maken van bijv. 5 kolommen. In elke kolom moet dan 1 compleet adres geplaatst worden (naam, adres, postcode en plaats). Na 5 adressen moet er dus een rij van 5 kolommen bij gemaakt worden, net zolang tot alle adressen uit de database verwerkt zijn.

    Weet iemand hoe je zoiets op kunt lossen?
    Alvast bedankt.
  • Post eerst eens de code die je gebruikt voor het ophalen van de data uit de database. Dat is een stuk makkelijker helpen. :wink:
  • OK, de logingegevens voor de database heb ik eruit gehaald:
    [code:1:28124e78d0]<?php
    $DBHost = "localhost";
    $DBLogin = "******";
    $DBPassword = "******";
    $DBDatabase = "adressenboek";

    mysql_connect("$DBHost", "$DBLogin", "$DBPassword")
    or die (mysql_error());
    mysql_select_db("$DBDatabase")
    or die ("…Fout bij het selecteren van de database…");

    $sql = "SELECT * FROM adressen ORDER BY nummer";
    $resultaat = mysql_query($sql);
    $num_rows = mysql_num_rows($resultaat);

    echo"Er staan nu $num_rows adressen in het adressenboek :<br><br><hr align=left width=200>";

    while($record = mysql_fetch_object($resultaat))
    {
    echo"
    <table border=0 cellspacing=0>
    <tr>
    <td align=left>$record->voornaam $record->achternaam</td>
    </tr>
    <tr>
    <td align=left>$record->adres</td>
    </tr>
    <tr>
    <td align=left>$record->postcode $record->plaats</td>
    </tr>
    </table>
    <hr align=left width=200>";
    }
    mysql_free_result($resultaat);
    ?>[/code:1:28124e78d0]Bovenstaande code haalt alle adressen uit de database en laat die onder elkaar zien, gescheiden door een horizontale lijn. Dat gaat allemaal prima, dus uitlezen database is geen probleem.
    Wat ik nu wil is om het in een tabel te presenteren met elke keer 5 cellen op een rijtje en dan een nieuwe rij beginnen. Is mijn bedoeling een beetje helder?
  • Kweste van de "table" buiten de while-lus aanmaken en vervolgens een "tr" per record aanmaken…
  • [quote:ad4d084b37="Bill Gates"]Kweste van de "table" buiten de while-lus aanmaken en vervolgens een "tr" per record aanmaken…[/quote:ad4d084b37]Het idee op zich snap ik. Alleen moet ik dan niet een "tr" maken met 5x een "td" en daarna opnieuw een "tr" enz ? Hoe je zoiets in een script moet zetten weet ik niet, dat is dus mijn vraag.
  • [quote:354ca45e7a="whmeeske"]Het idee op zich snap ik. Alleen moet ik dan niet een "tr" maken met 5x een "td" en daarna opnieuw een "tr" enz ? Hoe je zoiets in een script moet zetten weet ik niet, dat is dus mijn vraag.[/quote:354ca45e7a]
    Zo ingewikkeld is het niet. Een voorbeeldje (ongetest) om het idee duidelijk te maken.
    [code:1:354ca45e7a]
    <?php
    if ($num_rows > 0)
    {
    echo '
    <table border="0" cellspacing="0">
    <tr>
    <th>Voornaam</th>
    <th>Achternaam</th>
    <th>Adres</th>
    <th>Postcode</th>
    <th>Plaats</th>
    </tr>';
    while($record = mysql_fetch_object($resultaat))
    {
    echo '<tr>';
    echo '<td>', $record->voornaam, '</td>';
    echo '<td>', $record->achternaam, '</td>';
    echo '<td>', $record->adres, '</td>';
    echo '<td>', $record->postcode, '</td>';
    echo '<td>', $record->plaats, '</td>';
    echo '</tr>';
    }
    echo '</table>';
    }
    ?>
    [/code:1:354ca45e7a]
  • Nee dat is niet echt wat ik bedoel, dan krijg ik per rij de adresgegevens.
    Ik wil graag per cel een set adresgegevens en dat 5 op een rij.
    Zoiets heb ik als tabelindeling in m'n hoofd:
    [code:1:2cbbb2a1fe]——————————————————————–
    | Voornaam Achternaam | Voornaam Achternaam | Voornaam Achternaam |
    | Adres | Adres | Adres |
    | Postcode Plaats | Postcode Plaats | Postcode Plaats |
    ——————————————————————–
    | Voornaam Achternaam | Voornaam Achternaam | Voornaam Achternaam |
    | Adres | Adres | Adres |
    | Postcode Plaats | Postcode Plaats | Postcode Plaats |
    ——————————————————————–
    | Voornaam Achternaam | Voornaam Achternaam | Voornaam Achternaam |
    | Adres | Adres | Adres |
    | Postcode Plaats | Postcode Plaats | Postcode Plaats |
    ——————————————————————–[/code:1:2cbbb2a1fe]
  • Dat is geen tabel, maar een lijst.

    [code:1:29f411765c]
    if ($num_rows > 0) {
    echo '<ul>';
    $i = 1;
    while($record = mysql_fetch_object($resultaat)) {
    $sStyle = ($i % 3 == 0) ? '' : 'style="float: left;"';
    echo '<li '.$sStyle.'>'.$record->voornaam.' '.$record->achternaam.'<br>';
    echo $record->adres.'<br>';
    echo $record->postcode.' '.$record->plaats.'</li>';
    $i++;
    }
    echo '</ul>';
    }
    ?>
    [/code:1:29f411765c]

    De lijst moet je wel verder opmaken want zo ziet het er niet uit ;)
  • [quote:c77e90f7c3="Stijn"]Dat is geen tabel, maar een lijst.[/quote:c77e90f7c3]Ik ben even bezig aan de hand van de tip van Annie wat verder te proberen. Nog even en dan ben ik waar ik wezen wil. Het resultaat zal ik nog wel ff posten. Het werkt wel degelijk op basis van een tabel.
    [quote:c77e90f7c3="Stijn"][code:1:c77e90f7c3]
    $sStyle = ($i % 3 == 0) ? '' : 'style="float: left;"';
    [/code:1:c77e90f7c3][/quote:c77e90f7c3]Kun je deze regel even uitleggen?
  • Ah, ik heb je helemaal verkeerd begrepen. Maar het is me nu duidelijk wat je wil bereiken :D

    [quote:f875a52d94="whmeeske"]
    [code:1:f875a52d94]
    $sStyle = ($i % 3 == 0) ? '' : 'style="float: left;"';
    [/code:1:f875a52d94]
    Kun je deze regel even uitleggen?[/quote:f875a52d94]

    % is de modulus operator. De modulus geeft de restwaarde van een deling.
    Dus: als $i een waarde heeft die deelbaar is door drie zonder een restwaarde op te leveren (3, 6, 9, enz), maak dan de $sStyle variabele leeg. In alle andere gevallen: voeg een [i:f875a52d94]float:left[/i:f875a52d94] toe aan het element.

    Gebruikmakend van dezelfde techniek, maar een iets ander voorbeeld:

    [code:1:f875a52d94]
    <?php
    if ($num_rows > 0)
    {
    $i = 1;
    while($record = mysql_fetch_object($resultaat))
    {
    echo '<div style="float: left; margin: 5px; border: 1px solid #000;">';
    echo $record->voornaam, ' ', $record->achternaam, '<br />';
    echo $record->adres, '<br />';
    echo $record->postcode, ' ', $record->plaats, '<br />';
    echo '</div>';
    if (i++ % 5 == 0) echo '<br style="clear: both;" />';
    }
    }
    ?>
    [/code:1:f875a52d94]
  • Met onderstaande stukje script (met dank aan Annie voor de voorzet) krijg ik m'n adresgegevens met de opmaak die ik zoek:
    [code:1:2d67449f2c]if ($num_rows > 0)
    {
    echo '
    <table border="1" cellspacing="0">
    <tr>';
    while($record = mysql_fetch_object($resultaat))
    {
    if ($i<4)
    {
    echo '<td align="left" width="220">';
    echo $record->voornaam, ' ', $record->achternaam, '<br>';
    echo $record->adres, '<br>';
    echo $record->postcode, ' ', $record->plaats, '</td>';
    $i++;
    }
    else
    {
    echo '</tr>';
    echo '<tr>';
    echo '<td align="left" width="220">';
    echo $record->voornaam, ' ', $record->achternaam, '<br>';
    echo $record->adres, '<br>';
    echo $record->postcode, ' ', $record->plaats, '</td>';
    $i = 1;
    }
    }
    }[/code:1:2d67449f2c]Ik kan voorlopig weer even vooruit :)

    Oh ja, heb nog wel een vraagje:
    Met ' ' zet ik een spatie in een string. Hoe kan ik 2 spaties achter elkaar plaatsen?
  • [quote:e40ce2c7ca="Annie"][code:1:e40ce2c7ca]
    <?php
    if ($num_rows > 0)
    {
    $i = 1;
    while($record = mysql_fetch_object($resultaat))
    {
    echo '<div style="float: left; margin: 5px; border: 1px solid #000;">';
    echo $record->voornaam, ' ', $record->achternaam, '<br />';
    echo $record->adres, '<br />';
    echo $record->postcode, ' ', $record->plaats, '<br />';
    echo '</div>';
    if (i++ % 5 == 0) echo '<br style="clear: both;" />';
    }
    }
    ?>
    [/code:1:e40ce2c7ca][/quote:e40ce2c7ca]Dit werkt bij mij niet, krijg een hele lege pagina.[quote:e40ce2c7ca="Annie"][code:1:e40ce2c7ca]<br />[/code:1:e40ce2c7ca][/quote:e40ce2c7ca]Deze notatie ken ik niet. Wat is het verschil met <br>?
  • [quote:4d0356d7a5="whmeeske"][quote:4d0356d7a5="Annie"][code:1:4d0356d7a5]<br />[/code:1:4d0356d7a5][/quote:4d0356d7a5]Deze notatie ken ik niet. Wat is het verschil met <br>?[/quote:4d0356d7a5] dit is xhtml in xhtml moeten namelijk alle tags afgesloten worden (zelfde geld voor <hr /> <img /> )
  • [quote:34a09823b8="whmeeske"][quote:34a09823b8="Annie"]…[/quote:34a09823b8]Dit werkt bij mij niet, krijg een hele lege pagina.[/quote:34a09823b8]
    Hmm, ja, de voorbeeldjes zijn ook ongetest. Dus ik geef vrijwel nooit een garantie dat het ook werkt ;)

    [quote:34a09823b8="whmeeske"]Met ' ' zet ik een spatie in een string. Hoe kan ik 2 spaties achter elkaar plaatsen?[/quote:34a09823b8]
    Twee non-breaking spaces plaatsen: '&nbsp;&nbsp;'
  • [quote:007fc823ff="whmeeske"]Ik ben even bezig aan de hand van de tip van Annie wat verder te proberen. Nog even en dan ben ik waar ik wezen wil. Het resultaat zal ik nog wel ff posten. Het werkt wel degelijk op basis van een tabel.[/quote:007fc823ff]
    Ik bedoel dat datgene wat je wilt bereiken semantisch/structureel/watdanook gezien geen tabel is maar een adressenlijst. Daarnaast kost deze lijst veel minder code ;)
  • [quote:2a049c9153="Stijn."][quote:2a049c9153="whmeeske"]Ik ben even bezig aan de hand van de tip van Annie wat verder te proberen. Nog even en dan ben ik waar ik wezen wil. Het resultaat zal ik nog wel ff posten. Het werkt wel degelijk op basis van een tabel.[/quote:2a049c9153]
    Ik bedoel dat datgene wat je wilt bereiken semantisch/structureel/watdanook gezien geen tabel is maar een adressenlijst. Daarnaast kost deze lijst veel minder code ;)[/quote:2a049c9153]Maar als je de code niet goed begrijpt dan is het opmaken ook geen pretje. Ik hou het toch maar bij m'n tabel opmaak.
    En waarom is het geen tabel? In elke cel komt een stukje data.
    Maar daar ga ik niet verder over discussieren, ik vind het een tabel.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.