php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.10.2010, 16:48  
Neuer Benutzer
 
Registriert seit: 21.10.2010
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
hurrtz befindet sich auf einem aufstrebenden Ast
Standard Speichern von Forumlardaten

Hallo php-Forum,

ich versuche gerade, ein eigenes CMS aufzuziehen, um an dem Projekt meine PHP-Kentnisse zu prüfen und zu vertiefen.

Nachdem mein gesamtes Klassengerüst nun recht fest zu stehen scheint, bin ich nun bei den Formularen des Backends angelangt. Hier stocke ich nun und komme nicht recht weiter, weil mein Wissen an dieser Stelle leider aufhört. Es geht um folgendes:

Abstrakt (Beispiel, vereinfacht):
- Klasse Impressum, neben der ganzen Kapselei u.a. die Funktion saveImpressum()
- Klasse ImpressumPage, die View und Controler mischt, indem sie über eine Ausgabefunktion den HTML-Code des Impressumsformulars zurückliefert und verschiedene Funktionen, um mit den Daten des "richtigen" Impressumsklasse zu arbeiten und ggf. an diese zwecks Speicherung zurückzureichen.

Etwas ausformulierter:
Mein View gibt dem User ein Formular vor. Die Daten werden über den submit-Button per POST an den Controller gereicht, der die Daten hübsch macht und erste Filterungen und Plausibiliserungen vornimmt, und dann zum Model weiterreicht, der in die Datenbank schreibt.

Ich kann genug PHP, um verschiedene Wege programmieren zu können, wie meine Intention umgesetzt werden kann. Aber ich weiß einfach nicht, welchen Weg ich nun genau gehen soll. Ich würde normalerweise natürlich nicht so pingelig sein. Ich würde eine Weile überlegen, ein gutes Konzept ausarbeiten und das bestmöglich umsetzen, aber dieser spezielle Schritt ist, wie ich finde, verdammt kritisch. Hier geht es um die zentrale und offensichtlichste Stelle, Daten in meine Datenbank zu schreiben. Aber egal was ich mache, ich finde keine Stelle, die mir erklärt, was ich alles beachten, wie ich vorgehen sollte, wenn es darum geht, Daten vom View zum Model zu reichen, zu plausibilisieren und zu in einer Datenbank zu speichern. Allein schon der erste Schritt: Wie erkennt mein Controller am besten, dass Daten übergeben wurden? Über eine Hilfskonstruktion im Konstruktor meiner Controller-Klasse
PHP-Code:
public function __construct() {
  if (!empty(
$_POST['impressum_speichern']) && $_POST['impressum_speichern'] == 'speichern') {
    
$this->verarbeiteDaten($daten); 
    
$this->Impressum->speichereDaten($daten);
  }

? Egal was ich mache, irgendwie finde ich Bestandteile des Weges, die einfach nicht... elegant aussehen. Oder wo ich die Befürchtung habe, dass sie unsicher sein könnten.

Um mein Anliegen kurz und knapp auf einen Satz zu bringen:
Wer kennt einen Weg zur Speicherung von Daten aus einem Formular, der nach Maßgabe der Eleganz, Efizienz und Sicherheit dem Königsweg am Nächsten kommt?

Wie gesagt, ich wäre normalerweise nicht so pingelig. Aber gerade bei der Speicherung von Daten will ich keine Fehler machen. Wenn also irgendjemand nähere Informationen nennen kann, wäre ich sehr verbunden. Es würde mir übrigens auch vollkommen reichen, wenn mir ein paar Links präsentiert würden, die mich zu meiner Antwort führen.

Geändert von hurrtz (21.10.2010 um 16:52 Uhr).
hurrtz ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.10.2010, 17:27  
Erfahrener Benutzer
 
Registriert seit: 22.07.2004
Beiträge: 226
DirkHo befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

sorry, wenn ich nicht 100%ig alles verstanden habe, was du uns hier erzählst - war aber ja auch etwas viel.

Zitat:
Zitat von hurrtz Beitrag anzeigen
Um mein Anliegen kurz und knapp auf einen Satz zu bringen:
Wer kennt einen Weg zur Speicherung von Daten aus einem Formular, der nach Maßgabe der Eleganz, Efizienz und Sicherheit dem Königsweg am Nächsten kommt?
1.) Wenn ich ein CMS erstellen wollte (was ich nicht machen würde, da es mit Typo3 schon ein Top CMS kostenlos gibt), würde ich als Grundlage ein Framework verwenden - in deinem Fall (da du ja schon von MVC schreibst) eines, das auf MVC basiert. Z.B. Symfony

2.) Wenn du das nicht willst (wenn ich auch nicht verstehen würde warum), dann würde ich zum Speichern der Formulardaten eine OR-Mapper wie Doctrine verwenden.

Viele Grüße,

Dirk
DirkHo ist offline  
Alt 21.10.2010, 17:32  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Klasse Impressum
scheint mir schon im Ansatz falsch. Ich meine - ein Impressum ist ein normaler Inhalt, wozu brauchts da ein spezifisches Modul? Für Kontaktformulare oder speziellen Inhalt würde ich das ja noch einsehen, aber für Textcontainer? Was soll das noch mit CM - content management - zu tun haben, wenn Du für jede Textbox etwas programmierst?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 21.10.2010, 17:43  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Hallo,

ein Formularobjekt hat Daten zu liefern, genauso wie ein Model. Als getValues()-Methode beispielsweise. Das Formularobjekt stellt sicher, dass die Eingaben nach der Validierung den Vorgaben entsprechen. Den Array mit den Values kannst du nun an ein Speichermodel übergeben, der die Werte speichert oder z.B. das Formular ("Bearbeitung speichern") erneut mit den Defaultwerten beliefert.


Beispiel:
PHP-Code:
<?php
class ImprintController {
  public function 
editAction() {
    
$form = new Form_Imprint();
    if (
$form->isValid($this->_request->getPost()) {
      
$tableManager = new DatabaseManager("database_imprint");
      if (
$tableManager->save($form->getValues())) {
        
$this->_redirectAction("show""imprint");
      } else {
        
$this->_view->messageHelper("Impressum konnte nicht gespeichert werden.");
      }
    }
    
$form->populate($this->_request->getPost());
    
$this->_view->assign("form"$form);
    
$this->_view->render();
  }
  public function 
showAction() {
    
// ..
  
}
}
?>
__________________
"Nuschel ich?" - "Was?"

Geändert von Chriz (21.10.2010 um 17:47 Uhr).
Chriz ist offline  
Alt 21.10.2010, 18:57  
Neuer Benutzer
 
Registriert seit: 21.10.2010
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
hurrtz befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von DirkHo Beitrag anzeigen
Wenn du das nicht willst (wenn ich auch nicht verstehen würde warum), dann würde ich zum Speichern der Formulardaten eine OR-Mapper wie Doctrine verwenden.
Doctrine kenne ich nicht, sehe es mir aber gerne an. Was die freien CMS angeht: Die kenne ich gut. Ich habe mich z.B. eine ganze Weile mit Typo und Joomla beschäftigt. Aber freie CMS haben immer den Nachteil, dass sie furchtbar unperformant sind, wenn ich als Alternative ein schlankes CMS habe, dass für einen bestimmten Zweck gebaut wurde. Und wie gesagt: Es geht mir darum, die Grundlagen der objektorientierten PHP-Programmierung zu lernen. Und dafür eignet sich, finde ich, ein spezifisches Projekt wie die Erstellung eines eigenen CMS gut.

Zitat:
Zitat von nikosch Beitrag anzeigen
scheint mir schon im Ansatz falsch. Ich meine - ein Impressum ist ein normaler Inhalt, wozu brauchts da ein spezifisches Modul?
Das entspringt meiner Arbeit mit Ruby. Ich finde den Ansatz, dass alles, aber auch wirklich alles ein eigenes Objekt ist, sehr praktisch. Das Instanziieren von allem Möglichen bietet mir theoretische Freiheiten, die ich nicht missen möchte. Im schlechtesten Fall habe ich eine Klasse, die keine eigenen Aufgaben übernimmt, außer zu existieren. Schaden richtet sie aber keinen an.

@Chriz: Dein Ansatz ist interessant! Das mit dem einheitlichen Formularobjekt scheint tatsächlich lohnenswert zu sein. Das macht die Sache schon sehr elegant Kannst du mir noch sagen, ob das ein Weg ist, den professionelle Programmierer wählen würden?
hurrtz ist offline  
Alt 21.10.2010, 19:05  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Ich finde den Ansatz, dass alles, aber auch wirklich alles ein eigenes Objekt ist, sehr praktisch.
Du verwechselst hier aber zwei Dinge: Die Implementierung und die Anwendung. Ein CMS per Definition verwaltet Inhalte. Dazu gehört, dass Inhaltsobjekte auf bestimmte Typen abstrahiert werden, bspw. Plain-Text, Wysiwyg-Text, Bild, textumflossenes Bild. Bei der Nutzung des CMS muss das System fertig sein, es macht keinen Sinn, dann per Code Funktionalität abzubilden. Das ist Aufgabe der Inhaltsabstraktion im System.

Du kannst das wohl machen, nur hat das mit der Idee des CMS (eben Trennung von Inhalt und Technik/Layout) nichts mehr zu tun und Du erreichst eine Programmspezifität, die eigentlich schon wieder praxisfern ist, weil Du da auch gleich alles in HTML hardcoden kannst.

Zitat:
Ich finde den Ansatz, dass alles, aber auch wirklich alles ein eigenes Objekt ist, sehr praktisch.
Kann es ja auch. Nur wäre es eben ein Textobjekt, Bildobjekt, Whatever-Objekt mit dem Inhalt „Impressum“.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 21.10.2010, 19:18  
Neuer Benutzer
 
Registriert seit: 21.10.2010
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
hurrtz befindet sich auf einem aufstrebenden Ast
Standard

Deiner Argumentation kann ich prinzipiell zustimmen. Aber ich denke, du fasst den Begriff "CMS" zu weit. Ich möchte das Rad nicht neu erfinden und Typo nachbauen. Ich möchte da ansetzen, wo Typo aufhört: Ein hochspezielles und performantes CMS für genau einen Zweck. In meinem Fall ein CMS für die Eingabe von Veranstaltungen. Da ich genau weiß, welche Seiten der User zur Verfügung hat und welche Inhalte dynamisch eingebunden werden, halte ich meinen Ansatz für meinen Aufgabenbereich für akzeptabel. Aber sobald ganze Seiten dynamisch eingebunden werden sollen, wird mein Ansatz nicht mehr funktionieren. Aber das kommt später einmal
hurrtz ist offline  
Alt 21.10.2010, 19:27  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Zitat:
Zitat von hurrtz Beitrag anzeigen
Aber sobald ganze Seiten dynamisch eingebunden werden sollen, wird mein Ansatz nicht mehr funktionieren. Aber das kommt später einmal
Das hört sich doch glatt nach unnötiger Mehrarbeit an. Lieber jetzt mehr Zeit investieren und das ganze System dynamisch gestalten als irgendwann später. Ich spreche da aus eigener Erfahrung
Trainmaster ist gerade online  
Alt 21.10.2010, 19:32  
Neuer Benutzer
 
Registriert seit: 21.10.2010
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
hurrtz befindet sich auf einem aufstrebenden Ast
Standard

Keine Mehrarbeit. Mit "später" meine ich ein komplett neues Projekt. Wie gesagt: Ich möchte dieses Projekt nutzen, um Erfahrungen zu sammeln. An dieser Stelle keine Ressourcen zu investieren, habe ich als Fehler erkannt In meinem nächsten Projekt mache ich diesen Fehler in einem CMS sicher nicht mehr. So lernt man dazu

Aber wenn noch jemand was zu meinem Urpsrungstext schreiben möchte, würde ich mich freuen!
hurrtz ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Informationen bei Verlassen der Seite speichern Multivac JavaScript, Ajax und mehr 3 16.04.2010 18:25
[Erledigt] Ergebnis in eine Variable speichern sl0t PHP Tipps 2010 7 10.02.2010 13:04
Formulareingaben mit Dateiverwaltung lokal speichern pudem PHP Tipps 2009 1 27.09.2009 13:09
[Erledigt] Refresh nach Speichern verhindern stemser PHP Tipps 2008 7 12.11.2008 22:55
[Erledigt] XML ausliefern - ohne Speichern?! Curanai PHP Tipps 2008 6 23.08.2008 01:38
Audio-Recorder / Zugriff auf Mikrofon -> speichern agrajag JavaScript, Ajax und mehr 4 27.07.2008 17:19
Bild Komprimiert speichern Culutio PHP-Fortgeschrittene 15 18.02.2007 18:54
PDF per PHP - Problem bei "Ziel speichern unter..." freq.9 PHP Tipps 2006 7 18.08.2006 16:54
[Erledigt] Speichern unter... geht nicht!!! PHP-Fortgeschrittene 8 09.02.2006 16:55
Bild (.jpg) mit Link auf Festplatte speichern PsychoEagle PHP Tipps 2005-2 11 16.06.2005 14:54
Bilder speichern statt anzeigen... PHP Tipps 2005 3 25.04.2005 15:22
XML speichern McWolle PHP-Fortgeschrittene 5 04.04.2005 19:38
Mail inkl. all. Elementen speichern Beitragsarchiv 5 29.12.2004 13:21
Bild speichern das mit der GDLib erstellt wurde. Stefano PHP Tipps 2004 2 22.09.2004 11:53
Formular in Mysql Datenbank speichern Anuschka Datenbanken 1 15.08.2004 02:55

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
formulardatenspeicherung verhindern, doctrine mehrere datensätze speichern, php formular in klasse speichern, php formular daten speicherung verhindern, php klasse model daten speichern, php daten speichern klasse

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:17 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum