php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.09.2004, 12:25  
Erfahrener Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 2.603
Corvin befindet sich auf einem aufstrebenden Ast
Standard DB Ausgabe in eigenem Templatesystem realisieren

Hallo,

ich schreibe gerade ein eigenes Templatesystem.
Nun möchte ich auch DB Abfragen + Ausgabe realisieren können.

Wenn ich zum Beispiel folgende Abfrage habe:
Code:
SELECT spalte1, spalte2, spalte4 FROM tabelle
dann sollte dass im Template etwa so aussehen:
Code:
{foreach from=$tabellex}
{$tabellex.spalte1}

{$tabellex.spalte2}

{$tabellex.spalte3}
<hr />
{/foreach}
Das ganze soll nun entsprechend ersetzt werden. Kann mir jemand einen Gedankenstoss geben, wie ich das realisieren kann?
Corvin ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.09.2004, 19:00  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 529
DutziMan befindet sich auf einem aufstrebenden Ast
Standard

Wenn du der Template-Syntax verwenden willst, empfiehlt es sich, Smarty zu verwenden.
Ich gehe davon aus, dass du so ein großes Ra nicht neu erfinden willst
DutziMan ist offline   Mit Zitat antworten
Alt 04.09.2004, 19:23  
Erfahrener Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 2.603
Corvin befindet sich auf einem aufstrebenden Ast
Standard

DutziMan, ich verwende schon lange Smarty, nur ich möchte jetzt gerne ein EIGENES Templatesystem schreiben ...
Corvin ist offline   Mit Zitat antworten
Alt 04.09.2004, 22:08  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Heißt 'entsprechend ersetzt werden' in entsprechenden PHP-Code umgesetzt werden oder sollen gleich die Inhalte rein?

Für Ersteres musst du doch nur eine Query "SELECT * FROM $tabellex" erstellen und die Codes drum herum ausgeben.

Für Letzteres schickst du eben diese Query einfach an eine Callback-Funktion, die die Query ausführt und die Ergebnisliste zurückgibt. Dann startest du die Schleife durch die Liste und arbeitest jeweils den Block im Template durch.

Wo ist dein Problem? Wenn es dir darum geht, mit deinem mysql_fetch_assoc() - oder was auch immer du verwendest - nur die tatsächlich benötigten Daten in den Speicher zu laden, musst du den Block eben vor der Erstellung der Query parsen und dann nur die benötigten Spalen in diese Aufnehmen.

Basti
Basti ist offline   Mit Zitat antworten
Alt 05.09.2004, 21:58  
Erfahrener Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 2.603
Corvin befindet sich auf einem aufstrebenden Ast
Standard

Also nochmal etwas genauer:

Ich möchte in der PHP-Datei das stehen haben:
Code:
mysql_connect($mysql_host, $mysql_user, $mysql_password) or die(mysql_error());
mysql_select_db($mysql_database) or die(mysql_query());
$query = "SELECT id, name FROM thg";
$qry = mysql_query($query) or die(mysql_error());
$daten= array(); 
while($row = mysql_fetch_assoc($qry ))
{
	$daten[] = $row;
}
Und im Template das:

Code:
{foreach from=$daten item=datensatz}
  {$datensatz.id} 

  {$datensatz.name}

{/foreach}
Und nun soll damit das Ergebnis der Abfrage ausgegeben werden.
Corvin ist offline   Mit Zitat antworten
Alt 05.09.2004, 23:07  
Gast
 
Beiträge: n/a
Standard

mal ein anstoss hier geholt ?

http://www.php-resource.de/tutorials/read/26/3/


mfg
  Mit Zitat antworten
Alt 05.09.2004, 23:25  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von J33d3X
mal ein anstoss hier geholt ?

http://www.php-resource.de/tutorials/read/26/3/


mfg
danke für den link
imported_Ben ist offline   Mit Zitat antworten
Alt 06.09.2004, 14:16  
Erfahrener Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 2.603
Corvin befindet sich auf einem aufstrebenden Ast
Standard

So, ich habe nun ein bissle rum getest:

In der PHP-Datei:
Code:
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("tab") or die(mysql_query());
$query = "SELECT a, b FROM master";
$qry = mysql_query($query) or die(mysql_error());
$daten1 = array(); 
$daten2 = array(); 
while ($row = mysql_fetch_array($qry)) {
   $daten1[] = $row["a"];
   $daten2[] = $row["b"];
}

Im Template:
Code:
{for $daten1}
{%daten1}
{%daten2}
{/for}
und im TPL-Parser:
Code:
		$tpl = preg_replace("/\{for (.*)\}/i", "for (\$i=0;\$i&lt;count(\\1);\$i++) {
\n", $tpl);
		$tpl = preg_replace("/\{%(.*)}/i", "echo $\\1[\$i];
\n", $tpl);
		$tpl = preg_replace("/\{\/for\}/isU", "}", $tpl);
Da bekomme ich folgende Ausgabe:
Code:
for ($i=0;$i<count($daten1);$i++) {
echo $daten1[$i];
echo $daten2[$i];
}
Das soll nun nicht ausgegeben werden, sondern als PHP-Code ausgeführt werden. Wie bekomme ich das hin?
Corvin ist offline   Mit Zitat antworten
Alt 06.09.2004, 14:18  
Gast
 
Beiträge: n/a
Standard

eval
  Mit Zitat antworten
Alt 06.09.2004, 14:40  
Erfahrener Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 2.603
Corvin befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von J33d3X
eval
Ich hatte vergessen, zu erwähnen, dass ich damit schon rumprobiert habe ...:
Code:
$tpl = eval(preg_replace("/\{for (.*)\}/i", "for (\$i=0;\$i&lt;count(\\1);\$i++) {
\n", $tpl));
Klappt aber nicht.
Corvin ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Transparente Runde Ecken bei Thumbnial realisieren tomtaz PHP Tipps 2008 3 08.07.2008 01:20
Class Ausgabe Problem wk-moray PHP-Fortgeschrittene 6 12.02.2008 10:06
Problem mit Ausgabe bzw. Abfrage mit ORDER BY mayer Datenbanken 7 02.07.2006 21:45
Ausgabe nach häufigkeit eines Treffers sortieren axelnes Datenbanken 1 17.02.2006 12:14
[Erledigt] PHP Schleifenproblem, doppelte ausgabe der litenwerte PHP-Fortgeschrittene 1 16.01.2006 01:55
Ausgabe einer Datei in Variable speichern Madden PHP Tipps 2007 11 16.11.2005 01:33
Ausgabe der Auswahlliste PHP Tipps 2005-2 6 21.09.2005 13:43
3 Tabellen verbunden -- Ausgabe in einer Spalte Datenbanken 4 06.09.2005 10:43
[Erledigt] Geteilte Ausgabe an den Browser... PHP-Fortgeschrittene 4 01.07.2005 13:07
[Erledigt] nach oben &amp;amp;amp;&amp;amp;amp; nach unten verschieben realisieren PHP-Fortgeschrittene 8 26.01.2005 22:22
[Erledigt] formatierung der ausgabe, felder mit zeilenumbruch Datenbanken 4 25.11.2004 10:34
Ausgabe nur dann, wenn htmlspecialchars() verwendet PHP Tipps 2004 1 27.10.2004 21:17
Sortierung der Ausgabe PHP-Fortgeschrittene 3 08.10.2004 09:22
CMS + Smarty? oder eigenes Templatesystem? Corvin PHP-Fortgeschrittene 9 04.09.2004 11:07
[Erledigt] Prozedurale Bibliothek für HTML Ausgabe PHP Tipps 2004 0 06.07.2004 11:59

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
dbausgabe smarty, wo im templatesystem abfragen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:05 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.