|
Wanneer je begint te programmeren in PHP zul je al snel een database nodig hebben om gegevens op te slaan. Wellicht heb je dan gekozen voor MySQL. Het kunnen uitlezen van gegevens is dan ook één van de belangrijkste vaardigheden.
In dit artikel ga ik je dit leren aan de hand van het praktische voorbeeld door de laatste 10 forumberichten van een phpBB-forum op te vragen. Gegevens ophalen met een query We stellen eerst de query op waarbij we de titels van de forumberichten gaan ophalen uit de database. Deze query ziet er zo uit: <?php $query = "SELECT topic_id,topic_title FROM phpbb_topics ORDER BY topic_last_post_id DESC LIMIT 10"; $uitvoer = mysql_query($query) or die (mysql_error()); ?> Deze query selecteert uit de tabel phpbb_topics de velden topic_id en topic_title. Deze worden gerangschikt op datum van de laatste post en enkel de recentste 10 worden geselecteerd. Gegevens afdrukken Vervolgens gaan we de titels daadwerkelijk op ons scherm afdrukken. We vervolledigen ons script als volgt: <?php $query = "SELECT topic_id,topic_title FROM phpbb_topics ORDER BY topic_last_post_id DESC LIMIT 10"; $uitvoer = mysql_query($query) or die (mysql_error()); while($list = mysql_fetch_object($uitvoer)) { echo $list->topic_title; } ?> Je kunt ook met de functie mysql_fetch_array() gegevens ophalen uit je database. Het ophalen gebeurt dan zo: <?php while($data=mysql_fetch_array($result)) { echo $data['topic_title']; } ?> De titels worden nu uit de database gehaald en netjes afgedrukt op het scherm. Afgedrukte gegevens inkorten We zouden hier kunnen ophouden, maar dat gaan we natuurlijk niet doen. We willen de titels die erg lang zijn inkorten zodat het overzicht van de titels niet teveel ruimte inneemt op onze website. Hiervoor zullen we gebruik maken van de ingebouwde PHP-functie substr(). <?php $query = "SELECT topic_id,topic_title FROM phpbb_topics ORDER BY topic_last_post_id DESC LIMIT 10"; $uitvoer = mysql_query($query) or die (mysql_error()); while($list = mysql_fetch_object($uitvoer)) { if(strlen($list->topic_title) > 20) { $afgekorte_titel = substr($list->topic_title,0,17)."..."; echo("$afgekorte_titel"); } else { echo("$list->topic_title"); } } ?> Als de opgevraagde titel langer is dan 20 tekens, wordt deze afgebroken na 17 tekens. Na de 17 tekens worden dan 3 puntjes afgedrukt om duidelijk te maken dat slechts een deel van de titel wordt weergegeven. Id gebruiken Het zou handig zijn mocht er meteen ook een hyperlink gelegd worden naar de desbetreffende topic. Je hoeft dan maar op de titel te klikken en je komt direct in de juiste topic op het forum terecht. Een link naar een topic ziet er in phpBB zo uit: http://www.website.be/forum/viewtopic.php?t=45. Het laatste getal is de primaire sleutel van de topic. Het is dus de waarde van het veld topic_id dat je achteraan moet plakken. De complete code ziet er uiteindelijk zo uit: <?php $query = "SELECT topic_id,topic_title FROM phpbb_topics ORDER BY topic_last_post_id DESC LIMIT 10"; $uitvoer = mysql_queRy($query) or die (mysql_error()); while($list = mysql_fetch_object($uitvoer)) { echo("<a href=\"forum/viewtopic.php?t=" .$list->topic_id. "\" title=\"$list->topic_title\">"); if (strlen($list->topic_title) > 20) { $afgekorte_titel = substr($list->topic_title,0,17)."..."; echo("$afgekorte_titel"); } else { echo("$list->topic_title"); } echo("</a><br />"); } ?>
|