php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 04-11-2006, 20:10
Mra
 Newbie
Links : Onlinestatus : Mra ist offline
Registriert seit: Nov 2006
Ort: Österreich
Beiträge: 44
Mra ist zur Zeit noch ein unbeschriebenes Blatt
Mra eine Nachricht über ICQ schicken
Question [Funktion] Fehler mit Templates

Ich mache gerade meine ganze Seite neu und will nun mit Templates arbeiten, da die einfach viel dynamischer und komfortabler sind. Ein Freund von mir hat ein Template-System geschrieben, kennt sich aber nicht so gut aus.

Hier ist einmal der Seitenaufbau für die Templates:

PHP-Code:
<?php
    error_reporting
(E_ALL);
//index.php
    
require ("inc/funcions.php");
    require (
"header.php");
    eval (
"\$header .= \"".gettemplate("header")."\";");
    eval (
"dotpl(\"".gettemplate("template")."\");");
?>
PHP-Code:
<?php
    
//header.php
    
$header1 "1x1.png";
    
$header2 "1x2.png";
?>
PHP-Code:
<?php
    
//inc/functions.php
    
function gettemplate($name) {
        
$template  =  file("./templates/".$name.".tpl");
        
$template  =  implode("",$template);
        
$template  =  str_replace("\"""\\\""$template);
        return 
$template;
    }

    function 
dotpl ($template) {
        echo 
$template;
    }
?>
Mit diesem Code mache ich meine Templates. Im Ordner "templates" sind diese dann unterm dem Namen "header.tpl" etc. Dieser HTML Code für das Template header.tpl müsste dann in der Variable $header gespeichert werden.
Und am Ende müsste "template.tpl" ausgegeben werden, wo man dann $header einbauen kann.

Aber jetzt steht da folgender Fehler:
Notice: Undefined variable: header in /www/htdocs/w0079aa7/main.php(9) : eval()'d code on line 1

Woran liegt das?

Ich möchte das so umschreiben, dass das ganz richtig funktioniert. Ich hoffe, ihr versteht den Seitenaufbau. Sonst könnt ihr ja fragen.

PS: Ihr könnt mich auch per ICQ anschreiben, denn so ist die Kommunikation um einiges leichter. Meine ICQ Nummer ist 427137166.

Geändert von wahsaga (04-11-2006 um 20:37 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 04-11-2006, 20:37
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: [Funktion] Fehler mit Templates

OffTopic:
Entferne bitte das aufdringliche Banner aus deiner Signatur.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 04-11-2006, 21:16
hhcm
 PHP Senior
Links : Onlinestatus : hhcm ist offline
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.833
hhcm ist zur Zeit noch ein unbeschriebenes Blatt
hhcm eine Nachricht über ICQ schicken hhcm eine Nachricht über Skype™ schicken
Standard Re: [Funktion] Fehler mit Templates

OffTopic:
Ein Freund von mir hat ein Template-System geschrieben, kennt sich aber nicht so gut aus.



Meinst du nicht das du uns die Zeile 9 deiner main.php mal offenbaren solltest? (abgesehen davon das ein NOTICE kein wirklicher Fehler ist)
__________________
gruss Chris

Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."
Mit Zitat antworten
  #4 (permalink)  
Alt 04-11-2006, 21:17
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zitat:
Ein Freund von mir hat ein Template-System geschrieben, kennt sich aber nicht so gut aus.
Das sieht man!
Das ist kein Template-System sondern nicht viel mehr als ein aufgebohrtes include.
Probier mal Smarty - übrigens von Leuten geschrieben, die sich auskennen.
Mit Zitat antworten
  #5 (permalink)  
Alt 04-11-2006, 23:49
Mra
 Newbie
Links : Onlinestatus : Mra ist offline
Registriert seit: Nov 2006
Ort: Österreich
Beiträge: 44
Mra ist zur Zeit noch ein unbeschriebenes Blatt
Mra eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von hhcm
Meinst du nicht das du uns die Zeile 9 deiner main.php mal offenbaren solltest? (abgesehen davon das ein NOTICE kein wirklicher Fehler ist) [/B]
Tut mir Leid, das habe ich wohl übersehen. Zeile 9 ist da wo,
PHP-Code:
eval ("\$header .= \"".gettemplate("header")."\";"); 
steht. Ich weiß jetzt, woran der Fehler liegt: Man muss so schreiben:

PHP-Code:
                if(isset($header)) {
                    eval (
"\$header .= \"".gettemplate("header")."\";");
                } else {
                    eval (
"\$header = \"".gettemplate("header")."\";");
                } 

Zitat:
Original geschrieben von onemorenerd
Das sieht man!
Das ist kein Template-System sondern nicht viel mehr als ein aufgebohrtes include.
Probier mal Smarty - übrigens von Leuten geschrieben, die sich auskennen.
Smarty hab ich mal probiert, aber da hab ich mich mit den Erklärungen nicht ausgekannt. Ich habe auch bei PHP TUT geschaut, aber das war mir alles zu kompliziert beschrieben. Deshalb hat mir auch mein Freund das Template-System von ihm gegeben.
Und wo liegt jetzt genau der Unterschied zwischen einem echten Template-System und dem von ihm?

Dann will ich mal Smarty probieren: Ich muss da jetzt den heruntergeladenen Ordner auf den Server in das Verzeichnis /smarty/ geben?
__________________
Meine Seite:
American-Dad.de

Geändert von Mra (04-11-2006 um 23:53 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 05-11-2006, 01:52
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Mra
Deshalb hat mir auch mein Freund das Template-System von ihm gegeben.
wie gesagt, das ist kein templatesystem sondern eine umständliche frickelei für include.
statt: eval ("\$header .= \"".gettemplate("header")."\";");
kannst du einfacher: include('templates/header.tpl'); schreiben
Zitat:
Und wo liegt jetzt genau der Unterschied zwischen einem echten Template-System und dem von ihm?
dass du gezielt platzhaltern werte (html) zuweisen kannst - können alle.
dann gibt es noch welche, die html-blöcke unterstützen.
und dann gibt es noch killer-systeme, wie smarty, die eine eigene makrosprache mitbringen.


Zitat:
Dann will ich mal Smarty probieren
lass es einfach
so, wie es aussieht (nach deiner problembeschreibung/anforderung), fährst du mit include am besten.
Mit Zitat antworten
  #7 (permalink)  
Alt 05-11-2006, 19:06
Mra
 Newbie
Links : Onlinestatus : Mra ist offline
Registriert seit: Nov 2006
Ort: Österreich
Beiträge: 44
Mra ist zur Zeit noch ein unbeschriebenes Blatt
Mra eine Nachricht über ICQ schicken
Standard

Ich habe jetzt eine Frage zu Smarty.

Ich will ja die Seite auch bei jeder Unterseite mit einem Design versehen, also brauch ich auch immer dasselbe Template. Nur der Inhalt von einer Tabellen-Zelle soll anders sein. Welches Template ich da benutzen, will ich mit php als eine Variable definieren.

Ich dachte da, dass ich das einfach so mache:

PHP-Code:
<?php
    error_reporting
(E_ALL);
    
define('SMARTY_DIR''/www/htdocs/w0079aa7/smarty/');
    
// den Pfad entsprechend anpassen. Der Slash am ende muss
    // vorhanden sein

    
require(SMARTY_DIR.'Smarty.class.php');
    
// Die Smarty-Klasse laden

    
$smarty = new Smarty;
    
// Neues Objekt erstellen

    
$namen[1] = "Alex";
    
$namen[2] = "Reini";
    
$namen[3] = "Monika";

    
$smarty->assign('name'$namen);
    
$smarty->assign('clanname''L33T HaXX0r Clan');
    
$smarty->assign('page''test');

    
$smarty->display('index.tpl');
?>
Code:
{* Ein Kommentar mit Smarty
   Wie in PHP wird dieser dann von dem Smarty-System
   ignoriert. Der Browser bekommt dann diesen Kommentar
   auch nicht zu sehen, obwohl er direkt im Template
   drinsteht *}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Testen macht spaß</title>
        <meta http-equiv="Content-Type" content="text/xhtml; charset=ISO-8859-1" />
    </head>
    <body>
    {foreach from=$name item=name}
        <p>
            Willkommen {$name} auf der Seite vom Clan {$clanname}
        </p>
        {include file="{$page}.tpl"}
    {/foreach}
    </body>
</html>
Aber jetzt steht da folgender Fehler:

Warning: Smarty error: unable to read resource: "{" in /www/htdocs/w0079aa7/smarty/Smarty.class.php on line 1095

Was muss ich da also jetzt tun, damit ich das richtig hinbekomme.
__________________
Meine Seite:
American-Dad.de
Mit Zitat antworten
  #8 (permalink)  
Alt 05-11-2006, 22:38
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Die Anweisung {include file="{$page}.tpl"} kann so nicht funktionieren. Hättest du die Fehlermeldung gelesen, statt gleich nach Muttis Rockzipfel zu greifen, wäre dir aufgefallen, dass Smarty eine Datei namens "{" öffnen will. Klappt natürlich nicht, weil es die nicht gibt.
Warum will er "{" öffnen? Na vielleicht weil die { innerhalb eines bereits mit {} umschlossenen Blockes eine andere Wirkung hat? Da wärst du sicher auch selbst drauf gekommen, ne? Und nun ziehst du die finale Schlußfolgerung gefällig selbst - und wenn es die ist, ins Manual zu schauen, dann ist es eben so.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:20 Uhr.