Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „[PHP] Seitentext aus Datenbank laden?“

xero7

» Unterdrück(t)er

Hallo liebe PSdler,

ich bin schon den ganzen Morgen am überlegen, ob es gehen würde, dass man den Textinhalt einer Website einfach aus einer Datenbank läd.

Zum Beispiel, hat man jetzt seine Seite und wenn man auf kontakt klickt, wird der Inhalt nicht von kontakt.php geladen, sondern von der Datenbank, Kontakt. Und in die Datenbank kommt dann halt auch der Php-code rein.

Habt ihr damit erfahrung, und wie würdet ihr es am machen? Verstehe nämlich eig. nicht warum man noch mit so vielen Dateien arbeiten muss, wenn man es alles über die Datenbank laufen lassen kann?

Liebe Grüße
Markus
 

Duddle

Posting-Frequenz: 14µHz

AW:
PHP:
 Seitentext aus Datenbank laden?[/b]

Ich persönlich rate von der Idee ab, da du damit mehrere Schichten miteinander vermischst, die eigentlich getrennt bleiben sollten. In eine DB gehören meiner Ansicht nach nur rohe Daten (Anm. d. Autors: Hab auch mal wo gearbeitet, da wurden komplette Videos in die DB gehauen, das hat "Spaß" gemacht).

Probiert habe ich dein konkretes Anliegen noch nie, funktionieren sollte es aber. Da PHP aber nur das Zeug im eigentlichen Script durch den Parser jagt, und Daten aus der DB als Klartext ankommen, musst du mit eval() - von dem ich explizit abrate - den Text auswerten.

Aber nochmal: sinnvoll ist es in meinen Augen nicht, schön ist es nicht, performanter wird es auch nicht.


Duddle
 

splasch

Nicht mehr ganz neu hier

AW:
PHP:
 Seitentext aus Datenbank laden?[/b]

Machen kann man immer viel aber ob es sin gemäß ist wiedrum eine andere Frage.
Klar könnte man alles über eine Index datei steuren.
Aber ich würde dir Davon abratten dadurch ergeben sich viele Nachteile:

Denk nur mal daran du möchste was am Programm code ändern.Das wird dann zu einer reinen nerven sache weil alles aus dem zusammenhang geriessen ist.

Daher nachträglich bearbeitung oder hinzufügen neuer funktionen im bestehen Programm code nur schwer möglich.

Erschwerte Fehlersuche.
Ausseinanderhaltung von Programmcode und Inhalt kaum noch möglich
Perfomenc sinkt.
unsw.
Die Liste könnte man noch lange so weiter führen was alles für Nachteile dann enstehen würden.


Ein Tip von mir lass es und verwende die Db für das was sie auch vorgesehen ist.

[QUOTE]
Habt ihr damit erfahrung, und wie würdet ihr es am machen? Verstehe nämlich eig. nicht warum man noch mit so vielen Dateien arbeiten muss, wenn man es alles über die Datenbank laufen lassen kann?
[/QUOTE]

Man muß nicht mit vielen datein arbeiten man kann alles auch in eine Datei schreiben aber dann würden genau wiederum die gleichen Nachteile wie bereits oben erwähnt entstehen.

Im Grunde macht es keinen unterschied ob du alles in die Db schreibst oder in eine einzige Datei.Vom beiden Varianten würde ich dir abraten weil dadurch zuviele Nachteile enstehen.


Mfg Splasch
 
Zuletzt bearbeitet:

xero7

» Unterdrück(t)er

AW:
PHP:
 Seitentext aus Datenbank laden?[/b]

Vielen Dank für die Antworten!

Gut, dann bleibt ja eig. nur noch die Variante übrig, für jede Seite eine Datei zunehmen. Gibt es eig. eine andere Möglichkeit zu Smarty? Also wo man vllt. nicht gleich so viele neue Sachen lernen muss? Wie baut ihr eure Seiten auf und wie bauen es eig. die großen Seiten, wie T-Online, Freenet?

Liebe Grüße
Markus
 

xero7

» Unterdrück(t)er

AW:
PHP:
 Seitentext aus Datenbank laden?[/b]

Aber CMS 's laufen doch auch über die Datenbank, im Adminbereich schreibt man die News die im Frontend angezeigt werden? 

Wie genau baut ihr eure Seiten auf, mit Templates oder welche Variante benutzt Ihr?

Gibt es eine andere Variante zu Smarty? Wo man dann nicht einiges an Sprache neulernen muss?

Liebe Grüße
Markus
 

Duddle

Posting-Frequenz: 14µHz

AW:
PHP:
 Seitentext aus Datenbank laden?[/b]

[quote="xero7, post: 487075"]Aber CMS 's laufen doch auch über die Datenbank[/QUOTE]

Ja natürlich, dazu sind auch Datenbanken da: zur zentralisierten Ablage von Daten, die dann in verschiedenste Anwendungen fliessen können. Was du machen willst, ist die Anwendung, die Logik in die Datenbank zu legen, das bringt aber nicht viel.

Du solltest dir den Unterschied zwischen Template Engines und CMS klar machen, dann weisst du auch nach was du überhaupt suchen sollst.


Duddle
 

xero7

» Unterdrück(t)er

AW:
PHP:
 Seitentext aus Datenbank laden?[/b]

Glaube wird verstehen uns falsch.

Kenne den Unterschied.

Templates ist ja nur zum trennen von Designcode und Scriptcode da.


Doch bin ich im Moment auf der Suche nach der Richitgen Seitenverwaltung. Sagen wir ich möchte eine Website erstellen, nun möchte ich ja nicht in jeder Seite den gleichen Aufbau drinne haben z.b. <html><head>...

Daher suche ich nach möglichkeiten, diese zu trennen. Dazu sind ja Templates zum Beispiel da. Hier kann man Marker setzetn z.B. {title}

Aber gibt es eig. noch andere Möglichkeiten, die den gleichen Effekt haben, jedoch eine neue erlernung von Codes nicht nötig ist (Bei SMarty muss man ja neu lernen).

WIe baut ihr das auf?

Liebe Grüße
Markus
 

gp812

Newbster

AW:
PHP:
 Seitentext aus Datenbank laden?[/b]

Baue doch eigene PHP-Templates auf. Brauchst dann kein Smarty.
 
P.S.: Smarty ist ja auch gar net schwer zu verstehen. Lernen muss man da net viel.
 

xero7

» Unterdrück(t)er

AW:
PHP:
 Seitentext aus Datenbank laden?[/b]

Ja, bin auch schon am überlegen, ob ich ein eigens Templatesystem mache. Bin aber noch am überlegen wie.

Smarty nicht schwer?^^
Gut eine ganz neue Sprache zulernen ist bestimmt schwerer, aber muss für Smarty ja für alles mögliche wieder neu lernen. Denn z.B. Option Listen und so werden doch alle anders gemacht? Wie schreibe ich eig. bei Smarty jetzt z.b. mein PHP code rein?

Habe mir auch das Manual mal angeschaut und das hat ja 100nderte von Seiten.

Liebe Grüße
Markus
 

gp812

Newbster

AW:
PHP:
 Seitentext aus Datenbank laden?[/b]

[quote="xero7, post: 487152"]Ja, bin auch schon am überlegen, ob ich ein eigens Templatesystem mache. Bin aber noch am überlegen wie.
 
Smarty nicht schwer?^^
Gut eine ganz neue Sprache zulernen ist bestimmt schwerer, aber muss für Smarty ja für alles mögliche wieder neu lernen. Denn z.B. Option Listen und so werden doch alle anders gemacht? Wie schreibe ich eig. bei Smarty jetzt z.b. mein PHP code rein?
 
Habe mir auch das Manual mal angeschaut und das hat ja 100nderte von Seiten.
 
Liebe Grüße
Markus[/quote]
Falsch.
Smarty ist keine Programmiersprache. Es ist ein Template-Engine. Du kannst das als eine große Klasse in PHP sehen. Wie schon gesagt, etwas kompliziertes gibt's da net. Die Struktur ist ganz einfach. Lernen muss man da auch nicht viel. Am Anfang kannst alle mögliche Operationen/Fallunterschiede u.s.w. mit PHP erledigen, und Smarty halt nur zur Ausgabe benutzen. Und dann halt die Aufgaben auf Smarty übertragen.
 

mammimonstA

grauhliebe

AW:
PHP:
 Seitentext aus Datenbank laden?[/b]

Ich hab bei jedem Projekt eine libary.php, in der, neben einigen anderen Funktionen, auch immer die Funktionen head() und foot() anzutreffen sind. Die beginnen dann immer mit if(!0){ und dann wird alles reingehauen. Nur der eigentliche Content kommt in die einzelnen Dateien, die dann eben immer mit  anfangen.
 

splasch

Nicht mehr ganz neu hier

AW:
PHP:
 Seitentext aus Datenbank laden?[/b]

Hier haste mal einen Ansatz zu einer eigenen Template

Die templateklasse:
[PHP]
<?php
class Template
{   	
	protected $templateDir = "templates/";	// Der Ordner in dem sich die Template-Dateien befinden.
	protected $languageDir = "language/";	// Der Ordner in dem sich die Sprach-Dateien befinden
	protected $leftDelimiter = '{$';	// Der linke Delimter für einen Standard-Platzhalter
	protected $rightDelimiter = '}';	// Der rechte Delimter für einen Standard-Platzhalter
	protected $leftDelimiterF = '{';	// Der linke Delimter für eine Funktion
	protected $rightDelimiterF = '}';	// Der rechte Delimter für eine Funktion
	protected $leftDelimiterC = '\{\*';		/* Der linke Delimter für ein Kommentar * Sonderzeichen müssen escaped werden, weil der Delimter in einem RegExp * verwendet wird. */
	protected $rightDelimiterC = '\*\}';	/* Der rechte Delimter für ein Kommentar * Sonderzeichen müssen escaped werden, weil der Delimter in einem RegExp * verwendet wird.*/
	protected $leftDelimiterL = '\{L_';		/* Der linke Delimter für eine Sprachvariable * Sonderzeichen müssen escaped werden, weil der Delimter in einem RegExp * verwendet wird.*/
	protected $rightDelimiterL = '\}';	/* Der rechte Delimter für eine Sprachvariable * Sonderzeichen müssen escaped werden, weil der Delimter in einem RegExp * verwendet wird. */
	protected $templateFile = "";	// Der komplette Pfad der Templatedatei.
	protected $languageFile = "";	// Der komplette Pfad der Sprachdatei.
	protected $templateName = "";	// Der Dateiname der Templatedatei
	protected $template = "";	// Der Inhalt des Templates.
	
	
	public function template($tpl_dir = "", $lang_dir = "") 
	{
		// Template Ordner ändern
		if (!empty($tpl_dir)) {
			$this->templateDir = $tpl_dir;
		}

		// Language Ordner ändern
		if (!empty($lang_dir)) {
			$this->languageDir = $lang_dir;
		}
		
		return true;
	}

	
	/**
	 * Die Templatedatei öffnen
	 *
	 * @access    public
	 * @param     string $file Dateiname des Templates
	 * @return    boolean
	 */
	public function load($file)
	{
		// Die Eigenschaften zuweisen
	    $this->templateName = $file;
		$this->templateFile = $this->templateDir.$file;

		// Wenn ein Dateiname übergeben wurde, versuchen, die Datei zu öffnen
		if(!empty($this->templateFile)) {
    		if($fp = @fopen($this->templateFile, "r")) {
    		    // Den Inhalt des Templates einlesen
    			$this->template = fread($fp, filesize($this->templateFile)); 
    			fclose ($fp); 
    		} else {
    		    return false;
    		}
		}

		// Die methode replaceFuntions() aufrufen
		$this->replaceFunctions();
		
		return true;
	}


	/**
	 * Die Standard-Platzhalter ersetzen
	 *
	 * @access    public
	 * @param     string $replace      Name of var which should be replaced
	 * @param     string $replacement  Text with which to replace the var
	 * @return    boolean
	 */
	public function assign($replace, $replacement)
	{
		$this->template = str_replace($this->leftDelimiter.$replace.$this->rightDelimiter, $replacement, $this->template);
		return  true;
	}

	
	/**
	 * Die Sprachdateien öffnen
	 *
	 * @access    public
	 * @param     array $files  Dateinamen der Sprachdateien
	 * @return    boolean
	 */
	public function loadLanguage($files)
	{
	    // Die Dateinamen der Sprachdateien
		$this->languageFiles = $files;
		
		// Versuchen, alle Sprachdateien einzubinden
		for ($i=0;$i<count($this->languageFiles);$i++) {
		    // wenn die Datei $this->languageDir.$this->languageFiles[$i] nicht existiert
		    if (!file_exists($this->languageDir.$this->languageFiles[$i])) {
		        return false;
		    }
		    // Einbinden...
			include($this->languageDir.$this->languageFiles[$i]);
			// !! jetzt steht das Array $lang zur Verfügung
		}
		
		// Die Sprachvariablen mit dem Text ersetzen
		$this->replaceLanguage($lang);
		
		// $lang zurückgeben, damit $lang auch im PHP-Code verwendet werden kann
		return $lang;
	}

	/**
	 * Replace language vars with text
	 *
	 * @param string $lang
	 */
	function replaceLanguage($lang)
	{
		$this->template = preg_replace("/\{L_(.*)\}/isUe", "\$lang[strtolower('\\1')]", $this->template);

	}

	/**
	 * Die Funktionen ersetzen
	 *
	 * @access    protected
	 * @return    boolean
	 */
	protected function replaceFunctions()
	{
	    // Includes ersetzen ( {include file="..."} )
		while(preg_match("/".$this->leftDelimiterF."include file=\"(.*)\.(.*)\"".$this->rightDelimiterF."/isUe", $this->template)) {
			$this->template = preg_replace("/".$this->leftDelimiterF."include file=\"(.*)\.(.*)\"".$this->rightDelimiterF."/isUe", "file_get_contents(\$this->templateDir.'\\1'.'.'.'\\2')", $this->template);
		}

	
		// Kommentare löschen
		$this->template = preg_replace("/".$this->leftDelimiterC."(.*)".$this->rightDelimiterC."/isUe", "", $this->template);
		
		return  true;
	}
	
      
   	/**
	 * Das fertige Template ausgeben
	 *
	 * @access    public
	 * @return    boolean
	 */
	public function out()
	{
        echo $this->template;
        return true;
	}
}
?>

Index beispiel
PHP:
<?php
// Das Templatesystem einbinden
include("template.class.php");

// Eine neue Instanz der Template Klasse erzeugen
$tpl = new Template();

// Das Template laden
$tpl->load("index.tpl");

// Die Sprachdatei laden
$langs[] = "de/lang_main.php";
$lang = $tpl->loadLanguage($langs);

// Dem Platzhalter $titel den Text "Willkommen" zuweisen
$tpl->assign("title", "Willkommen");

// Dem Platzhalter $name den Text "Benutzer" zuweisen
$tpl->assign("name", "Benutzer");

// Dem Platzhalter $time den aktuellen Timestamp zuweisen
$tpl->assign("time", time());

// Und das fertige Template ausgeben
$tpl->out();
?>

Die Template datei könnte dann so aussehen
PHP:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head>
<title>Mein Templatesystem:: {$title}</title>
<meta http-equiv="Content-Type" content="text/xhtml; charset=ISO-8859-1" />
</head>
<body>
<h1>{L_START}</h1>
Hallo {$name}. Der Aktuelle Timestamp lautet: {$time}
{* Ein Template einbinden *}
{include file="othertemplate.tpl"}
</body>
</html>

Mfg Splasch
 
Zuletzt bearbeitet:
X

xeikon

Guest

AW:
PHP:
 Seitentext aus Datenbank laden?[/b]

für ein intranetprojekt hab ich sowas mal gemacht, allerdings hast du da etliche querlinks unter verschiedenen tabellen in ner datenbank ...

is ein elendes gefrickel wennst kein cms benutzt dass sich auch immer zu 100% an den datenbanken orientiert
 

saila

Moderatorle

AW:
PHP:
 Seitentext aus Datenbank laden?[/b]

[quote="xero7, post: 486994"]Vielen Dank für die Antworten!

Gut, dann bleibt ja eig. nur noch die Variante übrig, für jede Seite eine Datei zunehmen. Gibt es eig. eine andere Möglichkeit zu Smarty? Also wo man vllt. nicht gleich so viele neue Sachen lernen muss? Wie baut ihr eure Seiten auf und wie bauen es eig. die großen Seiten, wie T-Online, Freenet?

Liebe Grüße
Markus[/quote]

Ist nicht dein Ernst, jetzt zu überlegen ein Templatesystem dahinter zu stellen? Les dich mal zum Thema Templates ein und erkenne was da genau passiert. Wieviele Seiten hast du zu erstellen? Sehen die meisten fast alle gleich aus?

Übrigens, natürlich kannst du deinen HTML oder XHTML-Code in einer DB speichern. Ebenso die Texte und alles was du willst (abgesehen von Bilddateien oder dergleichen).
Z.B. ist auch dieses Board bzgl. HTML in einer Datenbank. Allerdings solltest du klären, ob z.B. dein Kontakt-Formular nicht gecasht ist.

Bevor du aber HTML in eine DB legst, solltest du dich über ein cash-System schlau machen und was das ist.

Ebenfalls sollte man sich schlau machen zu Template-Systemen. Den mal abgesehen von der Trennung HTML, CSS usw. zu php / mysql macht ansonsten ein solches System nur doppelte Arbeit. Fertige HTML-Deteien laden, Text einbeziehen und öffnen. Auch Layouttechnisch können Template-Systeme einschränkungen mitsich bringen.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.182
Beiträge
2.582.051
Mitglieder
67.254
Neuestes Mitglied
MKP
Oben