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 07-02-2010, 18:44
uhuwe
 Registrierter Benutzer
Links : Onlinestatus : uhuwe ist offline
Registriert seit: Feb 2006
Ort: Wedemark OT-Gailhof
Beiträge: 26
uhuwe ist zur Zeit noch ein unbeschriebenes Blatt
Standard Templatesystem Eigenbau

Ich habe mich jetzt nochmal heran gewagt, ein eigenes Templatesystem zu basteln.

Die PHP-Datein sind so aufgebaut:
functions.php
PHP-Code:
<?php

function get_template($infile)
{
    
$tempfile=file($infile.'.tpl');
    
$loopwhile=0;
    
$loopfor=0;
    
$loop=0;
    
$if=0;
    
$once=1;

    for(
$i=0;$i<count($tempfile);$i++)
    {
        
preg_match_all('/\{([a-zA-Z0-9_]+)\}/',$tempfile[$i],$matches);
        
        for(
$j=0;$j<count($matches[0]);$j++)
        {
            if(
$once==1)
            {
                
$replacement=$matches[1][$j];
                global $
$replacement;
                
$tempfile[$i]=str_replace($matches[0][$j],$$replacement,$tempfile[$i]);
                
$resulttext[$i]=$tempfile[$i];
            }
        }
        
        
$results=preg_match_all('/\[(.*)\]/',$tempfile[$i],$matches);
        
        if(
$results>0)    
        {
            for(
$j=0;$j<count($matches[0]);$j++)
            {
                
$templatefunction=preg_split('/[^a-zA-Z0-9_\/]/',$matches[1][$j]);
            }            
            if(
$templatefunction[0]=='if')
            {
                
$if++;
            }
            
            if(
$templatefunction[0]=='include')
            {
                
$include++;
                
                include($
$templatefunction[1]);
            }
            
            if(
$templatefunction[0]=='while')
            {
                
$once=0;
                
$loopwhile++;
            }
            
            if(
$templatefunction[0]=='/while')
            {
                
$loopwhile--;
                
                if(
$loopwhile==0$once=1;
            }
            
            if(
$templatefunction[0]=='for')
            {
                
$once=0;
                
$loopfor++;
            }
            
            if(
$templatefunction[0]=='/for')
            {
                
$loopfor--;
                
                if(
$loopfor==0$once=1;
            }
        }
        
$resulttext[$i]=$tempfile[$i];
    }
    
    if(
$loopwhile!=|| $loopfor!=0)
    {
        echo 
"\$loopwhile: $loopwhile und \$loopfor: $loopfor<br/>";
        die(
'Mit dem Template stimmt irgend etwas nicht. <h1>Abbruch</h1>');
    }
    else
    {
        
$once=1;
        
$loop=0;
    }
    
    echo(
implode('',$resulttext));
}

?>
index.php
PHP-Code:
<?php
include('functions.php');

$css='css/home.css';
$artikel=(isset($_GET['artikel']))?$_GET['artikel']:"Kein Artikel vorhanden.";
$REMOTE_ADDRESS=$_SERVER['REMOTE_ADDR'];
$HOST_ADDRESS=$_SERVER['HTTP_HOST'];
$mysql['text']=array("Datensatz1","Datensatz2");
$text=$mysql['text'][1];
$image='./bilder/Deutschlandfahne.svg';
$imagetype='image/svg+xml';
$imagename='Deutschlandfahne';
$or_de='oder';
$or_en='or';
$lang='de';
$typeor='or_'.$lang;
$or=$$typeor;

get_template('templates/header');
get_template('templates/index');
get_template('templates/footer');
?>
Die Templates:
header.tpl
PHP-Code:
<link rel="stylesheet" type="text/css" href={css}>
<
object data={imagetype={imagetypewidth="100%" height="300px">Image: {imagename}</object>

<
font>

<
table width="100%">

<
tr><td valign="top">

<
table>

<
tr><td valign="top" class="table menue">

<
a href="?artikel=Dies ist meine erste Homepage"><h1>Home</h1></a>

<
a href="?artikel=computer">Computer</a><br>

<
a href="?artikel=fahnen">Fahnen</a><br>

<
a href="?artikel=grafikkarten">Grafikkarten</a>

<
hr />

<
h1><center>SVG Scripte</center></h1>

<
a href="?grafik=Fahne">SVG-Fahne</a>

<
a href="?grafik=Liebeserklaerung">Liebeserkl&auml;rung</a>

</
td>

</
tr>

</
table>

</
td>> 
index.php
PHP-Code:
<td>

<
table width="100%">

<
tr>

<
td><h1><center>{artikel}</center></h1><hr></td>

</
tr>

[while 
mysql text]

<
tr>

<
td>{text}</td>

</
tr>

[/while]

</
table>

</
tr
footer.tpl
PHP-Code:
<tr><td colspan="3">

<
hr>

Internet: {HOST_ADDRESS}<br /><br />



E-Mail: <a href="mailto:quickjoe@web.de">quickjoe@web.de</a> {or} <a href="mailto:aldifahne@freenet.de">aldifahne@freenet.de</a><br /><br />

<
hr>

Ihre IP-Adresse ist: {REMOTE_ADDRESS}

</
td></tr>

</
table
So, wie man im Anhang sehen kann, funktioniert das bis auf die Schleifen.
Das erste Problem ist, dass ich keine Arrays an eine Fuktion übergen kann und
zweitens kein Array global erklären kann und wenn, dann weiß ich nicht wie.

Ich hätte sonst die Datensätze aus der Datenbank geholt, in ein Array gepackt, bearbeitet und dann ausgegeben.
Das Ganze sollte dann auch universell funktionieren.

Hat noch irgend einer eine Idee?

Danke schon mal im Voraus.
Miniaturansicht angehängter Grafiken
Templatesystem Eigenbau-bildschirmfoto-mozilla-firefox.png  
Mit Zitat antworten
  #2 (permalink)  
Alt 07-02-2010, 18:54
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von uhuwe Beitrag anzeigen
Das erste Problem ist, dass ich keine Arrays an eine Fuktion übergen kann
Doch, das kann man.
Zitat:
Zitat von uhuwe Beitrag anzeigen
und zweitens kein Array global erklären kann und wenn, dann weiß ich nicht wie.
Mit global. Wie bei ganz normalen Variablen auch. Allerdings halte ich diese Vorgehensweise für absolut tödlich. Daten sollten immer sauber gekapselt werden. Ansonsten hast du einen Design-Fehler.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 07-02-2010, 19:10
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Auch wenn ich das Ganze für einen Irrweg halte:
Zitat:
kein Array global erklären kann und wenn, dann weiß ich nicht wie.
PHP-Code:
$GLOBALS['deinArray'] = array(1,2,3,4); 
__________________
Wir werden alle sterben
Mit Zitat antworten
  #4 (permalink)  
Alt 07-02-2010, 19:14
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Oder
PHP-Code:
global $array;
$array = array(1,2,3); 
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #5 (permalink)  
Alt 07-02-2010, 19:28
uhuwe
 Registrierter Benutzer
Links : Onlinestatus : uhuwe ist offline
Registriert seit: Feb 2006
Ort: Wedemark OT-Gailhof
Beiträge: 26
uhuwe ist zur Zeit noch ein unbeschriebenes Blatt
Standard Arrays an funktion übergeben

Wie muss ich die Funktion deklarieren? mit 'function foo($array[])' geht es schief.
Mit Zitat antworten
  #6 (permalink)  
Alt 07-02-2010, 19:33
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von uhuwe Beitrag anzeigen
Wie muss ich die Funktion deklarieren? mit 'function foo($array[])' geht es schief.
PHP-Code:
function bla($blubb)
{
  
print_r($blubb);
}
$blubber = array(1,2,3);
bla($blubber); 
Peter
EDIT:
9.999 Posts. Eigentlich sollte ich mich jetzt zur Ruhe setzen
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #7 (permalink)  
Alt 07-02-2010, 19:46
uhuwe
 Registrierter Benutzer
Links : Onlinestatus : uhuwe ist offline
Registriert seit: Feb 2006
Ort: Wedemark OT-Gailhof
Beiträge: 26
uhuwe ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
EDIT:9.999 Posts. Eigentlich sollte ich mich jetzt zur Ruhe setzen
Na dann gratulieren wir dir zu 9.999 Beiträgen.
Mit Zitat antworten
  #8 (permalink)  
Alt 07-02-2010, 19:52
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Glückwunsch!
Aber einen wirst du doch noch hin bekomen...
__________________
Wir werden alle sterben
Mit Zitat antworten
  #9 (permalink)  
Alt 07-02-2010, 19:57
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von combie Beitrag anzeigen
Glückwunsch!
Aber einen wirst du doch noch hin bekomen...
OffTopic:
OK, da ist er! Und 10.000!

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #10 (permalink)  
Alt 07-02-2010, 21:54
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Ja, das dachte ich auch schon des öfteren.

Glückwunsch, vor allem aber zum Beibehalt der Qualität. Da war ich gerade schon wieder kontraproduktiv...
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #11 (permalink)  
Alt 07-02-2010, 23:09
uhuwe
 Registrierter Benutzer
Links : Onlinestatus : uhuwe ist offline
Registriert seit: Feb 2006
Ort: Wedemark OT-Gailhof
Beiträge: 26
uhuwe ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich lasse in meinem System prüfen, ob es auf Templatefunktionen trifft
wenn das der Fall ist wird geprüft, um welche Funktion es dabei handelt.
Wenn es auf eine Schleifenfunktion handelt, muss ich mir irgendwie merken, in welcher Zeile das ist. Mit 'static' komme ich da irgendwie nicht weiter.
Gibt es da noch eine andere Möglichkeit?
Mit Zitat antworten
  #12 (permalink)  
Alt 07-02-2010, 23:15
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Wenn es auf eine Schleifenfunktion handelt,
Das ist eine Kontrollstruktur und keine Funktion

Da du da gerade eine eigene Sprache erfindest, wirst du wie alle, welche sowas tun, einen Parser schreiben dürfen.
Dabei könnte das Stichwort "endlicher Automat" hilfreich sein.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #13 (permalink)  
Alt 07-02-2010, 23:27
uhuwe
 Registrierter Benutzer
Links : Onlinestatus : uhuwe ist offline
Registriert seit: Feb 2006
Ort: Wedemark OT-Gailhof
Beiträge: 26
uhuwe ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von combie Beitrag anzeigen
Da du da gerade eine eigene Sprache erfindest, wirst du wie alle, welche sowas tun, einen Parser schreiben dürfen.
Den schreibe ich doch gerade.
Mit Zitat antworten
  #14 (permalink)  
Alt 08-02-2010, 00:03
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
muss ich mir irgendwie merken, in welcher Zeile das ist. Mit 'static' komme ich da irgendwie nicht weiter.
a) Warum musst du dir das merken? b) welche Rolle soll static dabei erfüllen?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #15 (permalink)  
Alt 08-02-2010, 12:42
uhuwe
 Registrierter Benutzer
Links : Onlinestatus : uhuwe ist offline
Registriert seit: Feb 2006
Ort: Wedemark OT-Gailhof
Beiträge: 26
uhuwe ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von TobiaZ Beitrag anzeigen
a) Warum musst du dir das merken? b) welche Rolle soll static dabei erfüllen?
zu a) Dadurch, dass jede Zeile einzeln bearbeitet wird, muss bei einem Auftreffen von '[/while]' in die Zeile von '[while]' zurückgesprungen werden solange wie noch Datensätze offen sind.

zu b) Static soll veranlassen, dass der Variablenwert nicht jedes mal überschrieben wird.
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SQL-Parser im Eigenbau ... Big Chief SQL / Datenbanken 2 02-02-2006 17:45
WYSIWYG im Eigenbau? fear BRAINSTORMING PHP/SQL/HTML/JS/CSS 4 29-07-2004 10:56
Redaktiossystem im Eigenbau??? rickinator Apps und PHP Script Gesuche 5 28-06-2004 22:31
[MySQL 3.23.X] forum im eigenbau mas09 SQL / Datenbanken 4 01-07-2003 19:55
kleine suchmaschine im eigenbau paule22 SQL / Datenbanken 21 28-01-2003 21:12

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

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:47 Uhr.