Seite 1 von 1
Pear Quickform date
Verfasst: 23.06.2006, 09:22
von pebosi
Hi,
habe mit quickform ein formular erstellt, das erhält die werte aus der Datenbank, bei Textfelder kein Problem, aber wie kann ich bei einem date Feld Werte zuweisen?
hier das Feld
Code: Alles auswählen
$form->addElement('date', 'geburtsdatum', 'Geboren am:', array('format'=>'d.m.Y', 'language'=>'de', 'minYear'=>1920, 'maxYear'=>date("Y")));
Wie kann ich da jetzt den Wert aus der Datenbank, z.b. 10.05.1970, vorauswählen?
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
Verfasst: 23.06.2006, 12:58
von net(t)worker
hier mal ein beispiel wie ich es verwendet habe:
Code: Alles auswählen
$datum="10-05-70"; # tag-monat-jahr
$xy= explode("-", $datum);
$datumd=array_shift($xy);
$datumm=array_shift($xy);
$datumy=array_shift($xy);
$formdefaults=array(
'geburtsdatum' => array('d'=>$datumd,'m'=>$datumm,'Y'=>$datumy)
);
$form->setDefaults($formdefaults);
Verfasst: 23.06.2006, 13:39
von pebosi
ah, super danke.
allerdings klappt das irgendwie bei zwei Datumsfeldern nicht mehr, das Zweite hat immer die selben Werte wie das Erste, obwohl die Daten anders sein müssten
EDIT: jetzt gehts, mein Fehler...
Verfasst: 23.06.2006, 14:42
von net(t)worker
hier sind auch 2 brauchbare rules für quickform datumsfelder
Code: Alles auswählen
#
# angegebenes Datum existiert
#
function datumOK ($a){
return checkdate($a['m'],$a['d'],$a['Y']);
}
#
# user ist min. 18 Jahre alt
#
function is18($a){
$heute = getdate();
return (($heute['year'] > ($a['Y'] + 18))|| (($heute['year'] == ($a['Y'] + 18)) && ($heute['mon'] > $a['m']))||(($heute['year'] == ($a['Y'] + 18)) && ($heute['mon'] == $a['m']) && ($heute['mday'] > ($a['d']-1))));
}
und so bauste die dann ein:
Code: Alles auswählen
define ('FORMGEN_VALIDATE', "server"); # Formulareingaben erst auf Server prüfbar
$form->registerRule('is18','callback','is18');
$form->registerRule('datumOK','callback','datumOK');
$form->addRule('geburtsdatum', 'ungültiges Datum', 'datumOK', null, FORMGEN_VALIDATE);
$form->addRule('geburtsdatum', 'Mindestalter 18 Jahre', 'is18', null, FORMGEN_VALIDATE);

Verfasst: 23.06.2006, 15:55
von pebosi
Super gut, genau sowas hat mir noch gefehlt, danke!
Verfasst: 26.06.2006, 20:27
von pebosi
du weißt nicht zufällig auch, wie ich nachdem abschicken in der funktion die ich per process() aufrufe eine header - Weiterleitung einbauen kann?
Verfasst: 26.06.2006, 22:14
von net(t)worker
hmm... wo genau ist da dein problem?
Verfasst: 27.06.2006, 11:07
von pebosi
das problem ist : "Headers already sent" , habs jetzt aber anders gemacht.
Hab nun ein Problem mit Filtern, wenn ich zum Beispiel in ein Feld mit
dem Inhalt "123,5678" abschicke, will ich das der mir auf 2 Stellen nach dem Komma runden, allerdings aktualisiert der den Inhalt des Feldes nicht...
Verfasst: 27.06.2006, 17:10
von net(t)worker
axo... klar, vor dem redirect darfst du nichts anderes ausgeben.....