Hallo zusammen,
ich habe vor einiger Zeit auch mit Hilfe dieses Forums eine Datenbank in meine Website eingebunden. Die Datenbank funktioniert korekt und problemlos, nur würde ich gerne,
Mehrere Inhalte (je inhalt eine zeile in der Datenbank) nach Datum sortiert anzeigenlassen. Mein Problem ist, dass bisher nur eine Zeile abgerufen wird.
Hier der bisherige Quelltext der Seite:
PHP
<?php error_reporting(E_ALL); ?>
<?php require_once ("config.php"); ?>
<?php require_once ("functions.php"); ?>
<?php
$page = trim($_GET['page']);
?>
<!DOCTYPE html>
<html>
<head>
<title>PolitikKritikDE - Aktuell</title>
<meta charset="ISO-8859-1">
<meta name="description" content="">
<meta name="author" content="">
<meta name="keywords" content="">
<meta name="generator" content="Webocton - Scriptly (www.scriptly.de)">
<link href="design.main.css" type="text/css" rel="stylesheet">
</head>
<body>
<div id="complete">
<div id="kopf">
<a name="begin" />
<h1>Politik (-kritik) für Jung und Alt</h1>
<h2>Wissenswertes über aktuelle Themen der Politik - In</h2><h3>Deutschland und Weltweit</h3>
</div>
<div id="ticker">
<h6>NEWS-Ticker</h6>
<br />
<p><b>Keine Aktualisierung der Website vom 18.04.14 bis zum 28.04.14!</b></p>
</div>
<div id="menue">
<ol>
<a href="home.html"><li>Allgemeines</li></a>
<li>Aktuelles - Kritik</li>
<a href="parteien.html"><li>Parteien - Kritik
<div id="parteilinks">
<ul>
<a href="parteien.html#cdu-csu"><li>CDU/CSU</li></a>
<a href="parteien.html#spd"><li>SPD</li></a>
<a href="parteien.html#fdp"><li>FDP</li></a>
<a href="parteien.html#gruene"><li>Bündnis 90´/Die Grünen</li></a>
<a href="parteien.html#linke"><li>Die Linke</li></a>
<a href="parteien.html#afd"><li>Alternative für Deutschland</li></a>
<a href="parteien.html#piraten"><li>Die Piraten</li></a>
</ul>
</div>
</li></a>
<a href="kommentare.html"><li>Kommentare</li></a>
<a href="kontakt.html"><li>Kontakt und Linksammlung</li></a>
<a href="impressum.html"><li>Impressum</li></a>
</ol>
</div>
<div id="text">
<div id="textalone">
<h4>Aktuelles - Kritik</h4>
</div>
</div>
<section>
<?php
echo getPage($page);
?>
<article>
<div id="linkbegin">
<a href="#begin"><p>Zum Seitenanfang</p></a>
</div>
<br />
</article>
<br />
</section>
<div id="fuss">
<h6>© by PolitikKritikDE. Alle Rechte vorbehalten. Wir übernehmen keine Verantwortung für verlinkte Seiten.</h6>
</div>
</div>
</body>
</html>
Alles anzeigen
Hier die function.php:
PHP
<?php
function getPage($pagename) {
global $database_host;
global $database_name;
global $database_user;
global $database_pass;
global $database_pers; // neu und optional (persistant connection ^= bestehende verbindung)
try{ // versuche
$dbh = new PDO( // erzeuge neues objekt von PDO
'mysql:host='.$database_host.';dbname='.$database_name, // verbinde zu host und datenbank
$database_user, // mit username
$database_pass, // und passwort
array(PDO::ATTR_PERSISTENT => $database_pers) // und nutze parameter ... beim verbinden
);
}catch(PDOException $e){ // wenn "versuche" einen fehler erzeugt, dann "fange" diesen fehler in var $e
// (wenn kein try/catch genutzt wird, dann wird das programm mit einem fatal error abgebrochen)
// fehler ausgabe/kontrolle
/* $e->getMessage() ^= gib mit von $e (wo der fehler "drin steckt" die meldung)
du kannst mal testweise mit absicht ein falsches pw angeben
und mit var_dump( $e->getMessage() ); den fehler ausgeben lassen
*/
die ("<article><br /><h5>404 - ERROR <br /> Die Artikel können nicht geladen werden, da eine Verbindung mit der Datenbank nicht möglich war!</h5><br /></article>");
}
// ab hier sind wir verbunden.
$sql = 'SELECT * FROM `aktuelles` WHERE `slug` = :pagename ORDER BY `aktuelles`.`datum` DESC;';
// :pagename ist ein platzhalter
// LIMIT 1 (nur ein datensatz), weil du ja nur einen erwartest
//SELECT * FROM `aktuelles` WHERE `slug` = :pagename ORDER BY `aktuelles`.`datum` DESC LIMIT 1;
$para = array(
':pagename' => $pagename // hier wird der wert für den platzhalter hinterlegt
);
// die query wird vorbereitet:
$stmt = $dbh->prepare($sql);
// die query (das statement) wird ausgeführt:
if(!$stmt->execute($para)){ // wenn "nicht execute", also fehler -
// dann hier fehler handling (speichern, ausgeben, wie auch immer):
var_dump($stmt->errorInfo());
die;
}else{ // wenn das staement ausgeführt werden konnte:
$content = $stmt->fetchAll(); // fetch all (hole alle)
// return das, was du brauchst
if(isset($content[0]["artikel"])){
return $content[0]["artikel"];
}
}
// wenn wir hier sind, haben wir noch nicht "returned", also keine daten.
return false;
}
?>
Alles anzeigen