2012-03-30 14 views
0

Ich möchte einen Wert aus meiner Datenbank ziehen und ihn als aktuellen Seitentitel verwenden. Meine Verbindung funktioniert, die Seite wird geladen, aber ich brauche Zugriff auf eine Variable, und ich kann das nicht herausfinden.Zugriff auf eine Datenbankvariable erhalten

Wie meine Seite strukturiert:

blog.php

require_once($_SERVER['DOCUMENT_ROOT'] . '/inc/header.php'); 
if (isset($_GET['id']) && is_numeric($_GET['id'])) { 
    $blogid = $_GET['id']; 
    $stmt = $dbh->prepare("SELECT id, title, slug, body, image, author, date, category from blog WHERE id= :id ORDER BY date DESC"); 
    $stmt->execute(array('id' => $_GET['id'])); 
    $row = $stmt->fetch(); 
} 

if(isset($row['title'])) { 
    $pageTitle = $row['title']; 
} else { 
    $pageTitle = "Something Here"; 
} 

$pageTitle ist eine Variable in $header.php. Es steuert die <title> Tage für jede Seite.

Problem

Meine Datenbankverbindung $dbh wird in header.php gesetzt. Das heißt, ich habe keinen Zugriff auf $row['title'], bis es zu spät ist.

Frage:

Wie kann ich restrukturieren diese Zugang zu $row['title'] VOR require_once($_SERVER['DOCUMENT_ROOT'] . '/inc/header.php'); zu gewinnen. Ich möchte wirklich nicht die Datenbankverbindung aus dem Header herausziehen, wenn ich nicht muss.

Danke!

+0

So in der aktuellen Struktur, man kann nichts im Abschnitt der HTML-Seite setzen? – ArendE

+0

Korrekt. Das ist alles in 'header.php' gesetzt. –

+0

Dann ist es nicht möglich; Sie könnten jedoch eine Javascript-Korrektur verwenden. Dies, indem Sie einen versteckten Wert auf Ihrer Seite setzen (html body) und lassen Sie ein Javascript für Sie und legen Sie es als Seitentitel fest, indem Sie body onload verwenden. – ArendE

Antwort

0

Sie können das nicht tun, weil Ihre <title></tile> bereits in der Ausgabe gedruckt wird. Ein hardcore-Fix wäre Rendering im Puffer zu verwenden (mit ob_start ob_get_content) und dann den gerenderten Inhalt zu analysieren, um den Inhalt des Tags <title> zu ändern.

Der clevere Weg ist jedoch, Ihre Datenbank aus Ihrer Kopfzeile zu bekommen.

Grüße

+0

'Allerdings ist der clevere Weg, Ihre Datenbank aus Ihrer Kopfzeile zu entfernen.' Ich könnte sie herausziehen und sie auf allen Seiten separat einfügen, aber ich möchte wirklich nicht alle meine Dateien durchgehen und das tun, wenn ich es nicht mache. t muss –

+0

Ich verstehe völlig, es sollte nicht ein schädlicher Kommentar sein. Sie haben in der Tat eine andere Lösung, die die Abfrage für Ihren Titel im Skript header.php machen soll, aber Sie müssen überprüfen, welche Abfrage für Ihre andere Seite verwendet werden soll. Wenn Sie Ihr Datenbankobjekt in eine andere Datei einfügen, wird das zwar schmerzhaft sein, aber Sie werden viel an Flexibilität gewinnen. – grifos

+0

Ich habe es nicht als schädlich angesehen. Danke für deine Kommentare! –

Verwandte Themen