PEAR-Forum.de Übersicht Thema anzeigen - [HowTo] HTML_Quickform: Das "date"-Element

[HowTo] HTML_Quickform: Das "date"-Element


 

PEAR-Forum.de Übersicht » HowTo´s, Tutorials, Codebeispiele und Wissenswertes
Neues Thema eröffnen Neue Antwort erstellen Diesen Beitrag ausdrucken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Kaiuwe
User


Anmeldungsdatum: 02.06.2006
Beiträge: 188

Beitrag19.08.2006 23:11    [HowTo] HTML_Quickform: Das "date"-Element Antworten mit Zitat

Hallo QF-Freunde,
hier mal eine kleine Zusammenstellung und Anmerkungen für die Anwendung des "date"-Elementes vom Paket HTML_Quickform:


Beispiel
---------


Als erstes ein vollständiges Beispiel:
PHP:
<?php
require 'HTML/Quickform.php';

$form = new HTML_Quickform('form_date''post'$_SERVER['PHP_SELF']);

$options = array(
    
'language' => 'de'// Deutsche Texte
    
'format' => 'dMY H:i:s'// Tag, Abgekürzte Monatsnamen, Jahr, Stunde, Minute, Sekunde
    
'minYear' => '2005'// Erstes Jahr
    
'maxYear' => '2010'// Letztes Jahr
    
'addEmptyOption' => true// Leeres Feld einfügen
    
'emptyOptionValue' => ''// Wert des leeren Feldes
    
'emptyOptionText' => '--'// Text des leeren Feldes
    
'optionIncrement' => array(
                            
'i' => 5// 5 Minuten-Schritte
                            
's' => 10 // 10 Sekunden-Schritte
                        
)
);
$date HTML_Quickform::createElement('date''datum''Datum'$options);

$date->setValue(time());
$form->addElement($date);

$form->addElement('submit''submit''Absenden');

if (
$form->validate()) {
    
print_r($_POST['datum']);
}

$form->display();


Folgende Parameter stehen für format zur Verfügung:

    D => Namen der Tage in abkürzter Schreibweise
    l => Namen der Tage
    d => Zweistellige Nummer des Tage (01-31)
    M => Abgekürzte Monatsnamen
    m => Zweistellige Nummer des Monats (01-12)
    F => Kompletter Monatsname
    Y => Vierstelliges Jahr
    y => Zweistelliges Jahr
    h => Stunden im 12-Stunden-Format
    g => Stunden im 12-Stunden-Format, ohne führende Null
    H => Stunden im 24-Stunden-Format
    i => Minuten
    s => Sekunden
    a => am/pm in Kleinbuchstaben
    A => AM/PM in Großbuchstaben
    W => Wochennummer des Jahres


Alle Werte des deutschen Formats: (werden automatisch bei der Angabe 'de' für 'language' verwendet)
PHP:
<?php
'de'    => array (
            
'weekdays_short'=> array ('So''Mon''Di''Mi''Do''Fr''Sa'),
            
'weekdays_long' => array ('Sonntag''Montag''Dienstag''Mittwoch'
'Donnerstag''Freitag''Samstag'),
            
'months_short'  => array ('Jan''Feb''M&#xe4;rz''April''Mai''Juni',
'Juli''Aug''Sept''Okt''Nov''Dez'),
            
'months_long'   => array ('Januar''Februar''M&#xe4;rz''April''Mai',
'Juni''Juli''August''September''Oktober''November''Dezember')




Wertzuweisung bei "date"-Elementen
------------------------------------------


Die Zuweisung von Werten für date-Elemente ist über zwei Varianten möglich:

Variante 1: "Skalare Variablen"

Bei der ersten Variante erwartet Quickform einen Wert vom Typ "Skalare Variable" (Integer, Float, String, Boolean) und erzeugt daraus alle benötigten Werte. Zulässige Werte für setValue sind: (einige Beispiele)

    2006-07-24
    2006-07
    2006
    24 July 2006
    time()
    now

Variante 2: "Assoziatives Array"

Die zweite Variante ermöglicht die Wertzuweisung per Angabe aller Werte über ein assoziatives Array, bei dem einfach alle Werte genau den einzelnen Listenmenüs zugeordnet werden: (Beispiel)
PHP:
<?php
$date
->setValue(array('Y' => '2006''m' => '08''d' => '19'));


Achtung!
Bei der Verwendung der Variante über die skalare Variable, nutzt HTML_Quickform die "strtotime"- und die "date"-Funktion von PHP, dabei sollte Folgendes beachtet werden:
Der Standardwert '0000-00-00' aus Datenbanken erzeugt über strtotime den 30.11.1999 und dürfte in den wenigsten Fällen gewünscht sein.
Ebenfalls sollte man bedenken, das einige Betriebssysteme (z.B. Windows) keine negativen Timestamps erzeugen können und somit Datumsangaben vor dem 01.01.1970 nicht verarbeiten.

Die einfachste Lösung wäre hier das Setzen der Werte über die Array-Variante.



Verwendung von Regeln bei "date"-Elementen
-----------------------------------------------------


Grundsätzlich lassen sich alle Arten von Regeln auf das date-Elemente anwenden, aber bevor wir starten, sollten wir uns das
date-Element einmal genauer anschauen. Das sagt übrigens die Doku:
Zitat:
HTML_QuickForm_date -- Class for a group of elements used to input dates (and times).


http://pear.php.net/manual/en/package.html.html-quickform.html-quickform-date.php

Schauen wir noch in die Code-Doku:
Zitat:

HTML_Common
|
--HTML_QuickForm_element
|
--HTML_QuickForm_group
|
--HTML_QuickForm_date


http://pear.php.net/package/HTML_QuickForm/docs/latest/apidoc/HTML_QuickForm/HTML_QuickForm_date.html

Was sagt uns das? Genau, das date-Element erbt alle Eigenschaften einer Gruppe und ist somit ebenfalls eine Gruppenelement!
Also schliessen wir daraus, das sich auch die Regeln von Gruppen auf das date-Element anwenden lassen:

PHP:
<?php
$options 
= array(
    
'language'  => 'de',
    
'format'    => 'dmY',
    
'minYear'   => 2000,
    
'maxYear'   => 2010,
    
// Fügt als erste Werte Leereinträge in die Listenmenüs ein
    
'addEmptyOption'   => true,
    
'emptyOptionValue' => '',
    
'emptyOptionText'  => '--'
);
$form->addElement('date''datum''Datum'$options);

// Tag, Monat und Jahr müssen gewählt sein!
$form->addGroupRule('datum''Bitte geben Sie ein Datum an!''required'null3);
?>


http://pear.php.net/manual/en/package.html.html-quickform.intro-validation.php#package.html.html-quickform.intro-validation.rules.groups

Damit haben wir mit den hauseigenen Quickform-Regeln eine wunderbare Prüfungsroutine für Datumsfelder und wir ersparen uns so einige Code-Bomben.
Man beachte ebenfalls, das wir uns die ganze Sache auch sehr einfach über die Doku von pear.php.net erschlossen haben und ohne einen Blick in den eigentlichen Code zu werfen!


Ich hoffe es hilft vielleicht und wenn mal wieder etwas Zeit bleibt, dann baue ich die Geschichte auch noch weiter aus...

Gruss
Kaiuwe
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Diese Seite übersetzen
PEAR-Forum.de Übersicht » HowTo´s, Tutorials, Codebeispiele und Wissenswertes
Neues Thema eröffnen Neue Antwort erstellen Diesen Beitrag ausdrucken
   Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

Zu Deinen Favoriten hinzufügen

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen