Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

Erstellen Sie ein Newsletter-System mit PHP und MySQL

by
Difficulty:AdvancedLength:LongLanguages:

German (Deutsch) translation by Katharina Nevolina (you can also view the original English article)

Erstellen Sie ein Newsletter-System mit PHP und MySQL

Heute werden wir ein Newsletter-System mit PHP mit MySQL-Hintergrund erstellen.  Das Tutorial behandelt den Aufbau eines Systems, das mehrere Newsletter-Listen und das Senden von Nachrichten an bestimmte Listen ermöglicht.

Hey Leute, also werden wir ein ziemlich komplexes Newsletter-System aufbauen, also lassen Sie uns anfangen!  Sie benötigen zwei Ressourcen für das Projekt.

  • Das Silk Symbol-Set wird verwendet, um der Anwendung ein gewisses visuelles 'Flair' zu verleihen.
  • Der Swift PHP Mailer wird verwendet, um unsere Emails zu versenden.

Schritt 1: Erstellen Sie das Anwendungsskelett

Wenn ich ein Projekt starte, lese ich gerne die Ordner, bevor ich mit dem Programmieren beginne, also machen wir das jetzt.  Erstellen Sie zuerst das gesamte Projektverzeichnis.  Erstellen Sie als Nächstes einen Ordner namens admin in Ihrem Projektordner.  Fügen Sie dann im admin-Ordner zwei Ordner namens media und swift hinzu.  Erstellen Sie schließlich einen Ordner namens images im Medienverzeichnis.  Außerdem können Sie den Swift-lib-Ordner innerhalb des von uns erstellten swift-Ordners platzieren.  Sie können auch die sechs Seidensymbole kopieren, die wir verwenden werden:

  • bullet_green.png
  • bullet_red.png
  • löschen.png
  • email_go.png
  • find.png
  • page_edit.png

Ich werde das Rest-Tutorial zum Erstellen des CRUD strukturieren: Erstellen, lesen, aktualisieren und löschen für vier unserer sechs Modelle.  Ein anderer wird von anderen Aktionen bearbeitet, und der sechste wird nicht die CRUD-Aktionen erstellen.

Jetzt erstellen wir zuerst unsere Datenbank und unsere Tabellen werden später progressiv erstellt.  Wir werden jetzt anfangen zu programmieren.  Ich nehme auch an, dass wir mit Dateien in unserem Admin-Ordner arbeiten werden, sofern ich nicht anders vorschlage, da sich der meiste Code in diesem Ordner befindet.


Schritt 2: Anwendungskonfiguration

Jede Anwendung wird irgendeine Art von Konfigurationsdatei haben, und wir werden unsere jetzt erstellen.  Gehen Sie voran und erstellen Sie eine Datei namens config.php und fügen Sie Folgendes hinzu:

Der erste Abschnitt richtet also unsere Datenbankvariablen ein. Stellen Sie also sicher, dass Sie sie so bearbeiten, dass sie Ihre lokale Konfiguration aktualisieren.  Unser nächster Klappentext richtet einige Email-Attribute ein, die wir später verwenden werden.  Der letzte Abschnitt startet unsere Sitzung, damit wir darauf zugreifen können, benötigen Sie unsere Datei classes.php (wir erstellen diese in nur einer Sekunde), legen Sie die Standardeinstellungen für einige Layoutoptionen fest und setzen Sie die Fehlerberichterstattung auf 0, um ärgerliche Warnungen zu stoppen.  Wenn Sie jedoch Probleme zu haben scheinen, versuchen Sie diese Zeile zu kommentieren.

Jetzt machen Sie weiter und erstelle unsere classes.php Datei und fügen Sie hinzu:

Das ist ein riesiger Code, und ich werde es durchgehen.  Unsere erste Funktion wird ausgeführt, wenn der Benutzer unsere Anmeldung sendet und die Daten dann an unsere Funktion check_username_and_pw sendet.  Unsere logged_in-Funktion gibt einfach zurück, ob ein Benutzer angemeldet ist.  Unsere login_required-Funktion überprüft, ob wir eingeloggt sind, und schickt uns andernfalls auf die Anmeldeseite.

Die nächste Funktion, die einfach query () genannt wird, erzeugt eine Abfrage in unserer Datenbank und wurde von Jeffrey Way erstellt.  Ich habe die Verknüpfungs- und Schließfunktionen hinzugefügt, um es noch einfacher zu machen.  Unsere nächste Funktion, die ich speziell für die Ausführung von COUNT SQL-Abfragen entwickelt habe, und unsere check_username_and_pw-Funktion prüft, ob wir einen Benutzer mit der gleichen Email und dem Hash-Passwort von MD5 finden. Wenn ja, setzen wir unsere Sitzungsvariablen.


Schritt 3: Anwendungslayout

Unsere nächste Datei, an der wir arbeiten werden, ist unsere Datei layout.php, also machen Sie weiter und erstellen Sie sie.  In unserem Kopfbereich deklarieren wir einfach unsere regulären XHTML-Deklarationen.  Wenn Sie bemerken, fügen wir den Titel der Seite automatisch zu einer anderen Zeichenfolge für unseren Titel hinzu.  Dann haben wir ein Stylesheet (machen Sie das auch in unserem Medienordner).  Danach öffnen wir unser body-Tag und prüfen, ob wir ein Mini-Layout haben wollen, und fügen Sie dann eine Klasse hinzu.  Dann haben wir unseren Header und überprüfen dann, ob wir unsere Navigation haben wollen, und wenn wir das tun, zeigen wir unsere Tabs.  Ich fügte auch eine Möglichkeit hinzu, eine aktuelle Klasse für jede Registerkarte hinzuzufügen.  Wir haben dann auch einen Logout-Link und dann haben wir unseren Container div.  In diesem Fall fügen wir einen h3-Tag mit unserem Titel hinzu und geben dann unseren Inhalt wieder.

Jetzt werden wir unsere index.php-Seite erstellen, damit wir stylen können.  Öffnen Sie index.php und fügen Sie hinzu:

Also benötigen wir unsere Konfigurationsdatei, richten unseren Titel ein und richten dann unsere Inhaltsvariable ein und benötigen dann unsere Layoutdatei.  Wenn Sie es zum ersten Mal öffnen, sollte es wie folgt aussehen:


Öffnen Sie nun unser Stylesheet.  Ich verwende gerne die in TextMate komprimierten 960.gs Reset- und Typographiestile.  Der obere Teil meiner CSS-Datei sieht folgendermaßen aus:

Lassen Sie uns zuerst unsere Hauptelemente stylen, fügen Sie die folgenden Stile hinzu:

Jetzt sollte Ihre Seite wie folgt aussehen:


Wenn wir nun die Tabs mit einem Nav-Hintergrund und dann einem Hover-Hintergrund auf jedem der Links gestalten, sollten Sie sehen:


Jetzt, während wir an der Datei arbeiten, können Sie die folgenden Stile für unser Minilayout, Formulareingaben, Tabellen, große Links und unsere Fehler- und Erfolgsmeldungen hinzufügen.

Das sind einige Stile, die ich gerne in all meinen Projekten verwende.  Nachdem wir das Layout fertiggestellt haben, werden wir mit der Authentifizierung fortfahren.


Schritt 4: Authentifizierung

Wir werden mit einem sehr einfachen Authentifizierungssystem arbeiten.  Erstellen Sie eine login.php und platzieren Sie folgendes in:

Ich erkläre jeden Teil des Codes.  Zuerst benötigen wir unsere Konfigurationsdatei.  Als nächstes prüfen wir, ob wir eingeloggt sind, und wenn wir es sind, werden wir nach Hause umleiten.  Als nächstes setzen wir den Titel und unsere Layout-Optionen.  Dann überprüfen wir, ob wir einen POST haben und ob der POST einen Benutzernamen und ein Passwort hat, und wenn das der Fall ist, rufen wir die Funktion validate_user aus unserer Klassendatei auf.  Als nächstes setzen wir den Variablenfehler auf unsere Sitzungsfehler, und dann richten wir unser Formular ein und geben etwaige Fehler aus.  Jetzt erstellen wir unsere Abmeldeseite. Erstellen Sie also logout.php und fügen Sie Folgendes hinzu:

Wir benötigen erneut unsere Konfigurationsdatei, setzen unsere Sitzung auf ein leeres Array, zerstören dann unsere Sitzung und leiten auf unsere Anmeldeseite um.  Nachdem Sie das alles getan haben, sollte Ihre Anmeldeseite wie folgt aussehen:


Wir werden auch einen Benutzerdatensatz (und unsere Tabelle) erstellen, damit wir die Authentifizierungslogik hinzufügen können, und Sie können die Seiten mit dem Code weiter oben anzeigen.  Um einen Benutzer mit dem Benutzernamen admin und einem Passwort von secret zu erstellen.  Um das hinzuzufügen, führen Sie dieses SQL: 


Schritt 5: Newsletter

Ich habe diese Anwendung sehr flexibel gestaltet.  Ich wollte, dass Sie (der Benutzer) so viele Newsletter erstellen und verwalten können, wie Sie möchten.  Also müssen wir zuerst unsere Datenbanktabelle erstellen.  Hier ist der SQL-Code aus dem Export meiner Demo-Anwendung:

Jetzt, wo wir unsere Newsletter-Tabelle haben, werden wir die Seiten für jede Aktion erstellen.  Erstellen Sie vier Dateien mit den Namen: newsletters.php, newsletters_delete.php, newsletters_edit.php und newsletters_new.php.  Zuerst öffne newsletter.php:

Diese Datei hat also das gleiche Grundgefühl wie unsere Login-Seite.  Wir benötigen unsere Konfiguration, stellen Sie sicher, dass wir eingeloggt sind, geben Sie unseren Titel an.  Als nächstes verwenden wir unsere query() - Funktion, um eine SELECT-Abfrage durchzuführen, um alle unsere Newsletter zu finden.  Wir legen dann die aktuelle Registerkarte für unser Layout fest.  Nachdem wir das von unserer Abfrage zurückgegebene Array durchlaufen haben, erstellen wir das Tabellenlayout.  Dann rufen wir eine noch unbekannte Funktion auf und erstellen unsere Seite.  Bevor Sie die Seite anzeigen können, müssen Sie Ihrer Datei classes.php Folgendes hinzufügen, damit Sie unsere Fehlermeldungen problemlos verarbeiten können:

Während Sie wahrscheinlich keine Daten haben, wenn Sie ein paar Datensätze haben, wird es aussehen wie: (obwohl ein bisschen weniger zerquetscht)


Jetzt werden wir an unserer neuen Aktion arbeiten, also öffnen Sie newsletters_new.php und fügen Sie folgendes hinzu:

Ich hoffe, Sie haben das Muster oben in jeder unserer Dateien bemerkt.  Wir benötigen zuerst unsere config.php-Datei, dann stellen wir sicher, dass wir eingeloggt sind, und setzen dann unsere aktuelle Registerkarte, und wir fügen dann einige zusätzliche Logik für die Behandlung von POSTs hinzu und dann setzen wir unseren Titel, unseren Inhalt und rendern dann die Seite.  Der POST-Bereich ist ziemlich einfach zu verstehen, also werde ich es schnell erklären.

Wir prüfen zunächst, ob ein Artikel mit dem Namen submitted gesendet wurde.  Das ist das versteckte Feld, das wir nach der Senden-Taste haben.  Als nächstes erstellen wir einen Link zu unserer Datenbank mit den Variablen aus unserer Konfigurationsdatei.  Als nächstes erstellen wir unsere SQL-Einfüge-Abfrage unter Verwendung unserer POST-Variablen.  Als nächstes fragen wir (nicht unsere Funktion) die Datenbank ab, und wenn ein Fehler auftritt, zeigen wir den Fehler zurück.  Als Nächstes schließen wir die Abfrage, stellen dann unsere Erfolgsmeldung ein und leiten dann zur Listenseite um.  Ihre Seite sollte wie folgt aussehen:


Als nächstes werden wir auf unserer Bearbeitungsseite arbeiten und folgendes hinzufügen:

Wie alle unsere Dateien beginnen wir mit dem gleichen Block.  Nach unserem POST-Block (über den ich in Kürze sprechen werde), setzen wir ID auf unsere angeforderte ID und stellen sicher, dass es sich um eine Ganzzahl handelt.  Wir verwenden dann unsere Abfragefunktion, um den Newsletter zu finden, mit dem wir arbeiten, und setzen einige Variablen auf die zurückgegebenen Ergebnisse.  Sie können fragen, warum wir eine [0] setzen, bevor wir jeden Wert angefordert haben. Der Grund dafür ist, dass die Abfragefunktion ein Array aller Datensätze zurückgibt und jeder Datensatz ein Array ist. Daher müssen wir auf das erste Array in unserer Ergebnisvariablen zugreifen.  Die Zeile, in der wir die Variable setzen, ist ifs eigentlich eine komprimierte if/else-Anweisung.  Der if-Teil ist das == 1. Wenn das der Fall ist, wird die Variable auf checked gesetzt, ansonsten auf nichts.  Dann haben wir unsere Form.

Unser POST-Block ist unserer neuen Seite sehr ähnlich und beginnt immer auf die gleiche Weise über den Rest unserer Seiten.  Wir überprüfen dann, ob das Kontrollkästchen aktiviert war, und setzen eine Variable erneut hier.  Dann haben wir unsere UPDATE-Abfrage, führen die Abfrage erneut aus, stellen unsere Erfolgsmeldung ein und leiten dann nach Hause um.  So sieht das Formular aus und die Nachricht, die nach der Bearbeitung angezeigt wird:



Die letzte Seite für diesen Abschnitt ist die einfachste, da es die Löschseite ist.  Öffnen Sie die Datei und fügen Sie Folgendes ein:

In diesem Block benötigen wir unsere Konfiguration, stellen sicher, dass wir eingeloggt sind, speichern die angeforderte ID in einer Variablen, erstellen eine MySQL-Verbindung, richten unsere SQL-Abfrage ein und führen dann die Abfrage aus.  Als Nächstes prüfen wir, ob eine Zeile betroffen ist, und legen eine entsprechende Nachricht fest.  Wir leiten dann auf die Newsletter-Seite um.  Herzlichen Glückwunsch, Sie haben die erste von vier CRUD-Sektionen fertiggestellt.  Als nächstes werden wir an der CRUD für unsere Vorlagen arbeiten.


Schritt 6: Vorlagen

Unsere Anwendung erlaubt auch mehrere Vorlagen, alle in der Datenbank gespeichert.  Lassen Sie uns zuerst unsere Datenbanktabelle erstellen:

Wir haben eine automatisch inkrementierende ID-Spalte, eine Name-Spalte, eine Spaltenspalte, um die Anzahl der Spalten zu speichern (die Anwendung skaliert nur auf 2 Spalten, was ausreichen sollte, aber leicht erweitert werden kann.  Das könnte auch für verschiedene Sektionen verwendet werden.)  und unser Körper.  Genau wie beim letzten Mal müssen wir jede unserer Seiten erstellen, und wir werden eine Templates.php Seite haben, sowie templates_new.php, templates_edit.php, templates_delete.php und templates_preview.php.  Wir werden zuerst an unserer templates.php-Datei arbeiten, also öffnen Sie sie und fügen Sie sie ein:

Wieder fangen wir mit den Grundlagen an.  Wir erstellen dann eine Abfrage, um alle unsere Vorlagen zu finden.  Wir durchlaufen dann jedes Array in Templates und wir erstellen eine Tabelle.  Wir erhalten dann unsere Fehler- (und Erfolgs-) Nachrichten und dann unseren Inhalt.  Ihre Seite sollte etwa so aussehen:


Gehen Sie nun auf unsere neue Seite und fügen Sie Folgendes ein:

Also, wieder, wir haben unseren gleichen Header.  Unser POST erstellt erneut eine MySQL-Verbindung, dann erstellen wir unsere Abfrage und verwenden mysql_real_escape_string, um alle Zeichen in den Datensatz aufzunehmen. Anschließend führen wir unsere Abfrage aus, legen unsere Erfolgsmeldung fest und leiten sie in unsere Vorlagenliste um.  Wenn Sie sich unser Formular ansehen, frage ich auch nach Variablen für unsere Inhalte, und ich werde Ihnen zeigen, wie das später ins Spiel kommt, wenn wir eine Nachricht mit einer Vorlage abgleichen.  Ihre Seite sollte wie folgt aussehen:


Als nächstes werden wir auf unserer Bearbeitungsseite arbeiten.  Wenn Sie bemerkt haben, dass ein großer Teil dieses Codes über die gleichen Aktionen kopiert und eingefügt wird, machen Sie es sich einfach.

Wir beginnen mit dem gleichen Intro, dann unserem POST-Block, unserem Titel, dann unserer angeforderten ID.  Danach versuchen wir, die Vorlage zu finden, mit der wir arbeiten, und setzen dann drei Variablen, so dass wir sie in unseren Inhaltsblock einfügen können.  Wir konvertieren auch alle von uns gespeicherten Tags in HTML-Zeichen, sodass alles angezeigt wird.  Wenn Sie sich unseren POST-Block ansehen, werden Sie bemerken, dass wir unseren Link, dann unsere Abfrage erstellen und erneut mysql_real_escape_string verwenden, um alles zu speichern, unsere Abfrage auszuführen und dann unsere Nachricht zu setzen und zu unserer Vorlagenliste umzuleiten.  Ihre Bearbeitungsseite (mit einem Beispieldatensatz) sollte wie folgt aussehen:


Jetzt erstellen wir eine weitere Löschseite. Öffnen Sie also unsere Löschseite und fügen Sie sie ein:

Ich hoffe, Sie haben das Muster hier aufgenommen, das ist eine sehr einfache Seite.  Jetzt arbeiten wir an einer zusätzlichen Seite, die nicht zum CRUD-Spektrum gehört. Wir werden eine Vorschau erstellen.  Das Fernglas im Aktionsteil auf dem Tisch ist der Link für jeden (in einem neuen Fenster).  Öffnen Sie unsere Vorschau-Seite.  Die Seite ist sehr einfach, wir finden unsere Vorlage und echo die Daten und dann eine JavaScript-Schaltfläche schließen.  Der Code sieht folgendermaßen aus:

Und eine Beispielvorschau sieht so aus:


Jetzt sind wir mit unseren Vorlagen fertig, wir sind bereit für den nächsten Schritt!


Schritt 7: Abonnenten

Jetzt werden wir mit unseren Abonnenten arbeiten!  Wir werden zwei Tabellen erstellen.  Der Erste:

Beziehen Sie sich auf jeden Abonnenten und der zweite:

Erstellen Sie eine Tabelle für unsere Viele-zu-Viele-Beziehung mit unseren Newslettern.  Ein Abonnent kann mehrere Abonnements für Newsletter haben, so dass er mehrere Abonnenten abonnieren kann und jeder Newsletter viele Abonnenten haben kann.  Um die dynamischste Lösung zu erstellen, haben wir eine Verknüpfungstabelle.

Lassen Sie uns zuerst unsere Dateien erstellen.  Die Dateien, die wir haben, sind subscribers.php, subscribers_delete.php und subscribers_edit.php.  Unsere Erstellungsaktion wird später für das Front-End erstellt.  Öffnen Sie zuerst subscribers.php und füge ein:

Wir haben im Grunde die gleichen Listing-Seiten wie zuvor, nur diesmal werden wir unsere Abonnenten finden.  Ihre Seite (mit einigen Beispieldaten) sollte wie folgt aussehen:


Jetzt werden wir auf unsere Bearbeitungsseite gehen:

Diese Seite ist ziemlich unterschiedlich, daher werde ich jeden Teil erklären.  Der Header ist derselbe, den wir verwendet haben.  Ich werde den POST-Block überspringen und zurückkommen.  Wir fahren dann den gleichen Code fort.  Als nächstes finden wir unseren aktuellen Abonnenten.  Als nächstes finden wir alle Newsletter (einschließlich derer, die nicht sichtbar sind - sichtbar für die Öffentlichkeit sichtbar) und dann alle Abonnements des Abonnenten.  Als nächstes durchlaufen wir jeden zurückgegebenen Newsletter-Datensatz, wir setzen als nächstes einige Werte zurück.  Als nächstes durchlaufen wir jedes Abonnement, das der Benutzer hat, und wenn die newsletter_id des Abonnements gleich dem aktuellen Newsletter ist, den wir durchlaufen, setzen wir $ s true und $ subid gleich der Abonnement-ID.  Dann setzen wir die Variable $checked entweder auf checked oder nothing, abhängig davon, ob für diesen Teilnehmer und den aktuellen Newsletter in der Schleife ein Abonnement gefunden wurde.  Als nächstes erstellen wir den Checkbox-Formularbereich mit vielen versteckten Feldern.  Zuerst haben wir das tatsächliche Kontrollkästchen mit einem Namen, der ein Array für jedes Kontrollkästchen erstellt.  Wir haben dann unser Label, und als nächstes geben wir aus, ob das Abonnement existiert, die newsletter_id und dann die subscription_id für wann das Abonnement existiert.  Danach haben wir unseren normalen Inhalt.

Jetzt, wenn wir zu unserem POST-Block weitergehen.  Wir bekommen zuerst die ID von unserem versteckten Feld am unteren Rand.  Als nächstes erstellen wir unseren MySQL-Link.  Als nächstes haben wir unsere erste SQL-Abfrage, wo wir den Abonnenten-Datensatz aktualisieren. Als nächstes haben wir unsere erste SQL-Abfrage, wo wir den Abonnenten-Datensatz aktualisieren.  Als nächstes durchlaufen wir alle Newsletter-Checkboxen. Die erste bedingte Anweisung überprüft, ob die POST-Daten angeben, dass wir kein Abonnement haben und der Benutzer den Newsletter abonnieren möchtet.  Um das zu umgehen, führen wir eine SQL-INSERT in unserer Subskriptions-Tabelle durch, wobei unsere subscriber_id die gleiche ist wie die user_id, die wir bearbeiten, und newsletter_id gleich dem 'nlid'-Wert ist, der von einem unserer versteckten Felder geposted wird.  Wir führen dann diese SQL INSERT-Abfrage aus.  Die elseif bedingte Anweisung besagt, dass wenn unser Abonnement existiert, aber das Kontrollkästchen deaktiviert wurde, wir uns abmelden müssen, müssen wir das Abonnement löschen.  Wir behandeln dies mit einer SQL-DELETE-Abfrage.  Um unsere Abfrage zu bilden, setzen wir $subid gleich dem gebuchten Wert für unsere 'subid'.  Wir erstellen dann unsere Abfrage, indem wir den Datensatz löschen, in dem die Subskriptions-ID der Variablen $subid entspricht.  Als nächstes führen wir die Abfrage aus, stellen unsere Sitzungserfolgsmeldung ein und leiten dann zurück zu unserer Abonnentenseite.  Ihre letzte Bearbeitungsseite sollte folgendermaßen aussehen: (gefüllt mit Beispieldaten)


Wir haben eine letzte Seite für den Abonnenten-Teil des Backends: die Löschseite.  Genau wie zuvor ist diese Seite sehr einfach:


Schritt 8: Nachrichten

Ich werde es Ihr im Voraus sagen, dieser Bereich hat die meisten Seiten.  Wir werden jetzt mit sieben arbeiten und eine weitere in Schritt 10 erstellen.  Zuerst werden wir unsere Nachrichtentabelle mit diesem SQL erstellen:

Als Nächstes erstellen wir die Dateien für diesen Schritt.  Erstellt sieben Dateien mit den Namen messages.php, messages_delete.php, messages_edit.php, messages_new.php, messages_new_step2.php, messages_new_step3.php und messages_preview.php.  Öffnen wir zunächst messages.php und lassen Sie es so aussehen:

Das ist unsere Routingtabelle, außer dass wir jetzt 4 zusätzliche Links haben, einen zum Versenden der Nachricht, einen zur Vorschau, einen zum Bearbeiten und einen zum Löschen.  Ihre Seite sollte wie folgt aussehen:


Jetzt beginnen wir mit der Arbeit an unseren neuen Seiten.  Auf der ersten Seite beginnen alle Nachrichten, und Sie können fortfahren und die eigentliche Nachricht auf der nächsten Seite eingeben.  Der Grund dafür ist, dass wir zuerst die erste Nachricht in der DB erstellen müssen und so Informationen über die Vorlage finden können.  Die step2-Seite ist im Grunde die Bearbeitungsseite (es gibt sechs Zeilenunterschiede nach FileMerge).  Öffnen Sie unsere neue Datei und fügen Sie Folgendes ein:

Diese Seite ist sehr ähnlich wie unsere anderen neuen Seiten, aber diese war eine Änderung im POST-Block.  Gleich nachdem wir den SQL INSERT ausgeführt haben, finden wir die letzte Einfüge-ID.  Nun ist das nicht die perfekte Lösung, aber ich bevorzuge es, eine andere SQL-Abfrage durchzuführen, um eine Zeile mit nicht indizierten Spalten zu finden.  Dieser Schritt sollte folgendermaßen aussehen:


Wir leiten dann zu Schritt 2 weiter, also öffnen wir die Datei:

Hoffentlich haben Sie den Kern aller Seiten und verstehen die Seite oben.  Wir haben unseren normalen Kurs.  Wir setzen dann unsere ID aus unserer GET-Anfrage.  Als nächstes finden wir die Nachricht, mit der wir arbeiten, dann finden wir alle Vorlagen und erstellen ein Dropdown.  Wir verwenden dieses Aussehen auch, um zu definieren, ob wir ein oder zwei Textareas haben werden.  Als nächstes haben wir unseren POST-Block, der die Verknüpfung erstellt, überprüft dann, ob wir mit einer oder zwei Spalten arbeiten und erstellt die entsprechende SQL-Abfrage.  Danach haben wir unsere Form.  Ihr Formular sollte wie folgt aussehen:


Jetzt fahren wir mit Schritt 3 fort, also öffnen Sie die Datei und fügen Sie ein:

Die Seite ist sehr einfach und ist das Ende der Erstellung einer Nachricht.  Es bietet uns ein paar Links.  Der erste ist ein Link zur Vorschau der Nachricht.  Die nächsten Angebote, uns nach Hause zu bringen.  Die dritte bietet uns an, die Nachricht zu senden (Schritt 10).  Die Seite sieht folgendermaßen aus:


Jetzt gehen wir weiter zu unserer Bearbeitungsseite.  Ich werde es nicht erklären, da es dieselbe Datei ist wie messages_new_step2.php, also können Sie sich dort beziehen.

Die Seite wird fast identisch mit unserem Schritt 2 aussehen, aber der Textbereich wird Inhalt haben.  Jetzt erstellen wir die Löschseite mit:

Diese Seite sollte auch bekannt vorkommen.  Die letzte Seite, an der wir in diesem Schritt arbeiten werden, ist unsere Vorschauseite, also öffnen Sie sie und platzieren Sie sie:

Diese Datei ist etwas anders als Sie gesehen haben, also werde ich Sie durchgehen.  Zuerst haben wir unseren normalen Kurs.  Als nächstes finden wir die aktuelle Nachricht, mit der wir arbeiten, und setzen einige Variablen auf die Ergebnisse.  Als nächstes finden wir die Vorlage, mit der wir arbeiten, und setzen eine Variable, die dem Körper entspricht.  Als nächstes haben wir eine bedingte Anweisung, die überprüft, um die Anzahl der Spalten zu sehen, die die Vorlage hat.  Wenn das der Fall ist, verwenden wir die PHP-Funktion str_replace, um den% content%-Tag, den wir haben, durch unseren tatsächlichen Inhalt zu ersetzen.  Andernfalls führen wir zuerst einen str_replace für die linke Spalte aus, und dann führen wir das Ergebnis str_replace für die rechte Spalte erneut aus.  Jetzt sind wir bereit, auf das Frontend zu setzen.


Schritt 9: Front-End

Wir haben endlich Vorderes Ende erreicht!  Nur für diesen Schritt und diesen Schritt nehme ich an, dass sich die Dateien, mit denen wir arbeiten, im Stammverzeichnis des Projekts befinden (also nicht im Admin-Ordner, der den Ordner enthält). Wir werden hier mit vier Dateien arbeiten, also machen Sie weiter und erstellen Sie index.php, preferences.php, subscribe.php und eine style.css Datei.  Öffnen Sie zuerst unsere Datei index.php und fügen Sie sie ein:

Ich werde die Seite zuerst erklären und dann werden wir das Bild so weit und das Seitenstyling bekommen.  In der PHP-Sektion oben benötigen wir unsere config.php-Datei (jetzt im Admin-Verzeichnis), dann finden Sie alle unsere öffentlich sichtbaren Newsletter und erstellen ein Kontrollkästchen-Array.  Sie werden feststellen, dass wir die POST-Daten hier nicht verarbeiten, und ich habe mich dafür entschieden, das in unserer subscribe.php zu tun, und wir werden dazu kommen, aber zuerst lassen Sie uns die Seite stylen.  Die Seite sollte jetzt wie folgt aussehen:


Zuerst habe ich die 960.gs Reset-Datei wie in unserem anderen Stylesheet hinzugefügt.  Dann habe ich die drei folgenden Stile hinzugefügt, damit das Design wie folgt aussieht:


Jetzt, wo wir eine saubere und einfache Seite haben, werden wir weitermachen und an unserer subscribe.php-Datei arbeiten.  Gehen Sie weiter und öffnen Sie die Datei und fügen Sie ein:

Diese Seite ist unserer Seite zum Bearbeiten von Abonnenten sehr ähnlich, aber hier finden keine DELETE SQL-Abfragen statt.  Wir überprüfen einfach, ob wir alle POST-Daten haben.  Wir setzen dann einige Variablen auf unsere POST-Daten und erstellen und führen dann eine SQL INSERT-Abfrage durch, um die Person zu unserer Abonnententabelle hinzuzufügen.  Danach führen wir eine SQL-Abfrage durch, um festzustellen, dass gerade ein Abonnent erstellt wurde (insert_id funktionierte diesmal nicht für mich).  Wir durchlaufen dann alle POST-Newsletters und prüfen, ob wir sie abonnieren möchten, und führen bei Bedarf SQL-INSERTs aus.  Wenn alles nach Plan läuft, sehen Sie einen schönen Bildschirm wie den folgenden:


Wir haben auf der letzten Seite hier zu arbeiten, und das ist die preferences.php Datei.  Hier kann ein Benutzer sein E-Mail-Abonnement bearbeiten.  Ich werde die Seite in zwei Teile aufteilen.  Zuerst haben wir unseren PHP-Block:

In diesem Block ist viel los.  Zuerst fügen wir unsere Konfigurationsdatei hinzu.  Als nächstes suchen wir nach einem POST, und wenn wir einen haben, aktualisieren wir unsere Datenbank.  Dieser Teil wird genau aus unserer subscribers_edit.php-Datei kopiert, so dass Sie dort nach mehr Erklärungen suchen können.  Als nächstes, abhängig davon, ob wir eine Get-Anfrage haben, setzen wir unsere Variable (diese Variable wird im HTML-Abschnitt der Seite verwendet).  Wir suchen dann nach einem Abonnenten mit dieser E-Mail, und wenn einer existiert oder wir den Fundteil zeigen, fahren wir fort, sonst werden wir nach Hause umgeleitet.  Als nächstes finden wir alle unsere Newsletter und alle Abonnements des Abonnenten und erstellen dann unser Kontrollkästchen.  Der HTML-Teil sieht folgendermaßen aus:

In unserem HTML-Block haben wir zwei Formulare und etwas PHP, um auszuwählen, welches angezeigt werden soll.  Das oberste Formular ist die Form, die der Benutzer sieht, wenn ein Datensatz in der Datenbank gefunden wurde.  Das zweite Formular ist für die Eingabe Ihrer E-Mail und die Suche nach dem System.  Die zweite Form sieht folgendermaßen aus:


Und das erste sieht so aus:


Und die zweite Form, nachdem wir unsere Präferenzen gespeichert haben:


Nachdem wir das Frontend fertiggestellt haben, haben wir einen letzten Schritt: die E-Mails verschicken!


Schritt 10: Senden von Nachrichten

Unser letzter Schritt besteht darin, auf der Seite zu arbeiten, um unsere Nachricht zu senden.  Wir werden im Admin-Verzeichnis arbeiten, und nur eine Datei wird erstellt.  Machen Sie weiter und erstellen Sie unsere messages_send.php Datei und fügen Sie folgendes ein:

Im ersten Teil benötigen wir erneut unsere Konfiguration, dann stellen Sie sicher, dass der Benutzer angemeldet ist, dann unseren Titel, stellen Sie sicher, dass unsere ID eine Ganzzahl ist, und setzen Sie dann unsere Registerkarte.  Als nächstes haben wir unseren komplizierten Post Block.  Zuerst richten wir unsere Basisabfrage ein, und nur das würde 0 Datensätze zurückgeben, was gut ist, weil das bedeutet, dass keine Benutzer den Newsletter senden werden.  Als nächstes durchlaufen wir jeden Newsletter, den wir versenden möchten, und finden alle Abonnements für diesen Newsletter.  Wir erstellen dann eine Zeichenfolge, die an unsere ursprüngliche SQL-Abfrage angehängt wird, so dass wir jeden Teilnehmer finden können.  Jetzt führen wir diese Abfrage aus und erstellen ein Array, in dem die Schlüssel die Emails sind und der Name der Wert ist. Das hilft uns, Namen zu verwenden, wenn der Benutzer die Email in seiner Email-Anwendung anschaut.  Als nächstes finden wir die Nachricht, mit der wir arbeiten, und legen den Betreff, die Nachricht und die Vorlagen-ID auf Variablen fest. Wir finden dann unsere Vorlage und setzen den Körper auf eine Variable.  Dann verwenden wir denselben Code aus der Nachrichtenvorschau, um die Zeichenfolgen innerhalb der Vorlage durch die Teile der Nachricht zu ersetzen.  Dann rufen wir unsere noch zu erstellende Funktion send_email_to_mass auf und leiten dann nach Hause um.

Wenn wir unseren POST-Block verlassen, erstellen wir die gleiche Checkbox-Liste mit Newslettern, so dass der Administrator auswählen kann, an welche(s) er die Nachricht senden möchtet.  Dann haben wir ein einfaches Formular, das wie folgt aussieht:


Öffnen Sie nun unsere Datei classes.php und fügen Sie folgende Funktion hinzu:

Also, zuerst haben wir unsere Funktionsdeklaration, und es erwartet, dass vier Variablen von Empfängern, Körper und Subjekt an es übergeben werden.  Als nächstes benötigen wir die Datei sqift_required.php unserer Swift Mailer Library.  Als nächstes erstellen wir einen neuen Mail-Transport (dieser verwendet die PHP-Mail-Funktion, also würde er von Ihrem lokalen Rechner aus senden, für die Dokumentation zu den drei Transporttypen siehe die Dokumentation).  Als nächstes erstellen wir einen Mailer mit diesem Transport. Dann kreieren wir eine neue Nachricht von unserem Subjekt, dann stellen wir unser von, nach, und Körper ein.  Dann verwenden wir die Funktion batch_send, so dass jeder Empfänger sich nur in der Email sieht und niemand sonst.

Es gibt einen möglichen Nachteil, es so zu machen, wie ich es habe, und wenn Sie viele Nachrichten senden, kann es dauern, bis die Seite geladen ist.  Eine Lösung wäre, eine Javascript AJAX-Anfrage auszuführen, um jede Nachricht zu senden, aber ich werde das hier nicht behandeln.  Jetzt, wo wir mit dem Senden von Nachrichten fertig sind, werden wir die Homepage aufpeppen und dann sind wir fertig!


Schritt 11: Die Startseite

Wenn Sie den Admin-Index laden, tut die Seite nicht wirklich viel.  Ich möchte einige "Statistiken" auf unserer Startseite haben, und wir werden endlich die count_query Funktion verwenden.  Öffnen Sie die Admin-Indexdatei und ändern Sie sie wie folgt:

Die Seite ist sehr einfach.  Wir benötigen unsere Konfiguration, stellen sicher, dass wir eingeloggt sind, führen dann sechs Zählabfragen durch, eine für jede unserer Tabellen und geben diese dann aus.  So sieht die letzte Seite aus:



Schlussfolgerung

Herzlichen Glückwunsch, Sie sind fertig!  Ich hoffe Ihr hat das Tutorial gefallen und es hat Sie nicht zu sehr verwirrt :)


Voller Screencast


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.