• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

eieieiei große Probleme mit include und title

franz86

Neues Mitglied
Hallo,
ich habe hier eine kleine Noobilanten-Frage... wieso wird mir nicht der entsprechende Title ausgegeben?

index.php:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title><?php $title; ?></title>
</head>
<body>
...header text...
<a href="index.php?section=home"><b>home-link</b></a><br />
<a href="index.php?section=kontakt"><b>kontakt-link</b></a><br />
<a href="index.php?section=impressum"><b>impressum-link</b></a><br />
</body>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$section = array();
$section['home'] = 'home.php';
$section['kontakt'] = 'kontakt.php';
$section['impressum'] = 'impressum.php';

echo "    <body>\n";

if (isset($_GET['section'], $section[$_GET['section']])) {
    include $section[$_GET['section']];
} else {
    include $section['home'];
}

echo "</body>\n";
echo "</html>\n";
?>

inhalt.php
PHP:
<?
$title = "Seitentitel bla und blub Herzlich willkommen";
?>
TextTextTextTextTextTextTextTextTextTextTextTextTextTextTextText
 
Weil zu dem Zeitpunkt, wo du den title schreibst, die variable noch nicht bekannt ist. Die php-Datei wird erst zu einem späteren Zeitpunkt eingebunden.
 
Wo her soll index.php wiessen was in <?php $title; ?> steht?
das muss <?php echo $title; ?> sein.

inhalt.php muss vor allen eingelessen werden. PHP arbeitet alles von oben nach unten ab und wenn erst $title zu stehen hast und da nach $title="text"; kann das erste den inhalt nicht kennen.

Cheffen
 
verstehe, jedoch wie könnte man das technisch am besten umsetzen?

benötige dann noch eine 2. zwischenvariable dafür oder?
 
Am besten du setzt vor deinen HTMl-Code weitere php-Befehle, wo du unter anderem include( "inhalt.php" ); eingibst. Dann brauchst du auch keine Zwischenvariable.
 
Na in dem das PHP zeug am anfang machst vor dem HTML zeug.
Dann hast wenn HTML beginnt alle Variablen gefüllt und kannst die dann ausgeben lassen mit echo $title; oder echo $inhalt, $inhalt wäre dein textextext... als Variable.

Cheffchen
 
Na in dem das PHP zeug am anfang machst vor dem HTML zeug.
Dann hast wenn HTML beginnt alle Variablen gefüllt und kannst die dann ausgeben lassen mit echo $title; oder echo $inhalt, $inhalt wäre dein textextext... als Variable.

Cheffchen

wie, wenn das menü und alles dadrüber sein soll.

es soll ein zwei-spalten layout sein, oben header mit menülinks kombiniert und sollte direkt in der index.php gespeichert sein.
wird dann nimmer so gehen oder?
 
Du könntest natürlich auch eine config.php oder ähnliches schreiben, in der die "wichtigen" Variablen gespeichert werden, und diese dann als erstes einfügen. Ist für gewöhnlich auch üblich so... ;)
 
puhh, könnte mir jemand eine vorlage zeigen oder so?

brauch ja nur das grundgerüst, mit dem rest also css/html hab ich gar keine schwierigkeiten
 
Hallo,

schau dir mal einfach EVA prinzip an. Eingabe-Verarbeitung-Ausgabe -> so solltest mit PHP Arbeiten
Eingabe ist bei dir die $_GET variable.
Verarbeitung ist dein PHP code wo die passende Dateien includest die alle daten als Variablen enthält.

Also so, habe das nur etwas verschoben
PHP:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
 
$section = array();
$section['home'] = 'home.php';
$section['kontakt'] = 'kontakt.php';
$section['impressum'] = 'impressum.php';
 
if (isset($_GET['section'], $section[$_GET['section']])) {
include $section[$_GET['section']];
} else {
include $section['home'];
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title><?php echo $title; ?></title>
</head>
<body>
...header text...
<a href="index.php?section=home"><b>home-link</b></a><br />
<a href="index.php?section=kontakt"><b>kontakt-link</b></a><br />
<a href="index.php?section=impressum"><b>impressum-link</b></a><br />
 
<?php echo $inhalt; ?>
</body>
</html>

home.php
PHP:
$title="TITEL";
$inhalt="TEXTTEXTTEXT...";
$sonstiges="bla bla bla";

Cheffchen
 
hui, das sieht wesentlich besser aus, alleine vom sinn her.

aber irgendetwas scheint noch bei der ausgabe schief zu gehen:

$title="TITEL"; $inhalt="textexttext"; $sonstiges="bla bla bla"; ...header text... home-link
kontakt-link
impressum-link

Notice: Undefined variable: inhalt in /var/www/xxx/html/index.php on line 28
 
mein fehler, in der home muss php auch eingeleitet werden.

so: home.php
PHP:
<?php
$title="TITEL";
$inhalt="TEXTTEXTTEXT...";
$sonstiges="bla bla bla";
?>

Cheffchen
 
ehm, ich könnte schwören, ich hätte es auch so probiert und es ging nicht...

na ja, es scheint jetzt auf jeden fall zu gehen.

vielen dank nochmal, ohne deine hilfe hätte ich da wohl einige tage dran gesessen.
 
Wenn ich mich nicht irre kannst du mit PHP auch über den Filenamen den Titel ausgeben.

Eventuell vorhandene Leerzeichen kannst du ja ausfiltern dann. Also aus einem "_" dann in der Ausgabe ein "%20%" bzw Leerzeichen.
 
die möglichkeit mit dem filename kenne ich, jedoch war es in dem fall nicht gewünscht. die lösung von cheffchen ist schon perfekt so, mit dem system kann ich ebenso schön keywords und andere meta-eigenschaften einsetzen.

hab jedoch noch eine kleine frage, habe ich in den content files z.b. ein <a>-Tag drinnen link oder e-mail-link krieg ich direkt einen error:
Parse error: syntax error, unexpected T_STRING in

jemand eine idee wie ich noch das hinbiegen könnte?
 
Ohne Quellcode kann man da nicht helfen. Es handelt sich aber um eine Meldung, weil Du einen Syntaxfehler gemacht hast. Ein Editor mit Syntaxhighlighting wäre für dich hilfreich.
 
"weiter hinten"? Weiter hinten geht es hier gar nicht. Und weiter vorne stehen viele Quellcodes. Welchen hast Du genommen? Woran scheitert es bei der Umsetzung meiner Hinweise in meinem letzten Beitrag?
 
<?php
$title
="TITEL";
$inhalt="TEXTTEXTTEXT...";
$sonstiges="bla bla bla";
?>


die variable inhalt wird ja auf der index ausgegeben, das klappt ja auch super, es sei es ist ein html link drinnen, in form von
<a href="http://www.tagesschau.de/">ARD Tagesschau</a> Nachrichten<br>

hoffe du hast mein anliegen jetzt etwas besser verstanden
 
Zurück
Oben