Beiträge von Sören

    Ein Standardtemplate, welches den entsprechenden Teil lädt, find ich gut.

    Das Standardtemplate könnte dann z.B. den normalen Aufbau der Seite mit header, Navigation, Footer, etc. enthalten.
    Als Inhalt kann man dann irgendetwas schreiben, wie "useTemplate:xyz", wobei xyz dann auf einen Ordner zeigt, in dem von der Template Engine das gerade passende rausgesucht wird.

    Nur mal so meine Idee, ist natürlich sehr vage formuliert, aber vielleicht hilft dir das ja trotzdem.

    Am besten noch mal ein ganz neues Design entwerfen und vielleicht auch erstmal ein bischen mehr Inhalt reinmachen, damit du weißt, was du fürs Design brauchst.

    Design am Besten zuerst grob auf Papier zeichnen, damit du schon ungefähre Vorstellungen hast, wie es aussehen soll.
    Für Inspirationen sind fertige Templates gut geeignet.

    Zitat von "R4Zz0R"


    Vorschläge .. also linker ect.. hab ich schon .. aber wie mach ich des mit dem html weiter ... wo lege ich die daten eher ab .. (datei/db)
    Schneller wäre db aber woher dan zb. bei meinem installationsscript die daten hernehmen ... (so kontruiert das ich darüber später noch was einstellen kann )


    Welche Daten denn?
    Die Template-Dateien sind wohl als Dateien besser, da man dadran sonst schwieriger was ändern kann.
    Die Einstellungen wären, denke ich mal, in einer Datenbank besser aufgehoben.

    Welche Daten soll das Installationsscript denn hernehmen?

    Bei mir funktionierts übrigens auch nicht (im Firefox).
    In der Konsole wird keine Fehlermeldung ausgegeben und in window ist close enthalten.

    Außerdem sind die Buttons mehr oder weniger sinnlos. Zum Browser schließen hab ich das Kreuz, Drucken kann man schnell über Strg+P, Lesezeichen hinzufügen Strg+D.

    Zitat von "Sarkkan"

    -> Also weder Laura noch ich haben zugestimmt, dass wir in dein Impressum wollen :P Ob Sören da seine Zustimmung gegeben hat ist mir ungewiss^^


    Nö hab ich nicht. Ich muss da auch nicht unbedingt drinstehen.
    Vorallem, was haben wir an der Entwicklung mitgewirkt? Ein bischen Code verbessern gehört auf jeden Fall nicht zu Entwicklung.

    eval() kannst du PHP-Code als Zeichenkette übergeben und dieser wird dann wie normaler PHP-Code ausgeführt.

    Beispiel:
    Du liest eine Textdatei in eine Variable. In dieser Textdatei sind Variablen wie PHP-Zuweisungen gespeichert (z.B. $foo = "bar";).
    Übergibst du die Variable dann eval(), wird der Wert "bar" in der Variable $foo gespeichert und du kannst sie als normale Variablen verwenden.

    Code:

    PHP
    <span class="syntaxdefault">$vars </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">file_get_contents</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"vars.txt"</span><span class="syntaxkeyword">); </span><span class="syntaxcomment">//enthält $foo = "bar"; \n $bar = "foo";<br /></span><span class="syntaxkeyword">eval(</span><span class="syntaxdefault">$vars</span><span class="syntaxkeyword">); </span><span class="syntaxdefault"></span>


    Nun kannst du auf $foo und $bar zugreifen:

    PHP
    <span class="syntaxdefault"></span><span class="syntaxkeyword">echo </span><span class="syntaxdefault">$foo</span><span class="syntaxkeyword">.</span><span class="syntaxstring">" "</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$bar</span><span class="syntaxkeyword">; </span><span class="syntaxcomment">//gibt "bar foo" aus </span><span class="syntaxdefault"></span>
    Zitat von &quot;Sarkkan&quot;

    Doch, auch das ist machbar.. :/
    Dazu ganz einfach die Variabeln in die Datei schreiben lassen, als ob du diese in eine PHP-Datei schreibst.
    Beim auslesen musst du das dann einmal mit eval() behandeln und du besitzt die Variabeln.


    <!-- l --><a class="postlink-local" href="http://www.html-seminar.de/forum/php-f18/denkhilfe-t2839.html#p19668">php-f18/denkhilfe-t2839.html#p19668</a><!-- l -->

    Da hast du wohl irgendwor vergessen eine geschweifte Klammer zu schließen, weswegen der Parser denkt, dass dein Code nicht komplett ist und am Ende irgendetwas fehlt.
    Kleiner Tipp: Solltest du einen Editor benutzen, der dir anzeigt, welche öffnende/schließende Klammer wo geschlossen/geöffnet wird, dann gehe deinen Code mal vom Ende an durch und schaue, wo irdgendeine Klammer nicht das schleißt, was sie eigentlich sollte.

    Falls du den Fehler nicht finden solltest (nachstehenden Text markieren):
    Die if-Abfrage in Zeile 130-132 ist fehlerhaft.

    Jetzt ist es in Ordnung

    Zitat von &quot;starhunter&quot;

    Ja, hast recht, man sollte es besser trennen. Die Klasse kann eigentlich nicht wissen was mit den Daten geschieht. Ich habe die Funktion komplett rausgenommen und gebe nur das Array mit GetResults() zurück

    Die Funktion aus der Klasse auszugliedern ist immer noch das gleiche Problem. Du kannst die ruhig dadrinlassen.
    Ich dachte eher an sowas:

    PHP
    <span class="syntaxdefault">      public function DisplayResult</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault">      </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        arsort</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">words</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">        $table </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"<table border=\"1\" cellpadding=\"7\" >"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">        $table </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"<thead><tr><th>Wort</th><th>Anzahl</th><th>H&auml;ufigkeit</th></tr></thead>"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">        $table </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"<tbody>"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">        foreach </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">words as $key</span><span class="syntaxkeyword">=></span><span class="syntaxdefault">$value</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">            $key </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">            if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$key </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">                continue</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">            </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">            $table </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"<tr>"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">            $table </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"<td>$key</td><td>$value</td><td>"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">            $percent </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $value </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> 100 </span><span class="syntaxkeyword">/</span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">num_words</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">            $percent </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> number_format</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$percent</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> 2</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">            $table </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"$percent % $this->num_words</td>"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">            $table </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"</tr>"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">        $table </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"</tbody>"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">        $table </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"</table>"</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">        return $table</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">      </span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> </span>


    Ausgeben kannst du das dann mit

    PHP
    <span class="syntaxdefault">echo $wc</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">DisplayResult</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span>


    So kannst du die Tabelle auch verwerten, wenn du sie nicht ausgeben möchtest.

    Ist im Großen und Ganzen eine nützliche Klasse geworden, ein paar Sachen kann man aber noch verbessern:

    • Du solltest bei den Eigenschaften am Anfang schon Werte zuweisen, dann musst du dies nicht im Konstruktor tun
    • Was soll die Überprüfung im Konstruktor, ob $skip_words vorhanden ist, die Variable gibt es doch gar nicht?
    • Die Standard-Delimiter kannst du auch schon bei den Parametern angeben. Dann brauchst im Konstruktor nicht prüfen, ob sie leer sind.
      (Damit beschränkt sich der Konstruktor dann auf das Zuweisen der Delimiter)
    • Du kannst den Code an manchen Stellen besser einrücken, dann kommt man nicht durcheinander.
    • Die if-Abfragen sollten geschweifte Klammern erhalten, auch wenn nur eine Anweisung darin ausgeführt wird, sonst kommt man schnell zu falschen Ergebnissen, wenn man mal eben noch eine Anweisung dahinterschreibt, die eigentlich in die Abfrage sollte.
    • Die while-Schleife von CountWords lässt sich als for-Schleife bequemer lösen, damit ist sofort ersichtlich, wie die Schleife ausgeführt werden soll.
    • In einer Funktion sollte nichts ausgegeben werden, falls man die Daten hinterher vielleicht noch verarbeiten möchte. Daher solltest DisplayResult die Tabelle zurückgeben, statt sie auszugeben (auch wenn das auch noch nicht optimal ist)
    • Die Häufigkeit stimmt nach der ersten Ausführung nicht mehr, da auf die alte Wortzahl addiert wird. Es fließen also bei jeder Ausführung 14 Wörter mehr in die Berechnung der Häufigkeit ein. Dies lässt sich durch den nächsten Punkt lösen.
    • Was fehlt ist eine Reset-Funktion, die $skip_words, $search_words, $words und $num_words zurücksetzt, damit dies nicht von den Methoden ($words), bei der Ausführung ($skip_words, $search_words), bzw. gar nicht ($num_words) getan werden muss.
    • Beim HTML-Code ist noch viel zu verbessern: alles ist in einer Zeile und es werden veraltete Tags verwendet

    Sind jetzt doch ein paar mehr Sachen geworden.^^
    Fühl dich nicht davon erschlagen, dass meiste sind eh nur Kleinigkeiten.
    Solltest du bei der Verbesserung Fragen haben oder nicht weiter wissen, helfe ich dir gerne.

    Dann such ich dir mal die entsprechende Stelle heraus:

    Zitat

    Line 57, Column 427: element "iframe" undefined
    [...]
    incorrect use of the "Strict" document type with a document that uses frames (e.g. you must use the "Frameset" document type to get the "<frameset>" element),
    [...]

    Wenn du statt "strict" einen anderen Doctype verwendest, ist iframe erlaubt und es gibt keine Fehler mehr.