php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 17.08.2009, 19:36  
Erfahrener Benutzer
 
Registriert seit: 08.04.2009
Beiträge: 324
Creator befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Formulare generieren

Hallo@all

ich arbeite grade an sowas wie Zend_Form.
Mal ein kleiner ausszug wie ich ein Formular erstelle im Moment.

PHP-Code:
class loginForm extend lb_Form{
   
       
$this->setAction('index.php?page=login&action=login')
                 ->
setMethod('post')
                 ->
setAttribute('form', array('accept-charset' => 'UTF-8'))
                 ->
setMessageBlock(true)
       
       
$name = new lb_ElementText();
       
$name->setLabel('Name:')
            ->
setName('name')
            ->
addValidate('Empty''Bitte geben Sie einen Namen ein!.');
    
       
$password = new lb_ElementPassword();
       
$password->setLabel('Passwort:')
                ->
setName('passwort')
                ->
addValidate('Empty''Bitte geben Sie ein Passwort ein!.');     
       
       
$button = new lb_ElementSubmit();
       
$button->setName('login')
              ->
setValue('anmelden');
              
       
$this->addElements(array($name$password$button));
   } 
Das ganze funktioniert wunderbar inkl validierung und dem wieder darstellen im Fehlerfall mit values.
Jetzt arbeite ich grade an dem SelectElement bzw. überlege ich mir grade wie ich am besten eine selectBox erstellen möchte.
Genau hier würde mich mal eure Meinung Interessieren.

Ein Formular welches wie oben als Beispiel steht möchte ich nach möglichkeit immer für alle fälle verwenden.

1. Leeres Formular für einen neuen eintrag in der db.
2. Fals das Formular falsch ausgefüllt wurde.
3. Bei einem Update von Datensätzen. ( Automatische setzung der value Werte)

Wie bekomme ich das am besten bei select Elemente hin?
Da es hier doch sehr viele Werte gibt, die man Dynamisch setzten können muss und das am besten so simpel wie möglich.
Gruppen in einem SelectElement ( optgroup ) muss ja auch beachtet werden, was das ganze etwas Komplexer macht.

Mich Interessiert daher wie Ihr mit so einem doch etwas Komplexeren Element arbeiten würdet, die Logik da hinter denk ich mir dann gerne selber aus. Ich suche also eher Anregungen.

Geändert von Creator (17.08.2009 um 22:04 Uhr).
Creator ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 17.08.2009, 21:05  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
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

Das Zend Framework bietet dir wie fuer Texteingabefelder auch eine Klasse fuer Selectfelder. Es waere nur konsequent auch das zu verwenden.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 17.08.2009, 21:11  
Erfahrener Benutzer
 
Registriert seit: 08.04.2009
Beiträge: 324
Creator befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Das Zend Framework bietet dir wie fuer Texteingabefelder auch eine Klasse fuer Selectfelder. Es waere nur konsequent auch das zu verwenden.
Zitat:
ich arbeite grade an sowas wie Zend_Form.
Ok das war wohl ein Missverständis das ganze hat nix mit Zend zu tun. Das ist meine eigene Umsetzung an der ich arbeite.
Creator ist offline   Mit Zitat antworten
Alt 17.08.2009, 21:32  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
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

Naja woran scheitert es? Du erstellst eine Klasse SelectElement, die du beim Erstellen des Formulars instanzierst und mit den Options bzw. OptGroups fuellst. Zur Ausgabe verwendest eben einen normalen ViewHelper, der das SelectElement entgegennimmt und als HTML ausgibt, natuerlich entsprechend der Selektion.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 17.08.2009, 21:48  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
ich arbeite grade an sowas wie Zend_Form.
Sofern du daran scheiterst einen so einfachen Anwendungsfall zu implementieren, schlage ich vor, etwas fertiges zu nutzen.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 17.08.2009, 22:34  
Erfahrener Benutzer
 
Registriert seit: 08.04.2009
Beiträge: 324
Creator befindet sich auf einem aufstrebenden Ast
Standard

Ich versuch das mal an einem Beispiel klar zu machen wo für ich gerne die eine oder andere Anregung hätte.

Die Select Klasse benötigt Informationen.
Diese Informationen kann ich der Klasse auf verschiedene Arten übergeben.

Beispiel:
PHP-Code:
$select = new lb_SelectElement();
        
//setzt den Namen des Selectfeldes
        
$select->setName('autos')
               
// erstellt die Optionen.
               
->setOptions(array('BMW''VW''Mercedes'))
               
// fügt dem Tag select das Attribute class='css_class' hinzu
               
->setAttribute('select', array('class' => 'css_class')); 
So jetzt möchte ich aber options ne class verpassen oder ein value.
HTML-Code:
<option class='....' value='eine id'>BMW</option> 
Schon reicht mein obiges Beispiel nicht mehr aus.

Und genau da suche ich Anregungen wie sollte ich das machen um flexible zu bleiben aber so das man es auch noch überblicken kann.

Zitat:
Sofern du daran scheiterst einen so einfachen Anwendungsfall zu implementieren, schlage ich vor, etwas fertiges zu nutzen.
Dieses Kommentar past auf 100% aller Themen die hier im Forum vorhanden sind. Wenn das zu einfach ist, dann verschiebt es einfach ins anfänger Forum fertig.
Creator ist offline   Mit Zitat antworten
Alt 17.08.2009, 23:49  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
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

Man lernt natuerlich vieles durch ausprobieren (und beim Programmieren durch selber implementieren), aber dr.e. hat da schon recht, durch anschauen und abschauen lernt man oft viel schneller, aber vielleicht auch viel oberflaechlicher, ohne sich Gedanken ueber Details zu machen, "geht ja alles" schon mit dem Framework (irgendwie). Zu deiner Frage und zu Zend_Form_Element_Select:
Im ZF kannst du einfach einen attributes-Array uebergeben, allerdings nicht wie bei dir der Klasse SelectElement, sondern nur dem ViewHelper/Dekorator. Denn eine CSS-Klasse ist keine Information, die fuer das Form-Objekt an sich wichtig ist. Darum solltest du Form-(Element-)Dekorator benutzen, die ein Formularobjekt oder Formularelement-Objekt als HTML rendern (bekommt also das Objekt uebergeben und weiss durch die Implementierung oder durch Konfiguration, wie dieses Objekt in HTML auszusehen hat, das kann komplex sein fuer ganze Formualare, oder auch ziemlich einfach fuer ein einzelnes <input>/<select> Feld). Diesem kannst du dann den Attributes-Array (array("class" => "mySelect", "onchange" => "alert(1)")) uebergeben.
__________________
"Nuschel ich?" - "Was?"

Geändert von Chriz (17.08.2009 um 23:53 Uhr).
Chriz ist offline   Mit Zitat antworten
Alt 17.08.2009, 23:53  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

multi-dimensionales array für die daten mit jeweils passenden indizes ?

PHP-Code:
array(array('option' => 'Blub''value' =>'blub', class => 'myClass'), .... ); 
Code:
<option class='myClass' value='blub'>Blub</option>
robo47 ist offline   Mit Zitat antworten
Alt 18.08.2009, 03:30  
yab
Erfahrener Benutzer
 
Registriert seit: 05.04.2009
Beiträge: 291
PHP-Kenntnisse:
Anfänger
yab befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von dr.e. Beitrag anzeigen
Sofern du daran scheiterst einen so einfachen Anwendungsfall zu implementieren, schlage ich vor, etwas fertiges zu nutzen.
Formular-Generierung/Validierung ist also ein einfacher Anwendungsfall?
Was schlägst du denn vor?
yab ist offline   Mit Zitat antworten
Alt 18.08.2009, 09:17  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.127
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

So was wie Zend Form ist meines Erachtens eh nicht sinnvoll.

Allein der Webdesigner sollte entscheiden wo, wie welche Elemente dargestellt
werden, ob das Formular nun per Tabellenlayout dargestellt wird oder mit fieldset, lable usw.
Die Position der Fehlermeldungen sollte ebenso völlig frei vom Webdesigner defnierbar sein
wie die Angabe des style oder class-Attributs und die Reihenfolge der Formularlemente.

Diese Sachen gehören also einzig und allein in ein html-(Template-)Datei.

Von einem Webdesigner kann man nicht verlangen, daß er so fit in Sachen Programmierung ist,
daß er die Decorators selber schreibt und integriert.

Die Informationen wie das Feld validiert werden soll,
lassen sich ggf. im id-Attribut unterbringen:

<input type="text" name="r_int_10_plz" name="r_int_10_plz" ... oder so ähnlich,
wobei "r_" für required/Pflichtfeld steht.

Anmerkung:
ich hab gestern ein MVC-Tutorial gelesen, wo der Programmierer witzigerweise meint,
daß er zwar PHP beherrscht aber seine HTML-Kenntnisse in Bezug auf Formulare sehr
begrenzt sind ...

Geändert von Koala (18.08.2009 um 09:23 Uhr).
Koala ist offline   Mit Zitat antworten
Antwort


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
Formulare externer Seiten nutzen tarian Trash 8 16.04.2009 02:35
[Erledigt] zwei Formulare - ein Eingabefeld Jasper PHP Tipps 2009 6 09.02.2009 21:40
Snoopy Formulare absenden helios PHP-Fortgeschrittene 17 26.12.2008 12:55
Formulare (Benutzer-Profil) aus MySQL generieren stockholm PHP-Fortgeschrittene 2 18.12.2008 14:11
php für mehrere formulare tosalileo PHP Tipps 2008 6 03.02.2008 18:41
Formulare automatisch ausfüllen lassen? Marlboro PHP Tipps 2008 4 23.08.2007 20:30
gehackte Formulare seb-web PHP-Fortgeschrittene 50 01.08.2006 15:59
Formulare verschachteln R4v3r HTML, Usability und Barrierefreiheit 8 16.01.2006 11:09
Mehrere Formulare auf einmal abschicken PHP Tipps 2005-2 3 23.09.2005 10:31
Formulare Fehlerbehandlung (ausgefüllt/richtiges Format,...) PHP Tipps 2005-2 2 04.09.2005 15:32
[Erledigt] zwei Formulare in einer Datei unterscheiden PHP Tipps 2005-2 5 12.08.2005 19:37
mehrere Formulare auf einer Seite kampfnickel PHP Tipps 2005 17 15.03.2005 13:37
Mehrere Formulare in einer Datei.... PHP Tipps 2005 7 10.03.2005 21:55
Formulare mit <label> oder ne Tabelle HTML, Usability und Barrierefreiheit 3 10.03.2005 21:35
zwei formulare... HTML, Usability und Barrierefreiheit 3 18.01.2005 10:38

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
zend_form_element_select beispiel, zend_form_element_select optgroup, formulare generieren, formular generieren, zend_form_element_select datenbank, zend form optgroup, php klasse formular generierung, zend_form_element_select onchange, zend_form optgroup, zend form addelement onchange, zend_form_element_select onchange setattribute, php formulare generieren, zend_form_element_select daten aus datenbank, zend_form_element_select daten aus db, eigen viewhelper select optgroup, zend formselect css, zend setoption verschachteln, zend_form text nur ausgabe, formular generieren?, zend_form setlabel utf-8

Alle Zeitangaben in WEZ +1. Es ist jetzt 15:16 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