Ankündigung

Einklappen
Keine Ankündigung bisher.

[Mitmachquiz] Gästebuch mit beliebiger Datenbank

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Mitmachquiz] Gästebuch mit beliebiger Datenbank

    Da ich einfach mal Bock habe und sehen möchte, was so passiert, eröffne ich hiermit das Mitmachquiz, über dessen Sinn und Nutzen weiterhin hier diskutiert werden kann: http://www.php.de/off-topic-diskussi...eser-site.html .

    Bei diesem Quiz kann jeder User von php.de mitmachen und eine eigene Lösung für das gestellte Problem entwickeln. Natürlich können sich auch mehrere User zusammenschließen und an einer gemeinsamen Lösung feilen, sollte das Know-How des Einzelnen für die Aufgabe noch nicht ausreichend genug sein.

    Das Ziel dieser Übung soll sein, selbständig eine Lösung für ein gegebenes Problem zu entwickeln und umzusetzen.

    Am Ende, nach Ablauf der Abgabefrist, würde ich mich über mehrere unterschiedliche Lösungen freuen, an denen man verschiedene Ansätze für ein und dasselbe Problem analysieren und bewerten kann.

    [Aufgabenstellung]

    Es soll ein Gästebuch für eine Webanwendung programmiert werden, das sich dadurch auszeichnet, dass es durch wenige Anpassungen eine beliebige andere Datenbank (MySQL-Datenbank, Textdateien, .xml-Dateien, .csv-Dateien, o.ä.) zur Speicherung der Einträge nutzen kann.
    Für diese Aufgabe sind mindestens 2 verschiedene Datenquellen zu nutzen.


    Gefordert sind pro Gästebucheintrag 2 Angaben, die über ein HTML-Formular von Besuchern der Website eingegeben werden müssen:
    • der Name des Autors
    • der Text/die Nachricht

    Außerdem soll noch das Datum und die Uhrzeit des Eintrags abgespeichert werden. Ein Datensatz besteht also aus 3 Werten (bzw. 4, wenn man Datum und Uhrzeit voneinander getrennt betrachtet). Es soll nur das Schreiben der Daten in die Datenbank und das Auslesen implementiert werden. Eine Löschfunktion ist für diese Aufgabe nicht vorgesehen.

    Die Austauschbarkeit der Datenbank sollte so einfach wie möglich für einen Programmierer ausführbar sein.
    Betrachtet man eine Datenbank als ein Objekt, dass nicht im geringsten etwas über die eigentliche Anwendung weiß und lediglich Daten abspeichert und festhält, sollte es der Anwendung nicht viel ausmachen, wenn man ein Datenbankobjekt gegen ein Anderes austauscht. Lediglich das Auslesen und das Eintragen der Daten durch die Applikation unterscheidet sich von Datenbank zu Datenbank und sollte dazu angepasst werden müssen, da MySQL-Abfragen zum Beispiel bei einer Textdateien-Datenbank natürlich wenig Sinn machen.

    Ein unvorteilhafter Ansatz nutzt Code zum Auslesen der Werte direkt an der Stelle, an der die Werte benötigt werden:
    PHP-Code:
    <?php
    $sql 
    "SELECT  
              `author`                                        , 
              `text`                                          , 
              DATE_FORMAT(`date`, '%d.%m.%Y') as `date_format` 
            FROM 
              `table` 
            ORDER BY 
              `date`"
    ;
    $result mysql_query($sql) OR die (mysql_error());

    while (
    $row mysql_fetch_assoc($result)) {
      
    ?>
    <p>
      <?php echo $row['author'] . ' - ' $row['date_format']; ?>
    </p>
    <p>
      <?php echo $row['text']; ?>
    </p>
      <?php
    }
    Ein Austausch der MySQL-Datenbank mit z.B. einer .xml-Dateien-Datenbank hätte zur Folge, dass sämtliche Datenbankabfragen in sämtlichen Dateien entfernt und durch entsprechende Abfragen zum Auslesen der Daten aus einer XML-Datei ersetzt werden müssten. Damit erst mal genug zu den Vorüberlegungen!

    Welche 2 Datenbanken für diese Aufgabe genutzt werden, bleibt euch überlassen.

    In der Abgabe sollte deutlich werden, wie das Austauschen der Datenbank funktionieren soll, also an welchen Stellen der Programmierer beim Austausch erneut Hand anlegen müsste.

    Der Sinn dieser Aufgabe besteht darin, für das Thema Schichtenarchitektur einer Softwareanwendung sensibilisiert zu werden. Die Datenschicht soll größtmöglich von der Präsentationsschicht (dem Front-End) und der Logikschicht entkoppelt werden, um einen einfachen Austausch der Datenbank zu ermöglichen. Das muss kein objektorientierter Ansatz sein.

    [Der Ablauf]

    Ich habe leider keine Erfahrung, wie viel Zeit für die Bearbeitung einer solchen Aufgabe sinnvoll sein könnte, daher will ich einfach mal einen Zeitraum von 1 Monat angeben, in der die Aufgabe gelöst sein muss. Die Abgaben können direkt hier in diesem Thread eingereicht werden, eine andere Möglichkeit sehe ich im Moment nicht. Allerdings sollte die Lösung frühestens 1 Woche vor Ablauf der Frist hier gepostet werden. Im eigenen Interesse sollten andere User diese Lösungen dann nicht einfach abkupfern, sondern so fair sein (auch sich selbst gegenüber) und auf copy & paste verzichten.

    Während des Quiz' können natürlich grundsätzliche Fragen zum Thema gestellt werden. Fragen nach Fehlern im Code oder Teillösungen möchte ich aber bitte nicht in diesem Thread finden. Es geht hierbei um Eigenleistung (ob alleine oder wie gesagt in einer kleinen Gruppe), Programmfehler sind also selbst zu lösen. Wer sicht nicht motiviert fühlt, ein Problem ohne Hilfe aus den Programmierforen lösen zu wollen, ist hier falsch und sollte auf eine Teilnahme verzichten.

    Standardquellen für aufkommende Fragen sind:
    PHP: Hypertext Preprocessor
    Wikipedia – Die freie Enzyklopädie
    Google

    Auch sollten die Programmierforen nicht dazu missbraucht werden, Fragen zu dieser Aufgabe zu stellen. Sämtliche Fragen also bitte ausschließlich und direkt in diesem Thema stellen.

    Abgabefrist: 31.08.2010 (frühester Zeitpunkt für die Abgabe: 24.08.2010)

    Bei Verbesserungshinweisen zur Aufgabenstellung, Unklarheiten o.ä. bitte einfach posten. Sollte die Abgabefrist zu kurz oder zu lang sein, bitte ebenfalls hier beschweren.

    Hinweis: User, die teilnehmen möchten, sollten sich mit einem kurzen Posting hier melden, damit man einen Überblick über die Nachfrage erhält und weitere User sich einfacher mit bereits teilnehmenden Usern zusammenschließen können.

    [verspätetes Update]

    Mit dem Einverständnis der Moderatoren gilt nun für alle Teilnehmer: Für die Abgabe erstellt ihr bitte ein eigenes Thema im Forum OffTopic mit dem Threadtitel-Präfix [Abgabe:Mitmachquiz]
    [Alle Abgaben auf einen Blick]
    [URL]http://hallophp.de[/URL]

  • #2
    Und was ist der Hauptgewinn?
    Viele Grüße,
    Dr.E.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1. Think about software design [B]before[/B] you start to write code!
    2. Discuss and review it together with [B]experts[/B]!
    3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
    4. Write [I][B]clean and reusable[/B][/I] software only!
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Kommentar


    • #3
      Bin dabei!

      Kommentar


      • #4
        Und was ist der Hauptgewinn?
        Der Gewinner darf sich selbst auf die Schultern klopfen. Aber nur 2 mal.
        Bin dabei!
        Freut mich.
        [URL]http://hallophp.de[/URL]

        Kommentar


        • #5
          Und was ist der Hauptgewinn?
          Ein Praktikum beim Wettkönig
          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar


          • #6
            Bin aber dank Klausuren bis zum 11.08 mindestens beschäftigt. We'll see.

            Kommentar


            • #7
              Sieht hübsch aus - die Aufgabe - mal sehn, ob ich noch soviel Wissen aneignen kann, da mitzuspielen - aber es ist ein Ansporn, es zumindest zu versuchen, um zu sehen, wie weit man kommt.

              Kommentar


              • #8
                @Asipak: Vlt. wäre es super wenn du noch ein paar Dummywerte liefern würdest. Heißt nen Dump für MySQL, Textdatei, XML und CSV. So wirds für dich später angenehmer zu testen weil alle auf der selben Struktur arbeiten.

                Kommentar


                • #9
                  Hmm, naja, das schränkt die Aufgabe zu sehr ein, finde ich. Welche Struktur man für die Geeignetste hält, muss man sich ja als Entwickler auch selbst überlegen. Außerdem würde es mich interessieren, ob sich einige User überlegen, wie sie die Trennung der Datensätze zum Beispiel in Textdateien realisieren. Wird ein bestimmtes Trennzeichen verwendet, muss man zusehen, dass man diese aus der Benutzereingabe wegradiert oder man lässt sich etwas anderes einfallen.
                  Gerade das macht so eine Aufgabe ja aus, finde ich, dass es verschiedene Lösungen gibt und man dann über Vor- und Nachteile jeder Lösung diskutieren kann.

                  Gruß
                  [URL]http://hallophp.de[/URL]

                  Kommentar


                  • #10
                    Die Idee gefällt mir. Bin dabei.

                    Kommentar


                    • #11
                      Zitat von nikosch Beitrag anzeigen
                      Ein Praktikum beim Wettkönig
                      Unbezahlbar!

                      Ich würde ja gerne die Musterlösung erstellen, aber ich bin leider bis Ende des Jahres ausgebucht.
                      Viele Grüße,
                      Dr.E.

                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                      1. Think about software design [B]before[/B] you start to write code!
                      2. Discuss and review it together with [B]experts[/B]!
                      3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
                      4. Write [I][B]clean and reusable[/B][/I] software only!
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                      Kommentar


                      • #12
                        Die Teilnehmer würden deine Musterlösung eh nicht verstehen

                        Kommentar


                        • #13
                          Dann ist ja alles geritzt.
                          Viele Grüße,
                          Dr.E.

                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          1. Think about software design [B]before[/B] you start to write code!
                          2. Discuss and review it together with [B]experts[/B]!
                          3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
                          4. Write [I][B]clean and reusable[/B][/I] software only!
                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                          Kommentar


                          • #14
                            Hallo,

                            super! Bin dabei

                            Beschäftige mich schon ne Weile mit PHP, hab aber leider dieses Jahr keinen Praktikumsplatz ergattern können. So nutz ich die Sommerferien nun eben fürs Selbststudium. Da kommt mir so ein Quiz gerade Recht

                            Eine Frage hätt ich aber noch:
                            Nimmt sich dann wirklich ein Profi die Zeit um meine Lösung unter die Lupe zu nehmen oder wird zum Schluß nur die beste Lösung genannt? Wär dann nämlich schon dankbar für Kritik jeglicher Art!
                            Hilfe, mein Ball ist umgekippt!

                            Kommentar


                            • #15
                              Ich bin nicht wirklich ein Profi, aber ich denke die Aufgabe ist eher trivial für mich da ich schon einiges gemacht habe. Wenn ich die Zeit finde schaue ich mir deinen Code natürlich gerne an!

                              Kommentar

                              Lädt...
                              X