Event-Planer

Karlzberg

Erfahrenes Mitglied
Hallo,

ich bringe mir gerade PHP selbst bei, mit Hilfe eines etwas größeren Projektes (ich hab da so meine eigne Lernmethodik ;) ).
Das ganze soll ein sehr umfangreicher Event-Planer werden, der in etwa folgendermaßen aufgebaut sein soll:

Es gibt zwei Bereiche:
Einen semiöffentlichen Bereich, der durch ein bestimmtes Passwort geschützt ist, welches an beliebige, vertrauensvolle Personen weitergegeben werden kann.
Einen privaten Bereich, der komplett geschützt ist und nur für bestimmte User zugänglich sein soll. Wahrscheinlich arbeite ich hierbei mit registrierten Usern.

Evtl. wird es auch noch einen komplett öffentlichen Bereich geben.

In diesen Bereichen sollen dann gewisse Events, die von den Usern erstellt werden, aufgelistet werden. Dabei bestimmt der Ersteller des Events, in welchen Bereich das Event soll. Die Auflistung erfolgt chronologisch nach dem Zeitpunkt des Events, evtl. wird diese Übersichtsseite noch um eine Kategorieansicht erweitert.
Die Auflistung soll eine Kurzbeschreibung des Events enthalten und unter Umständen ein kleines Bild.
Weiterhin soll es auf dieser Übersichtsseite eine Möglichkeit geben, per Formular ein neues Events einzutragen.
Die Auflistung erfolgt über Links, die dann zu einer konkreten Beschreibung des Events führt, die wie folgt aufgebaut werden soll:

- die üblichen Angaben, wie Ort, Datum, etc.
- eine optionale, ausführliche Beschreibung
- optional ein angefügtes Bild, das dann zu einer zum Event gehörigen Bildergalerie führt
- eine Auflistung der Anmeldungen zum Event
- von Usern abzugebende Kommentare

Für die Erstellung des Events sollen dem Ersteller folgende Optionen gegeben werden:

- im semiöffentlichen Bereich soll er Einladungs-Mails mit dem Passwort versenden können
- er soll das Event jederzeit editieren können
- er soll Bilder hochladen können (sprich: eine Bildergalerie erstellen können)
- er soll die Möglichkeit haben, auwählen zu können, ob er Anmeldungen erst freischalten muss, oder ob diese automatisch in die Liste eingetragen werden
- er soll die die Wahl haben, ob er per Mail über Neuanmeldungen und Abmeldungen informiert wird, genauso wie über neue Kommentare

Den Usern, die auf Event Zugriff haben, sollen folgende Optionen gegeben werden:

- sie sollen sich zum Event an- abmelden können
- sie sollen Kommentare verfassen können
- sie sollen dem Planer eine Mail senden können, evtl. gar über private Message, zumindest im privaten Bereich
- sie sollen die Wahl haben, ob sie über Änderungen des Erstellers und/oder neue Kommentare per Mail informiert werden möchten

Und nun zu meinen Frgen:
Ist das ganze soweit problemlos über PHP realisierbar, oder würde mir eine andere Scriptsprache an der ein oder andren Stelle die Arbeit erleichtern?
Immerhin soll das Eintragsformular schließlich auf gewisse Eintragungen überprüft werden (einige Pflichtfelder werden dabei sein). Dies Prüfung sollte möglichst VOR Absenden des Formulars erfolgen, damit der Ersteller nicht wieder alles von neuem eingeben muss, falls er einmal etwas vergessen hat.
Was werde ich für dieses Projekt alles brauchen? Oder anders gefragt: Wie realisiere ich am besten die Übrprüfungen in den Formularen und den Zugang zu den jeweiligen Bereichen?
Habt ihr evtl. Tips für den Aufbau des ganzen Projektes? Irgendwelche Hürden, an die ich denken sollte?
Z.B. wrede ich die Datumseingabe wohl über ein Pull-down-Menü realisieren, um auch wirklich sicher gehen zu können, dass ich ein verwertbares Datum bekomme.
Gibt es weitere solcher Stolpersteine, auf die ich achten muss?
Welche Möglichkeiten bieten sich mir -ausser den angesprochenen- für die gesicherten Bereiche?

Speziell wäre ich in erster Linie für Tipps zum Formular dankbar, da ich gerade daran arbeite. Das Eintragen in das Formular und die Übernahme in die Datenbank funktionieren schonmal gut, allerdings fehlen mir noch sämtliche Kontrollmechanismen.
Bevor ich nun aber anfange und mir Irgendwas zusammenbastele, was ich nachher allerdings nicht mehr gebrauchen kann, weil ich wichtige Dinge übersehen habe, wollte ich vorher einmal anfragen, was ich dabei beachten sollte.
Links zu ein paar guten Tutorials wären ebenfalls hilfreich, aber bitte nicht die von Tutorials.de selbst, die find ich auch alleine ;)

Ein langer Text und wohl ein etwas gewagtes Projekt für den Einstieg, ich weiß, aber ich habe keinerlei Zeit- oder Leistungsdruck.

Wer bis hierhin durchgehalten hat, dem danke ich schonmal im Voraus und hoffe auf ein paar gute Tipps ;)
Probleme mit konkreten Codeschnipseln, etc. werden sicherlich irgendwann einmal folgen ;)
 
Ist das ganze soweit problemlos über PHP realisierbar, oder würde mir eine andere Scriptsprache an der ein oder andren Stelle die Arbeit erleichtern?
Ja das ist problemlos über PHP realisierbar. Ein hier und da geschickt eingefügtes Javascript kann dir aber einige Dinge erleichtern. Schau dir zu diesem Thema (wenn du noch Kapazität übrig hast) auch gleich etwas AJAX an. Vergiss jedoch nie, dass es gut möglich ist, dass ein User JavaScript nicht eingeschaltet hat.

Immerhin soll das Eintragsformular schließlich auf gewisse Eintragungen überprüft werden (einige Pflichtfelder werden dabei sein). Dies Prüfung sollte möglichst VOR Absenden des Formulars erfolgen, damit der Ersteller nicht wieder alles von neuem eingeben muss, falls er einmal etwas vergessen hat.
Die Überprüfung muss nicht zwingend vor dem Absenden passieren. Du kannst auch die korrekt eingefüllten Felder nach dem Reload wieder in die Felder füllen und für die Falscheingaben Fehlermeldungen ausgeben. Das bedeutet zwar etwas Mehraufwand, erleichtert dafür dem User das Arbeiten mit dem Formular. Generell würd ich dir raten, die Daten mit PHP zu prüfen, auch wenn es mit Javascript ebenfalls gehen würde. Wie gesagt hast du nie die absolute Sicherheit, dass JavaScript eingeschaltet ist.

Was werde ich für dieses Projekt alles brauchen? Oder anders gefragt: Wie realisiere ich am besten die Übrprüfungen in den Formularen und den Zugang zu den jeweiligen Bereichen?
Um die Formulare zu überprüfen schreibst du halt entsprechende Funktionen, die die Eingabe überprüfen. Eine Prüffunktion eines Feldes könnte beispielsweise so aussehen:

PHP:
//Beliebig erweiterbar
function check_value($type, $value)  {
  //1 für Zahlen
  //2 für Zeichenketten
  $value_ok = false;
  switch($type)  {
    case 1:  if(is_numeric($value)) { $value_ok = true; }
                 break;
    case 2:  if(is_string($value)) { $value_ok = true; }
                 break;
  }
  return $value_ok ? true : false;
}
//Das passiert nachdem das Formular abgesendet wurde
if(isset($_POST['form_submit'])) {
  if(!check_value(1, $_POST['form_field1'])) {  //Wenn im Feld form_field1 keine Zahl steht...
    echo "Error: Bitte geben sie in form_field1 eine Zahl ein";
  }
}

Diese Funktion ist jetzt natürlich völlig simpel und prüft nur, ob der eingegebene Wert dem erwarteten Datentyp entspricht. Solche Funktionen sind aber beliebig erweiterbar und man kann eigentlich fast alles testen.

Habt ihr evtl. Tips für den Aufbau des ganzen Projektes? Irgendwelche Hürden, an die ich denken sollte?
Mach dir eine Projektskizze wie du den Aufbau haben willst. Ich empfehle dir Logik und Quellcode zu trennen. Benutze dafür ein Template-System wie zum Beispiel Smarty. Wenn du noch ein bisschen mehr lesen willst, kannst du dir gleich das MVC-Modell zu Gemüte führen.

Ein weiterer Stolperstein sind deine eigenen Erwartungen. Sei gewillt auch mal die Arbeit von 2 Tagen in den Papierkorb zu werfen, wenn du merkst, dass du absoluten Müll gecodet hast, werd nicht ungeduldig und hab keinen Anspruch an perfekten Code. Denn PHP zu lernen ist ein relativ langwieriger Prozess. Es gibt so viele Möglichkeiten, die du erst nach und nach entdeckst. Unterteil dir dein Projekt in kleinere Schritte und geh jedes dieser Teilprojekte für sich an. Beispielsweise überlegst du dir erstmals, wie du das ganze Aufbauen willst, wenn du eine Logik hast kümmerst du dich um das Layout, dann um das Login, usw. Du hast dir da ein sehr grosses Projekt vorgenommen mit welchem du PHP lernen willst. So hab ich auch PHP gelernt und gesehen, dass ein solcher Projektumfang auch entmutigend wirken kann, wenn man mal längere Zeit an einem Problem rumkaut.

Naja ich wünsch dir erstmals viel Vergnügen und bei Fragen einfach fragen :)

Grüsse
De Igäl
 
Erstmal danke für die ausführliche Antwort :)
Schonmal gut zu wissen, dass wirklich alles über PHP weotestgehnd problemlos realisierbar ist. Aus den von dir genannten Gründen würde ich nämlich ungern auf Javascript zurückgreifen wollen.
Da die Anzahl der Zugriffe eher gering sein wird, denke ich auch nicht, dass ich unbedingt client-seitige Prüfungen brauche, um den Server zu entlasten. Die Mehrarbeit spielt dabei für mich eine eher untergeordnete Rolle, schließlich lerne ich dabei dann auch entsprechend mehr ;)

Was nun mich selbst als Stolperstein angeht, seh ich da eher weniger Probleme. Ich schreibe teilweise den Code sogar freiwillig komplett neu. Das Formular beispielsweise bearbeite ich aktuell zum dritten Mal. Zunächst ging es mir um die reine Erstellung des Formulars. Danach habe ich die Daten einfach mal in eine .dat-Datei eintragen lassen, um etwas leichter hinter die Logik des ganzen zu steigen. Aktuell wird alles in die Datenbank eingetragen. Wenn das Formular dann erstmal meinen Wünschen entsprechend aussieht, werde ich es wahrscheinlich nochmal komplett neu schreiben, um es auch wirklich sauber geschrieben zu haben. Diese doppelte Arbeit steigert bei mir den Lerneffekt.
Was die Frustmomente angeht, die sind mir auch nicht ganz fremd:
1.) hatte ich schon schon meinen ersten, ziemlich kleinen
2.) kenne ich das bestens vonnem Kollegen, der gerade an seiner Bachelor-Thesis arbeitet
3.) kennt man das auch aus allen andren Bereichen des PC-Lebens

Dafür ist das Gefühl, das man hat, wenn man endlich mal eine solche Klippe umschifft hat, umso größer, mit einem richtigen Hochgefühl gleichzustellen. :)
 
Zurück