• Ich bin dabei eine Seite zu erstellen, die auf Dauer zwar einen sehr großen Umfang haben wird, allerdings kann ich bei meinem Projekt auf ein Login-System verzichten.
    Ist es ein großes Problem, wenn ich den HTML-Code nicht von dem PHP-Code trenne, sprich mittels eines Templates? (von Templates hab ich gar keine Ahnung und auch keine Ahnung wie ich mir das beibringen soll).
    Was meint ihr?

  • Code und Layout trennen ist aber fast immer eine gute und praktische Lösung, es wird aber auch ohne gehen.
    Als Alternativ-Lösung kannst du die PHP Teile in include-Dateien auslagern. Also sowas:

    index.php

    Achte bei einer solchen Lösung darauf, dass HTML Code, der aus den include Dateien generiert wird so geschrieben ist das man ihn einfach anpassen kann. Also schön mit <div> <span> & co. arbeiten und allen eine class="" verpassen, damit du sie von einem Stylesheet aus positionieren und stylen kannst.

    2 Mal editiert, zuletzt von phore (25. Mai 2009 um 15:04)

  • Meine Seite wird hauptsächlich dafür da sein, Abfragen aus Mysql-Datenbanken auszugeben und die entsprechenden Treffer dem Benutzer anzuzeigen.
    Wenn eine Template-Engine unumgänglich ist, habt ihr gute Seiten wo man das Lernen kann? Wenn mir das zu zeitaufwändig wird, lass ich das mit einer Template-Engine, weil die Zeit drängt ;)

    Einmal editiert, zuletzt von CroweHammer (25. Mai 2009 um 15:16)

  • Im Endeffekt will ich einfach wissen, ob das verrufen ist eine derartige Seite mit gemischtem Code zu erstellen und wenn ja warum?
    Oder ist es nur um die Übersichtlichkeit nicht zu verlieren?

  • Wenn du objektorientiertes Programmieren beherrschst und es Sinn macht, die Applikation objektorientiert zu programmieren, dann ist das die beste Lösung: ja.
    Ich kenne deine Anwendung jedoch zu wenig um das zu beurteilen, deshalb kann ich es dir nicht sagen.

    Wenn du aber von oop nichts verstehst, kannst du das auch so machen wie ich es in meiner ersten Antwort gesagt habe. Zum Teil sind solche Lösungen sogar besser weil sie das Ziel am besten erfüllen (weniger Code, weniger Dateien, weniger Entwicklungsaufwand).

    Also als Antwort: du kannst das durchaus so machen. So schlecht ist das nicht wie es vielleicht manche sagen.
    Wenn du jedoch mal Zeit und Lust hast, oop zu lernen, dann ist das eine sinnvolle Investition. Google kann dir dabei weiterhelfen.

  • Okay, danke, dass war eine Antwort mit der mir weitergeholfen ist.
    Ich verstehe schon ein wenig was von OOP, weil ich im Betrieb in der Lernphase mit Java bin.
    Also Klassen, Objekte, Funktionen, Konstruktoren, Parameter und was alles dazugehört sind kein Fremdbegriff für mich.
    Ich hatte auch schon den Gedanken eine kleine Template-Engine für mich in PHP zu schreiben, weil PHP bringt das ja mit sich. Allerdings hab ich weder ein schönes Buch, noch ein Tutorial, dass mir das Template schreiben näher bringt gefunden.

  • Versprich dir nicht zuviel von Template-Lösungen. Für die meisten Projekte ist das übers Ziel hinaus geschossen. Eine wirklich sinnvolle und Projekt-gerechte Lösung bei der Code und Layout weitgehend getrennt sind erfordert Erfahrung. Oftmals reicht auch ein sauberes include-System, oder dass man Layoutcode in einzelne PHP Dateien auslagert und bei den dynamischen Teilen dann einfach eine Variable ausgibt, die eine übergeordnete, einfache Klasse abfüllt.

    Am besten ist es, wenn du dich etwas umschaust und dir verschiedene Lösungsansätze ansiehst und dich dann anhand deiner Projektgrösse und der dir zur Verfügung stehenden Entwicklungszeit entscheidest.

    Einmal editiert, zuletzt von phore (25. Mai 2009 um 15:40)

  • Ich werde es mal mit geschicktem includen versuchen.
    Ich muss mir nur Gedanken machen, wie ich dabei nicht die Übersicht verliere.
    Du scheinst schon einige Erfahrung damit gemacht haben, wenn du noch Tipps zur Struktur hast immer her damit, ansonsten vielen Dank für deine Hilfe.

    Lg Pat

  • EVA-Prinzip einzuhalten ist immer gut (Eingabe - Verarbeitung - Ausgabe).
    Du kannst erstmal aus den aufrufenden Parameter der Seite mit php deine dynamischen Inhalte generieren. Statt sie aber auszugeben speicherst du sie in Variablen.
    Wenn die Verarbeitung komplett durchlaufen ist kommt dein html-gerüst, da gibst du an den entsprechenden stellen mit php nur noch deine Variablen aus.

    Übrigens ein sehr gutes Tutorial für oop mit php5:
    http://www.peterkropff.de/site/php/oop.htm

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Meine Seite bietet nur Daten an und evtl. Verlinkungen oder Ähnliches.
    Die Benutzer müssen außer Suchanfragen für z.B. Produkte keine anderen Eingaben übermitteln.
    D.h. die Daten, auf die die User zugreifen, stehen dann schon alle in Mysql-Datenbanken zur Verfügung, welche durch Suchabfragen, die passenden Ergebnisse liefern werden.

  • Dann würd ich sowas machen:

    Code
    [angezeigte Seite] -> Suchaufruf -> [verarbeitungs- / steuerungs-Datei] -> Ausgabe -> [include eines HTML Grundgerüstes mit Variablen]
                                                            v
                                                    Daten holen
                                                            v  
                                         [Datenbankabfragen Handler]

    (Die [] umklammerten Wörter entsprechen realer Dateien)
    Das ist eine Art MVC Abwicklung (wikipedia) kombiniert mit dem Vorschlag von SinlosS.

    In der "verarbeitungs- / steuerungs-Datei" führst du allgemeine Variablen, wie $content oder $search_results, halt je nachdem was du brauchst und nimmst Suchanfragen entgegen (if $_POST['search_str'] usw.). Dann erstellst du eine Instanz der DB-Handler Klasse, und hast dort pro Suchfunktion eine Funktion, die genau das aus der DB holt was du brauchst und die Daten so aufbereitet wie du sie brauchst. Diese Daten holst du dir mit sowas wie $results = $db_handler->search_xyz($search_str); in die Verarbeitungsdatei, und gibst sie am Schluss über die "Template" Datei aus (.php Datei mit HTML Grundgerüst die an den entsprechenden Stellen print()'s von den Variablen, die du in der verarbeitungs-Datei setzst, macht).

    Alles klar soweit? :)
    Das von SinlosS genannte Tutorial ist in der Tat gut, lies dich da mal etwas durch wenn du Zeit hast.

    Einmal editiert, zuletzt von phore (25. Mai 2009 um 16:11)

  • Schön, eine meiner Lieblings Themen:)

    Also es ist eigentlich ganz kurz erklärt , du machst es wie in dem Link und gut ist, vergiss smarty und den rest der anderen tpl enginen, lern php gut und nicht irgenteine von smarty erfundene sprache:

    http://php-coding-standard.de/php_template_engine.php

    Unter Datenbankausgaben steht das mit deiner DB


    mfg

  • hey, da kamen ja noch mehr brauchbare Beiträge.

    Danke euch, auf euch ist nach wie vor Verlass ;)

    Ich werde mir das mal durchlesen, mich für einen Weg entscheiden und ich bin mir sicher die nächsten Probleme werden nicht lange auf sich warten lassen.

    In diesem Sinne, einen schönen Abend euch allen

    Pat

  • Jetzt sag doch mal, was du vor hast!
    MVC ist eben am einfachsten zu warten.
    Im Template kannst du alles ersetzen.
    Woanders ersetzst du den Ablauf des Aufrufs.
    Wieder woanders die Datenbasis, z.B. kannst du mal eben von MySQL auf PostgreSQL oder MariaDB umsatteln, wenn dus ordentlich gemacht hast.

    [offtopic]
    EVA finde ich auch gut, das ist eigenverantwortliches Arbeiten, also Freistunde. :D
    [/offtopic]