Anleitungen

Feeds mit PHP und MySQL auslesen

Zurück aus der einwöchigen Abwesenheit melde ich mich mit einem Artikel, der die Verwendung von MySQL-Abfragen und PHP als Alternative zu MagpieRSS zeigt. Im Vorfeld erschien schon ein Artikel über die Feed-Verarbeitung mit MagpieRSS - jetzt gibt es das Gegenstück in Form von wenig Code-Bastelei!

Achtung: Diese Methode greift auf die MySQL Datenbank und somit auf alle Daten von WordPress zu. Sei dir bewusst, dass mit solchen MySQL-Codes schnell einmal ganze Tabellen geleert und gelöscht werden können! Ausserdem kann damit keine serverübergreifende Lösung erarbeitet werden.

Das Problem und die Lösung dazu

Mir ging es auch einmal wie dem Autor des englischen Artikels (siehe Schluss): Ich wollte auf meiner statischen Website die letzten Artikel meines Blogs anzeigen. Gescheitert bin ich unter anderem an der Datumsanzeige und der Umwandlung der ID in den Namen des Autors. Aber das ist schon mindestens ein Jahr her und ich muss mich damit auch nicht mehr beschäftigen.

Zuerst einmal machen wir uns Gedanken über den Speicherort (Datenbank) und den Weg zur Anzeige (Output durch MySQL-Abfrage in PHP) . Wir stellen eine Verbindung zur Datenbank her, was mit diesen wenigen Zeilen schnell getan ist.


<?php
/*Turn off error reporting.*/
error_reporting(0);
/*Configure your database connection*/
$dbhost = 'localhost';
$dbuser = 'dbuser';
$dbpass = 'dbpass';
/*Connect to the database.*/
$conn = mysql_connect ($dbhost, $dbuser, $dbpass)
or die
('There was an error connecting to the database.');
/*Select your WordPress database.*/
$dbname = 'dbname';
mysql_select_db ($dbname);

Jetzt lesen wir den letzten Artikel mit Datum, Kopfzeile und Exzerpt aus. Damit man gleich zum Artikel gelangt, verlinken wir den Titel.


/*Get data from the database*/
$howmany = 1;
$result = mysql_query
("SELECT * FROM wp_posts
WHERE `post_type`=\"post\" and `post_status`= \"publish\"
ORDER BY post_date desc
LIMIT " . $howmany);
/*Display the data*/
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
//Date function
$datevalue = $row['post_date'];
$dateArray=explode('-',$dateva lue);
// Example of results
// $dateArray[0]= 2007
// $dateArray[1] = 02
// $dateArray[2] = 05
?> <p class="date"> < ?php
echo date('F j, Y', mktime(0, 0, 0, $dateArray[1],
$dateArray[2], $dateArray[0]));
echo "</p>"; ?>
<h3 class="title">
<a href="<?php echo "{$row['guid']}”;?>”
title=”Permalink to: < ?php echo “{$row['post_title']}”;?>”>
< ?php echo "{$row['post_title']}”;?></a>
</h3>
<div class="excerpt">
< ?php echo "{$row['post_excerpt']}”;?>
</div>
</p>

Nun muss man nur noch schnell den Arbeitsspeicher leeren und die Verbindung zum MySQL-Host beenden und das war's auch schon!


//Free the memory and then
mysql_free_result($result);
//Close the database connection.
mysql_close ($conn);  ?>

Source herunterladen

Alle drei Code-Teile kannst du als Text-Datei zusammengefasst bequem herunterladen und in deine Seite einbauen. Du kannst diese Datei z.B. mit Dreamweaver oder einem ähnlichen Programm öffnen und bearbeiten.

Jetzt Source herunterladen

Wenn du den Code genauer anschaust, erkennst du, dass eine Änderung von gewissen Dingen sehr einfach ist. Man kann die Anzahl der auszugebenden Artikel mit der Variable $howmany verändern und muss sich keine Gedanken über Template-Tags machen.

Falls du deine Konfigurationen der MySQL-Verbindung zu Ihrer WordPress-Datenbank verlegt hast, findest du diese in der Datei wp-config.php.

Gefunden bei: A (Smarter) Solution for Displaying WordPress Entries on ANY Part of Your Websitec

2 Kommentare zu “Feeds mit PHP und MySQL auslesen”

  1. Stefan am 12. November 2008 um 10:39 | Permalink

    Ah danke, genau danach habe ich gesucht :-)

  2. Dziko am 30. August 2009 um 21:55 | Permalink

    Danke, auch ich habe gefunden wonach ich gesucht habe!
    Weiter so! :)

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>