Beiträge von cottton

    Würde das Thema ganz gerne nochmal aufgreifen.
    Witzig: beim googlen auf diesen, meinen eigenen, Thread gestoßen :D

    Ich frag mich immernoch wie ich verschiedene Klassen zusammen bringen soll.
    Was mich dabei verrückt macht ist ein Blog o.ä. den ich mal gelesen hab. Darin ging es um Nutzung verschiedener Funktionen und Klassen ohne die Beziehungen ect dabei zu "verschleiern" aber trotzdem keine Redundanz im Code entstehen zu lassen.

    Das mach mich mitlerweile so verrückt, dass ich mit meinem eigtl simplen mini-CMS nicht mehr weiter komme :D

    Kurzes einfaches Bsp:
    Ich habe eine Klasse "Sql", welche alles per PDO(prepared statements) klärt.
    Dann noch eine Klasse "Timer", welche per ::start()/::stop() die Zeit gegebener Komponenten misst.

    Nun möchte ich in der Klasse "Sql" die Zeit der db-Aktionen mitschreiben lassen. Ist auch ganz simpel:
    starten: Timer::start('sql_titel_bla')
    stoppen: Timer::stop('sql_titel_bla')

    Aber jetzt kommts: wo setze ich richtig an?
    Nutze ich die Klasse "Timer" Innerhalb der Klasse "Sql", oder außerhalb?
    Innerhalb:

    PHP
    public static function query(...)
    {
     Timer::start('sql_titel_bla') 
     $dbh->execute() .....
     while(....){}
     Timer::stop('sql_titel_bla') 
    }


    außerhalb:

    Um "Umwege" wie zB beim 2ten Bsp zu vermeiden würde ich auf erteres tippen.
    Allerdings ist Klasse "Sql" damit von Klasse "Timer" abhängig.

    Wie wirds gemacht? =)

    Also ich hab schon mal nen "Fehler" gesehen bei:

    PHP
    if($thisdate >= $date) (Zeile 30)


    und

    PHP
    if($thisdate == $date)


    mit dem Ersten fängst Du schon alles was gößer UND gleich ist ab.
    Somit kommt beim 2ten nix mehr an.

    Zu dem "weiter"-Problem kann ich leider nix sagen. Ich versteh nicht was hier zB passieren soll:

    PHP
    $wo = ($page * 3) - 3;
       $wo++;

    Per JS (javascript) geht das.

    zB
    http://www.w3schools.com/jsref/event_onchange.asp


    (ungetestet)

    Nein. Ich denke wir gehen das Ganze mal ohne functions an.
    So könnte das Ganze funktionieren:


    Aber wie gesagt - lesen und verstehen. Sonst bringt Dir das alles nix.
    =)

    Die ganzen IFs ab Zeile 73 -> du moppelst doppelt :D
    Über die Funktion isErr() wird geprüft, ob das Feld leer oder "Bitte...." ist. Und Du prüfst extra noch in einer IF davor =)

    Und die eMail wird immer gesendet, sobald POST "senden" gesetzt ist.
    Also auch wenn Fehler vorkommen.

    Du musst die Funktion isErr() auch nicht nutzen. War nur ein Bsp wir man Wiederholungen einsparen kann.
    Und wie Du im Moment siehst hast Du nun viele Wiederholungen in den IFs ab Zeile 73.

    Ausserdem ist in der ersten IF ab Zeile 20 jetzt nur die Funktion drin :D Das mach keinen Sinn.
    Dort waren doch vorher die Fehlerabfragen drin.

    Du musst Dir den Code in ruhe ansehen und verstehen. Sonst können konische Sachen passieren und/oder Du siehst irgentwann garnicht mehr durch.
    =)

    2. dann das hier:

    PHP
    /*rechenaufgabe checken
        $_POST['zip'] ist die benutzer eingabe -- seine lösung (eingabefeld name="zip")
        $_POST['zip2'] ist der md5 hash der richtigen lösung (hiddefield name="zip2")
            es muss nun also die benutzereingabe (des benutzers lösung)
            in einen md5 hash gewandelt werden um zu prüfen, ob beide hashes gleich sind.
        */
        if(md5($_POST['zip']) != $_POST['zip2']){
            echo 'Die Rechenaufgabe ist leider falsch!';
        }


    mit in die if Abfrage

    PHP
    if(isset($_POST['senden']))


    damit es nur beim Senden des Formulars geprüft wird.

    Alternativ geht auch:

    PHP
    if(isset($_POST['senden'] AND md5($_POST['zip']) != $_POST['zip2']){
            echo 'Die Rechenaufgabe ist leider falsch!';
        }

    3.
    Naja, Du musst nun prüfen, ob ein Fehler vorkam und darauf hin handeln.
    Also wenn kein Feher vorkam, dann kannst Du per mail() (http://www.php.net/manual/de/function.mail.php) die eMail senden.
    Falls doch ein Fehler vorkam gibst Du dem Benutzer den Fehler aus.

    Es gibt viele Wege zum Ziel. Du kannst zB:

    Dann ist Javascript gefragt: http://www.w3schools.com/html/html5_video.asp
    siehe "Example 1 - HTML5 <video> - DOM Methods and Properties" tRY it yourself »

    edit:
    bei den functions makeBig() usw könntest Du dann die src des players ändern


    geht natürlich besser. nur ein bsp =)

    1. Gerne. Hab momentan nix zu schreiben, nur am lesen =)

    2. Daher lesen lesen lesen =)

    3. Die echo sind eigtl erstmal nur zur Testausgabe gedacht. Im eigtl Einsatz wirst Du sicherlich nicht alle Eingaben des Benutzers noch einmal anzeigen lassen.
    Die Funktion valOrErr sollte nur zeigen, dass man die Prüfung vieler gleicher Abläufe in einer Funktion auslagern kann.
    Ich habs mal umgestaltet. Ist halt wichtig, dass Du verstehst was da passiert.
    Ach ja - Dir fehlt ein name="senden" beim Senden Button.

    4. hab mir das mal angesehen. Ich denke ich habs verstanden =)

    5. durch if gefixt

    6. welche Weiterleitung?

    hier also mal die geänderte Version:
    (Prüfung immer vor der Ausgabe des Formulars)

    Guck mir das grad an und das erste (was eigtl nicht gefragt war :D) was ich sehe ist:
    - selected="selected" oder auch checked="checked" kann bei radio buttons / chkboxen weg. Ich halte es für sinnvoller dem Nutzer am Anfang ein komplett neutrales Formular zu übergeben.
    - bei "Anregungen/Wünsche/Sonstiges" ist ein td "kaputt" ( td> )
    - bei <select name="meinung" multiple="multiple"> bekommst Du nur eine Auswahl zurück.
    besser: <select name="meinung[]" multiple="multiple">
    durch das [] bekommst Du ein array zurück

    edit:
    also was da bei der sicherheitsabfrage passiert, kann ich nicht nachvollziehen.
    Aber den rest hab ich mal überarbeitet:

    In header() kommt kein href=""
    =)
    Bsp: header("Location: http://www.example.com/");


    $abs = "". $email .""; -- unnötig. Es reicht doch $abs = $email; =)


    $von = "From: Kegelverein ''Die Totenköpfe'' Neustadt e.V. <". $empfaenger .">";
    '' brauchst Du nicht. Du kannst auch " nutzen, indem Du denString mit ' beginnst.
    Im Bsp:
    $von = 'From: Kegelverein "Die Totenköpfe" Neustadt e.V. <'. $empfaenger .'>';
    (Du kannst " oder ' nutzen. Bei Nutzung von ' wird alles innerhalb der Zeichenkette als String/Text behandelt. Bei Nutzung von " kann auch eine variable in der Zeichenkette genutzt werden.)


    Zu UTF8:
    Guck Dir das hier mal an: http://www.php.net/function.mail#111124
    Ich nutze diese Variante seit ... schon immer. Funktioniert einwandfrei.
    Wenn Du nicht alles von dort übernemen möchtest, dann sieh Dir den header mal an: 'Content-Type: text/html; charset="UTF-8";'

    PS
    Da hab ich auch noch allegmein eine Frage, wenn ich das dann an meinen Provider für die Page schicke (den ich noch nicht habe), dann muß ich ja eh die Pfade anders angeben, weil dort heißt das Laufwerk ja vll nicht C wo die page gespeichert ist. oder wie funktioniert das dann?)


    Was Du angibst sind "Absolute Pfade".
    Nimm aber mal "Relative Pfade".

    Heißt anstatt: C:\ahomepage\im translator audio2.mp3
    scheibst Du: im translator audio2.mp3

    btw: Leerzeichen weg und Ordner + Dateien am besten immer klein schreiben.
    Warum:
    Dateiname: "Datei.xyz"
    im Code benutzer Name: "datei.xyz"
    unter Windows funktioniert es, unter Linux (auf dem Webserver) nicht

    Formatsache.
    siehe "Audio Formats and Browser Support": http://www.w3schools.com/html/html5_audio.asp

    Um fast alles abzudecken nimm .wav Dateien.
    Um den IE dann noch abzudecken .mp3 oder .ogg Dateien.

    Im Bsp sieh das dann so aus:

    HTML
    <audio controls>
      <source src="horse.ogg" type="audio/ogg"> <!-- hier greift zB der IE zu -->
      <source src="horse.mp3" type="audio/mpeg"> <!-- und hier greifen "die anderen" Browser zu -->
    Your browser does not support the audio element. <!-- und das hier erscheint, wenn der browser kein HTML5 audio unterstützt (und kein javascript aktiviert ist glaub ich) -->
    </audio>


    hier: http://www.w3schools.com/tags/tag_audio.asp findest du auch noch Optionen wie zB "autoplay" ect.
    zB:

    HTML
    <audio controls autoplay loop>
    ...
    </audio>


    =)

    Meldung: Die Eigenschaft "onload" eines undefinierten oder Nullverweises kann nicht abgerufen werden.


    Weiß jetzt nicht was da passiert, aber offensichtlich soll (laut Meldung) soll ein xyz.onload angesprochen werden, wobei xyz (das Element?) nicht definiert ist.
    Kurz: onload ist auf dem Element nicht definiert. (ich tippe auf var Trigger)