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

[mySQL] Agenda/Weblog/Kalender maken met behulp van MySQL

Anoniem
marientje
3 antwoorden
  • Hey allemaal,

    Een tijd geleden heb ik hier gevraagd hoe ik een weblog moest maken met behulp van PHP. Ik werd toen aangeraden MySQL te gebruiken, en daar ben ik dan ook mee begonnen. Nu heb ik door dat het opslaan van gegevens in een database geen enkel probleem is, echter heb ik wat moeite met het uitlezen van de juiste dingen.

    Voor een weblog kom ik er denk ik wel uit, hooguit is m'n code dan wat omslachtig. Maar wat ik wel lastig vindt, is het bijhouden of uberhaupt weergeven van een agenda op m'n website. Het zou de bedoeling moeten zijn dat de activiteiten van bijvoorbeeld de komende drie weken worden weergeven.

    Ik probeer deze code te gebruiken:
    [code:1:57fe3a9454]
    <?
    $laateenszien=mysql_query("SELECT agendapunt FROM agenda");
    $showit = mysql_fetch_array($laateenszien);

    echo $showit[0];

    ?>
    [/code:1:57fe3a9454]
    Klopt helemaal, hij laat precies het eerste gegeven zien. Maar als ik nu in plaats van 0 een 1 invul, geeft die "Undefined Offset"? Hij zegt dus dat $showit[1] niet bestaat, terwijl de query toch zeker 3 resultaten moet geven. Met mysql_fetch_object krijg ik ze namelijk alledrie aan elkaar op een rij.

    Hoe komt het dat nummer 1 niet bestaat? Want hiermee zou het volgens mij mogelijk zijn alles los te weergeven :) Als er een andere oplossing bestaat, hoor ik dat natuurlijk graag.

    EDIT:
    Het kan dus ook zo (kom ik net toevallig tegen, had een tutorial niet goed genoeg gelezen):
    [code:1:57fe3a9454]
    <?
    $laateenszien=mysql_query("SELECT agendapunt FROM agenda");
    while($record=mysql_fetch_object($laateenszien)){
    echo "".$record->agendapunt."<br>";
    }
    ?>
    [/code:1:57fe3a9454]
    Ik heb ze nu los van elkaar staan, op deze manier kan ik ze ook los in een tabel zetten, dus dat is voor elkaar. Nu komt het laatste probleem dus nog: Hoe zorg ik dat ik slechts een beperkt aantal agendapunten zie? Kan dat met een timestamp oid? (Die tellen toch vanaf een bepaalde datum in seconde of iets dergelijks?)

    Erik
  • Dan moet je gaan werken met LIMIT en SORT BY.
    [code:1:c9409b1568]
    <?
    $laateenszien=mysql_query("SELECT agendapunt FROM agenda SORT BY timestamp DSC LIMIT 0,5");
    while($record=mysql_fetch_object($laateenszien)){
    echo "".$record->agendapunt."<br>";
    }
    ?>
    [/code:1:c9409b1568]
    Zorgen dat het veld timestamp er is, daar wordt op gesorteerd, en dan met limit alleen de laatste 5 laat zien.
  • Ah, dankjewel :) Het is me nu gelukt om de goeie dingen eruit te kiezen. Die agenda is dus geregeld, maar eigenlijk lijkt het me nog leuker om het netjes in een kalender te zetten. Dat zou bijvoorbeeld(denk ik) zo kunnen:
    [code:1:e3303e008b]
    <?
    include("connect_mysql.php");

    $thismonth=date(m);

    $sql1=mysql_query(SELECT * FROM kalender WHERE month=$thismonth ORDER BY timestamp LIMIT 0,6);
    $sql2=mysql_query(SELECT * FROM kalender WHERE month=$thismonth ORDER BY timestamp LIMIT 7,13);
    $sql3=mysql_query(SELECT * FROM kalender WHERE month=$thismonth ORDER BY timestamp LIMIT 14,20);
    $sql4=mysql_query(SELECT * FROM kalender WHERE month=$thismonth ORDER BY timestamp LIMIT 21,27);
    $sql5=mysql_query(SELECT * FROM kalender WHERE month=$thismonth ORDER BY timestamp LIMIT 28,34);
    ?>

    <table>
    <tr>
    <td>Zondag</td>
    <td>Maandag</td>
    <td>Dinsdag</td>
    <td>Woensdag</td>
    <td>Donderdag</td>
    <td>Vrijdag</td>
    <td>Zaterdag</td>
    </tr>
    <tr>

    <?
    while($query1=mysql_fetch_object($sql1))
    {
    echo "<td width=100>" . date('d-m-Y', $query1->timestamp) . "<br>". $query1->activiteit . "</td>";
    }
    ?>

    </tr>
    <tr>
    <?
    while($query2=mysql_fetch_object($sql2))
    {
    echo "<td width=100>" . date('d-m-Y', $query2->timestamp) . "<br>". $query2->activiteit . "</td>";
    }

    </tr>
    <tr>
    <?
    while($query3=mysql_fetch_object($sql3))
    {
    echo "<td width=100>" . date('d-m-Y', $query3->timestamp) . "<br>". $query3->activiteit . "</td>";
    }
    ?>
    </tr>
    <tr>
    <?
    while($query4=mysql_fetch_object($sql4))
    {
    echo "<td width=100>" . date('d-m-Y', $query4->timestamp) . "<br>". $query4->activiteit . "</td>";
    }
    ?>
    </tr>
    <tr>
    <?
    while($query5=mysql_fetch_object($sql5))
    {
    echo "<td width=100>" . date('d-m-Y', $query5->timestamp) . "<br>". $query5->activiteit . "</td>";
    }
    ?>
    </tr>
    </table>
    [/code:1:e3303e008b]
    Nadeel van dit hele geintje is dat ik alle data van tevoren in een mysql tabel moet zetten, en later de betreffende velden moet updaten als er iets te gebeuren staat. Ik weet niet of het mogelijk is om iets als empty(query1) te gebruiken ofzo, dat zou mogelijk een hoop werk besparen.

    Maar dan nog lijkt deze manier van een kalender maken erg omslachtig. Ik denk dat het korter en eenvoudiger moet kunnen, alhoewel scripts op PHPhulp nog veeeel langer zijn… Iemand ideeën?

    Erik

Beantwoord deze vraag

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