Ankündigung

Einklappen
Keine Ankündigung bisher.

AJAX/PHP Gästebuch - Konzept/Design ?

Einklappen

Neue Werbung 2019

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

  • AJAX/PHP Gästebuch - Konzept/Design ?

    Hallo, Experte.
    @Mods.
    Ich entschulide mich sofort falls ich doch in Einsteiger-bereuch posten sollte. Wenn ihr denkt, da wirds besser sein: You're the boss

    Also. Wie der Threadname schon sagt, ich möchte ein eigenes AJAX/PHP gäste buch basteln! Ja ihr habt recht. Es is nicht neues, radikales oder weltbewegendes, aber es ist, meiner meineung nach, ein guter Anfang um meine Kentnisse ins Langzeitgedächnus zu bringen.

    Im moment gibts nich so viele Ziele:
    - auslesen aller Nachrichten
    - einfügen (+ Auslesen des letzten Beitrages)
    - editieren

    Im moment habe ich schon eine PHP/Mysql version meines Gästebuches, aber ich bin mir ziemlich sicher solche funktionen wie :
    PHP-Code:



    function GetEntries()
    {
        
    $database = new mysqli(DB_HOSTDB_USERDB_PWDDB_DEF_BASE) or die("Server Connect Error # ".mysqli_error()."<br />Kann keine Verbindung erstellen");
        
    $sql_select_entries "SELECT * FROM `tbl_guest_book` ORDER BY `added` ASC";
        
    $results $database->query($sql_select_entries);
            
    $selektiert $results->num_rows;
            if(
    $selektiert <= 0)
              {
                 
    $msg utf8_encode("keine Einträge in der DB");
                 echo 
    $msg;
                 
              }
              else
              {
                
    $msg_counter 1;
                while (
    $row $results->fetch_object())
                {
                    
    $edit = ($row->modified) ? "letzte &Auml;nderung [".date("j. M Y H:i",strtotime($row->modified))."]" "" ;
                            echo 
    "<table class=\"content\">\n" .
                                 
    "<tr>\n" .
                                 
    "\t<th id=\"gb_entry_user\">\n" .
                                 
    "\t<a href=\"http://" $row->web "\" title=\"{$row->nickname}'s WebPage\" >" $row->nickname "</a>\n" .
                                 
    "\t</th>" .
                                 
    "\t<th id=\"gb_entry_date\">\n" date("j. M Y \\<\i\> H:i \\<\\i\>",strtotime($row->added)) .
                                 
    "\t</th>\n" .
                                 
    "</tr>\n" .
                                 
    "<tr>\n" .
                                 
    "\t<td id=\"gb_etry_msg\" colspan=\"2\">\n\t" nl2br(convert_bbcodes($row->msg)) .
                                 
    "\n\t</td>\n" .
                                 
    "</tr>\n" .
                                 
    "<tr>\n" .
                                 
    "\t<td id=\"gb_entry_msgID\">\n" .
                                 
    "\t#&nbsp;<a href=\"#\">" $msg_counter ."</a>\n" $edit .
                                 
    "\t</td>\n" .
                                 
    "\t<td id=\"gb_entry_funcs\">\n".
                                 
    "\t<a class=\"edit\" href=\"edit_entry.php?id=".$row->msgID."\">edit</a>\n" .
                                 
    "<a class=\"del\" href=\"?delete_entry=".$row->msgID."\">delete</a>\n" .
                                 
    "\t</td>\n" .
                                 
    "</tr>\n</table>\n";
                                 
    $msg_counter++;
                }
              }
        
    $results->free();
        
    $database->close();

    sind nicht optimal oder eher nicht estetisch. Irgendwie habe ich das gefühl ,dass solche ausgabe per "echo" falsch sind. Bestimmt gibt es eine elegantere/professionele Lösung. Ich brauche feedback und hilfe um mein Projekt, vielleicht, ein bisschen Professionelle nennem zu dürfen.

    vielleicht soll ich auch eigene klassen dazu schreiben, damits weniger code wirdm, etc. Ich möchte ein paar vorschläge hören wie man so was am besten/optimalsten machen würde. Welche gängigste methoden gibt und welche Pro/Contas gibt bei der Realisierung.
    Angehängte Dateien
    Deutsch ist nicht meine Muttersprache

  • #2
    Eleganter wäre auf jeden Fall eine Trennung von Code (php) und Layout (html), schau mal in Richtung Template-Engine, MVC-Struktur.

    Ein guter Einstieg wäre vielleicht mal das Tutorial zum Thema Gästebuch auf Basis des APF von Dr. E

    Gstebuch-Tutorial :: Adventure PHP Framework (APF)
    [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
    | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

    Kommentar


    • #3
      hallo, robo47!
      ich habe mir das tut angeguckt unf das sieht zimlich vortgeschritte naus, auf jeden fall für mich (anfänger). Ausserdem habe keinerlei erfahrungn mit PHP frameworks. Nach dem ich mir ERM-Modell für DB angeguckt habe war mir schon klar dass ich noch weit weg von solcher konzepte bin, und nach dem php-code in teil 2 war mir 100% klar: it's out of my league

      Ich werd mir Template-engine angucken ...
      Deutsch ist nicht meine Muttersprache

      Kommentar


      • #4
        Schau dir doch vielleicht mal Codeigniter an. Dr. E's Framework mag genial sein, es ist aber auch eine Hürde beim Einarbeiten.

        Sonst würde ich dir empfehlen zuerst einmal einen groben Plan auzustellen welche Entitäten es in einem Gästebuch gibt, wie sie interagieren und daraus erstmal ein Klassendiagramm zu erstellen.

        Kommentar


        • #5
          Zitat von cetalian Beitrag anzeigen
          Schau dir doch vielleicht mal Codeigniter an. Dr. E's Framework mag genial sein, es ist aber auch eine Hürde beim Einarbeiten.
          Naja was die PHP frameworks angeht da versteh ich nicht ganz wie es überhaupt funktioniert (finde den zisammenhang zwischen einen Framework und PHP sprache nicht ) und aus diesem grund habe ich mich immer davon ferngehalten.....
          Zitat von cetalian Beitrag anzeigen
          Sonst würde ich dir empfehlen zuerst einmal einen groben Plan auzustellen welche Entitäten es in einem Gästebuch gibt, wie sie interagieren und daraus erstmal ein Klassendiagramm zu erstellen.
          Ok, das könnte tatsächlich nen anfang sein. immerhin sollte es auch etwas einfaches sein, ich mein, im moment möchte keine Captcha, Login o.ä. einbauen.
          Ne MySQL tabelle habe ich schon:
          Code:
          +----------+---------------+------+-----+-------------------+----------------+
          | Field    | Type          | Null | Key | Default           | Extra          |
          +----------+---------------+------+-----+-------------------+----------------+
          | msgID    | int(4)        | NO   | PRI | NULL              | auto_increment |
          | nickname | varchar(32)   | YES  | MUL | NULL              |                |
          | email    | varchar(32)   | YES  |     | NULL              |                |
          | web      | text          | YES  |     | NULL              |                |
          | msg      | text          | YES  |     | NULL              |                |
          | added    | timestamp     | YES  | MUL | CURRENT_TIMESTAMP |                |
          | modified | timestamp     | YES  |     | NULL              |                |
          | ip       | varchar(15)   | YES  |     | NULL              |                |
          | allowed  | enum('Y','N') | YES  |     | N                 |                |
          +----------+---------------+------+-----+-------------------+----------------+
          Deutsch ist nicht meine Muttersprache

          Kommentar


          • #6
            Hehe, ja ich erinnere mich auch an die Zeiten wo ich vor der Idee von Controllern und Views stand und mir gedacht hab "Geil, aber wie bekomm ich das in meine 1000 Zeilen PHP/HTML/Kommentardateien rein?" .

            Codeigniter spricht über einen Front-Controller je nach URL immer einen anderen Controller an, erzeugt also ein Objekt davon und führt eine Funktion aus, alles nach dem Schema: http://www.deineseite.de/index.php/c...er1/parameter2

            Du kannst also nun deine Geschäftslogik (alles was auf PHP Seite Dinge errechnet, Daten beschafft und sie aufbereitet) in einen Controller auslagern. Dafür musst du nur eine neue Controller Klasse erstellen und vom original Controller erben lassen, alle Controller liegen unter system/application/controller (wenn ich mich nicht täusche, ewig nix mehr gemacht).

            Diese Controller können nun noch etwas anzeigen per "views", das sind Dateien die sich wiederrum um nichts kümmern als vorhandene Informationen anzuzeigen und graphisch (!) aufzubereiten. Das kannst du in einem Controller per $this->load->view('name', $daten); erreichen. $daten ist dabei ein assoziatives Array welches in key->value pairs deine aufbereiteten Daten aus dem Controller enthält. In der View datei (zu erstellen/finden unter system/application/views) kannst du die keys nun als normale Variablen nutzen und damit arbeiten.

            Ich denke wenn du erstmal ein paar Controller anlegst, sinnvolle Methoden implementierst und ein paar Views schreibst kommst du ganz fix rein. Ich bin momentan im Unistress und hab auch nix gescheites hier, sonst würde ich dir mal ein Beispiel hochladen. Ich bin mir sicher sowas findet man auch in der Codeigniter Doku.

            Im Allgemeinen ist also der Ablauf Request -> Frontcontroller -> Controllermethode (die du "füllst) -> View (die in der Controller Methode ausgegeben wird).

            (Disclaimer: Ich bin mir bewusst, dass es Models geben sollte. Ich weiß Codeigniter ist kein wundervolles HMVC Framework etc aber man muss ja nicht zuviel auf einmal lernen )

            Und als Klassendiagramm meinte ich eher ein Klassendiagramm, keine SQL-Tabelle . Vielleicht im Sinne von "Ein Gästebuch hat eine Liste von Einträgen". Oder "Ein Administrator ist ein User"

            Kommentar


            • #7
              Bevor Du mit Codeigniter arbeitest, schau Dir lieber Kohana V.3 HMVC-Framework an.
              Komplett in PHP5, schöner und verständlicher Code und nicht zu überladen

              Hier die aktuelle Version
              Kohana v3.x - Files - Kohana Development

              Hier die Dokumentation
              What is Kohana? | Kodoc

              Nochmal eine ausführlichere Doku.
              Unofficial Kohana 3.0 Wiki >> start

              Kommentar


              • #8
                Also mal abseits dem ganzen Framework gerede (kA wie sinnvoll das für einen Anfänger ist )

                Wenn ich mir deine Funktion anschaue, fallen mir folgende Sachen ein:
                1. Unflexibel
                • Was wenn du mal sehr viele Einträge hast? Da wäre eine Seitenanzeige (Stichwort Pagination) sinnvoll
                • Ausgabe vom PHP Code wie schon von Robo genannt umbedingt trennen
                • Datenbank eher ausserhalb der Funktion aufbauen

                2.
                PHP-Code:
                 "\t<a href=\"http://" $row->web "\" title= 
                was wenn der Benutzer keine Seite hat?
                Momentan wird da ein http:// Link erzeugt
                3. Wie sieht es mit deinem OOP Wissen aus?
                Falls keines Vorhanden ist, würde ich mich da einlesen und mal ein paar Klassen dafür erstellen, bevor du kein OOP Wissen hast, bringen dich Frameworks nicht wirklich weiter.

                Kommentar


                • #9
                  Zitat von ragtek Beitrag anzeigen
                  ...[LIST][*]Was wenn du mal sehr viele Einträge hast? Da wäre eine Seitenanzeige (Stichwort Pagination) sinnvoll
                  Ja das habe ich vergessen in meine "to Do" liste einzusetzen. 20 Einträge/seite wäre passend. Ich habe mir schon gedanken gemacht, das einzige was mit eingefalles ist per COUNT anzahl der datensätze in DB dann durch anzhal_der_eintraege_pro_seite (z,B 20.) und dann in Kombinatino mit LIMIT
                  Zitat von ragtek Beitrag anzeigen
                  Ausgabe vom PHP Code wie schon von Robo genannt umbedingt trennen
                  Das war ja auch der target-point mummer 1. Deswegen auch hier gepostet. Versuch grad irgendwelche anfänger tutorials für Template-Enigine zu finden...
                  Zitat von ragtek Beitrag anzeigen
                  PHP-Code:
                   "\t<a href=\"http://" $row->web "\" title= 
                  was wenn der Benutzer keine Seite hat?
                  Die sache mit der Website war nicht von anfang an da. Die entsprechen Spalte war erst vor kurzen eingefügt und bei der Ausgabe habe ichs übersehen (wieder zum Punkto : PHP und HTML trennen). z.B. feature mit "Letzte Änderung..." gabs von anfang an, deswegen auch halbwegs gelöst
                  Zitat von ragtek Beitrag anzeigen
                  3. Wie sieht es mit deinem OOP Wissen aus?
                  Falls keines Vorhanden ist, würde ich mich da einlesen und mal ein paar Klassen dafür erstellen, bevor du kein OOP Wissen hast, bringen dich Frameworks nicht wirklich weiter.
                  Also OOP kentnisse gibs, aber wenig in PHP, deswegen auch "so eine Angst" vor Frameworks...hast schon richtig erkannt

                  @ all
                  Danke für den Feedback und Kritik.
                  Deutsch ist nicht meine Muttersprache

                  Kommentar


                  • #10
                    Weil ichs gerade lese
                    Zitat von bugzz Beitrag anzeigen
                    vielleicht soll ich auch eigene klassen dazu schreiben, damits weniger code wirdm, etc. Ich möchte ein paar vorschläge hören wie man so was am besten/optimalsten machen würde. Welche gängigste methoden gibt und welche Pro/Contas gibt bei der Realisierung.
                    Anfängerfehler Nr.1 => Klassen = weniger Code

                    Das stimmt so sicher nicht, mit Klassen ist es mehr Code
                    Aber will hier keine Diskussion OOP Pro / Contra starten^^

                    Kommentar


                    • #11
                      Also ein Framework oder eine Template Engine halte ich in diesem Fall für stark übertrieben.
                      Hier ist ein interesannter Artikel mit hilfreichen Tipps zum Thema "PHP und HTML sauber trennen". IMHO die perfekte Lösung für kleinere Anwendungen.

                      Template Engine nur mit PHP

                      Kommentar


                      • #12
                        Zitat von ragtek Beitrag anzeigen
                        Weil ichs gerade lese

                        Anfängerfehler Nr.1 => Klassen = weniger Code

                        Das stimmt so sicher nicht, mit Klassen ist es mehr Code
                        Aber will hier keine Diskussion OOP Pro / Contra starten^^
                        Ja stimmt haste auch recht. Aufjedenfall wollte ich bisschen professioneller machen, wobei ich grade sehe, dass ich noch einiges lernen muss bevor ich in die richtung "Pro-PHP-coding" gucke....
                        Deutsch ist nicht meine Muttersprache

                        Kommentar


                        • #13
                          Wieso führen Klassen zu mehr Code? Wenn ich eine Funktion habe die "Hallo Welt!" ausgibt vielleicht, wenn ich tausendfach genutzte Funktionalität auf einer Website sauber kapsele wird der Overhead schon deutlich geringer.

                          Trotzdem denke ich, dass wenn man schon von Template Engines spricht er sich einfach ein simples MVC Framework angucken sollte. Meiner Meinung nach sind Dinge wie Smarty einfach sinnlos, grad für Anfänger. Aber gut, darüber kann man wahrscheinlich Jahre streiten.

                          Kommentar


                          • #14
                            Wieso führen Klassen zu mehr Code?
                            Gegenüber einer guten prozeduralen Programmierung tun sie das definitiv.
                            [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


                            • #15
                              Zitat von cetalian Beitrag anzeigen
                              ..... Meiner Meinung nach sind Dinge wie Smarty einfach sinnlos, grad für Anfänger. ....
                              Warum? So schwer für php-newbies ?
                              Deutsch ist nicht meine Muttersprache

                              Kommentar

                              Lädt...
                              X