Login Retreive lost passwordRegister
Search

Forum Index / NL Forum / form afhandelen in user object

[ This topic is solved ]

  Marcel 13 July 08 / 00:02  
Changed at 13 July 08 / 00:06
Hoi... Ik ben nogal een beginner hoor :-)

Ik heb een form gemaakt met formhandler. 1 van de velden is :

$form->datefield('Geboortedatum','fld_birthdate',null,true,'d-m-y','90:-10'); 


Wat ik doe is bij de onCorrect :

$form->onCorrect(array(&$user,'saveNewUser'));


Dit gaat goed.... in de user object, method saveNewUser, haal ik de veldwaardes op met bijvoorbeeld:

$fld_UserName = $HTTP_POST_VARS["fld_username"];


en sla deze waardes vervolgens op in de database. Dit werkt allemaal uitstekend... behalve voor dat datefield dat hierboven beschreven staat. Deze krijgt in de database waarde 0000-00-00

Het veld (MySQL db) is een veld van type 'date' geen default value.

Ik heb ook geprobeerd de volgorde van de velden in het form te veranderen (y-m-d) maar dat helpt uiteraard niet, dit is alleen visuele volgorde.

Ik haal de waarde op in de saveNewUser method als:

$fld_DateOfBirth = $HTTP_POST_VARS["fld_birthdate"];


En ik vermoed dat hier de fout in zit. Maar hoe kan ik in die user object de juiste waarde van dat datefield ophalen en opslaan?

Thanx !

  Johan Wiegel (Admin) 13 July 08 / 08:42  
je geeft het zelf al aan.

ik stel voor dat je eens kijkt in je post array naar wat er aanwezig is.
je zult zien dat datum in dag maand jaar worden teruggegeven in losse velden.

suc6

  Remco van Arkelen (Admin) 13 July 08 / 09:13  
$HTTP_POST_VARS is trouwens een notatie die stamt uit PHP3 (lees: 2000/2001) ;) Gebruik $_POST wanneer je gegevens uit dit array nodig hebt.

Normaal gesproken maak je inderdaad gebruik van het data array dat FormHandler teruggeeft:

<?php
class User
{
  public function 
SaveNewUser$aUser )
  {
    
print_r$aUser );
  }
}

$oForm = new FormHandler( );
$oForm->textField'Naam''naam'FH_NOT_EMPTY );
$oForm->dateField'Geboortedatum''dob' );
$oForm->submitButton'Opslaan' );
$oForm->onCorrect( array( new User(), 'SaveNewUser') );
$oForm->flush( );
?>

  Marcel 13 July 08 / 09:45  
Bedankt voor de reacties.

Het enige wat ik had hoeven doen is kijken naar de page-source van het form. Daarin had ik gezien dat fld_birthdate inderdaad gewoon 3 velden heeft, 'fld_birthdate_day' etc...

En de $_POST: ik had een kopietje gemaakt van hele oude code :-) Ben ook pas weer net bezig ermee. Grappig wel dat ik op internet een aantal maal lees dat php5 dit niet meer heeft, maar dat het nog wel werkt :-) Ik ga het wel even gelijk veranderen. Bedankt voor de pointers !!!

  Marcel 13 July 08 / 10:46  
Changed at 13 July 08 / 10:47
Oke... aangepast. Ik heb ook maar gelijk gebruik gemaakt van de data array die meegegeven wordt.

class User
{
  public function SaveNewUser( $postdata )
  {
    $dateparts = explode("-",$postdata["fld_birthdate"]);
    $fld_DateOfBirth = date("Y-m-d",strtotime($dateparts[2]."-".$dateparts[1]."-".$dateparts[0]));

    // Vervolgens $fld_DateOfBirth in database opslaan

  }



Nogmaals bedankt.

  Top


powered by PHP-GLOBE   © 2004 - 2008 FormHandler. All rights reserved.   -   Open source license