IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème de classe et d'affichage [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Problème de classe et d'affichage
    Olivier (si je tombe sur toi... tu connais mon site et problème)

    J'ai un souci avec ma classe date... tu peux le visualiser sur 3w.jecrapahute.fr
    Si je rentre une date, j'affiche bien EN DISPLAY en sortie la date encodée.
    Mais dans le fiedset date, j'ai toujours la date du jour...
    Je ne comprends pas d'où vient cette erreur....

    Voici le code de ma classe date (à savoir que toutes les propriétés sont définies dans la class Kernel enfant de Form.... )

    Les parties du code que je crois importantes et que j'ai ajoutées pour solutionner ce problème sont en gras !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    <?php
    /**
    * 	DATE[validation] constructor
    *
    */	
    class Date extends Form
    {	protected $name, $must, $legend, $defaut, $date, $dd, $mm, $yy, $day, $mon, $year ;
    	private   $month   = array	(	"01"   =>  "Jan" , 	"02"   =>  "Fev" ,	"03"  =>  "Mar" ,	"04"   	=>  "Avr" ,
    									"05"   =>  "Mai" ,	"06"   =>  "Jui" ,	"07"  =>  "Jul" ,	"08"	=>  "Aou" ,
    									"09"   =>  "Ssp" ,	"10"   =>  "Oct" ,	"11"  =>  "Nov" ,	"12"  	=>  "Dec" 
    								) ;
    
    	function __construct($name, $must, $legend=NULL, $default=NULL)
    	{	$this->name   = $name ;
    		$this->must   = $must ;
    		$this->legend = $legend ;
    				
    		$this->value = (isset( $_POST["$this->name"] ) ) ? trim($_POST["$this->name"]) : NULL ;
    		if ($default == NULL)
    			$this->date = date("dmY") ;
    		$this->dd	= $this->fill(substr($this->date,0,2),2) ;  	// 	ddmmyyyy
    		$this->mm	= $this->fill(substr($this->date,2,2),2) ;  	//	01234567 	
    		$this->yy	= $this->fill(substr($this->date,4,4),4) ;		//	========
    	}
    	
    	function __destruct()
    	{}
    	
    	function execute()
    	{	if ($this->debug)
    			user_error("Date[execute] [".$this->name."][".$this->value."][".$this->type."]" , E_USER_NOTICE) ;
    	}
    
    /**
    *	ifFilled
    *	=======
    */	
    	function ifFilled()
    	{	$filled = empty($this->value) ? false : true ;
    		if ($this->debug)
    			user_error("ifFilled[".$filled."][".$this->name."][".$this->value."][".$this->len."]" , E_USER_NOTICE) ;
    		return( $filled ) ;
    	}
    
    /**
    * 	mustFill
    *
    */	
    	function mustFill() 
    	{	$must = $this->must && empty($this->value) ? true : false ;
    		if ($this->debug)
    			user_error("mustFill[".$this->name."][".$must."]" , E_USER_NOTICE) ;
    		return( $must ) ; 
    	}
    	
    /**
    *	fill
    *	====
    */
    	
    	function fill($str,$len)
    	{	for ($i = 0 ; (strlen($str) < $len) ; $i++)
    			$str = "0" . $str ;
    		return($str) ;
    	}
    	
    /**
    *	validate
    *	========
    */
    	function validate()
    	{	var_dump($this->mon,$this->day,$this->year) ;
    		$rc = checkdate($this->mon, $this->day,  $this->year ) ;
    		var_dump($rc) ;
    		return( $rc ? OK : ERRDATE) ;  
    	}
    	
    /**
    *	display
    *	=======
    *
    */	
    	function pickup($start,$end,$frmfld,$default=0)
    	{	echo "<select name='" . $frmfld . "' id='" . $frmfld . "'>\n";
    		for ($i = $start ; $i <= $end ; $i++)
    		{	$d = $this->fill($i,2) ;
    			if (strcmp($default,$d) == 0)
    				echo '  <option value="' . $d . '" selected">' . $d. "</option>\n" ;
    			else
    				echo '  <option value="' . $d .           '">' . $d . "</option>\n" ;
    		}
    		echo "</select>\n" ;
    	}
    	
    	function select($valarray,$frmfld,$default=0)
    	{	echo "<select name='" . $frmfld . "' id='" . $frmfld . "'>\n";
    		foreach ($valarray as $key => $value)
    		{	if (strcmp($default,$key) == 0)
    				echo '  <option value="' . $key . '" selected">' . $value . "</option>\n" ;
    			else
    				echo '  <option value="' . $key .           '">' . $value . "</option>\n" ;
    		}
    		echo "</select>\n" ;
    	}
    	
    /**
    *	getFieldName
    *	============
    *
    */	
    	function getFieldName()
    	{	return($this->name) ; }
    	
    /**
    *	getFieldLegend
    *	==============
    *
    */	
    	function getFieldLegend()
    	{	return($this->legend) ; }
    	
    /**
    *	getFieldValue
    *	=============
    *
    */	
    	function getFieldValue()
    	{	return( $this->value ) ; }
    
    /**
    *	display
    *	=======
    *
    */	
    	function display()
    	{	echo "<fieldset><legend  class='form_lbl'>" ;
    		echo $this->legend ;
    		echo "</legend>" ;
    		echo '<span class="form_fld fieldset">' ;
    		$this->pickup(1,31, $name="dd",$default=$this->dd) ;
    		echo '</span>' ;    	
    		echo '<span class="form_bkg fieldset">' ;
    		echo "-" ;
    		echo '</span>' ;    	
    		echo '<span class="form_fld fieldset">'  ;
    		$this->select($this->month, $name="mm",$default=$this->mm) ;
    		echo '</span>' ;    	
    		echo '<span class="form_bkg">' ;
    		echo "-" ;
    		echo '</span>' ;    	
    		echo '<span class="form_fld">'  ;
    		$this->pickup(1920,2020, $name="yy",$default=$this->yy) ;
    		echo '</span>' ;    	
    		echo "</fieldset>" ;
    		
    		$this->day  = (isset($_POST["dd"])) ? $_POST["dd"] : date("d") ;
    		$this->mon  = (isset($_POST["mm"])) ? $_POST["mm"] : date("m") ;  
    		$this->year = (isset($_POST["yy"])) ? $_POST["yy"] : date("Y") ; 
    		var_dump($this->mon,$this->day,$this->year) ;
    	}
    
    
    }
    	
    /**
    *	getFieldName
    *	============
    *
    */	
    	function getFieldName()
    	{	return($this->name) ; }
    	
    /**
    *	getFieldLegend
    *	==============
    *
    */	
    	function getFieldLegend()
    	{	return($this->legend) ; }
    	
    /**
    *	getFieldValue
    *	=============
    *
    */	
    	function getFieldValue()
    	{	return( strftime("%Y%m%d", $this->year, $this->mon, $this->day) ) ; }
    /** =========================================================================================================================================================
    *	End Of Class: DATE
    * ======================================================================================================================================================== */
    Donc - je me répète - si je rentre un autre date dans le Fieldset, je displays bien en dessous après exécution:

    string(2) "03" string(2) "04" string(4) "1991"


    Mais le fieldset est tjs à la date du jour....

    ?>

    Voici les var_dump de tout mon écran:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Array ( 
    [nom] => Array ( [0] => String [1] => Votre Nom [2] => Mathot ) 
    [prenom] => Array ( [0] => String [1] => Votre prénom [2] => Etienne ) [email] => Array ( [0] => Email [1] => Votre adressse Courrielle [2] => a.b@cdf.be ) 
    [cemail] => Array ( [0] => Email [1] => Confirmation de votre Courrielle [2] => a.b@cdf.be ) 
    [phone] => Array ( [0] => Phone [1] => Votre numéro de téléphone [2] => 046741 ) 
    [numero] => Array ( [0] => Decimal [1] => Numéro d'habitation [2] => 13 ) [boite] => Array ( [0] => String [1] => Boite éventuelle [2] => ) 
    [voie] => Array ( [0] => String [1] => Nom de voie [2] => cote ) 
    [zip] => Array ( [0] => Decimal [1] => Code postal [2] => 30 ) 
    [naissance] => Array ( [0] => Date [1] => Date de naissance [2] => MISSING DATE HERE !!!!!!) 
    [pays] => Array ( [0] => Select [1] => Pays de résidence [2] => France ) [question] => Array ( [0] => Select [1] => Question Secrète [2] => Nom de votre animal favoris ) 
    [secretanswer] => Array ( [0] => String [1] => Réponse à cette question [2] => Victor ) 
    [job] => Array ( [0] => Select [1] => Profession [2] => cadre commercial ) [pass] => Array ( [0] => Password [1] => Mot de passe [2] => sssssssss ) [cpass] => Array ( [0] => Password [1] => Confirmation du mot de passe [2] => ssssssssss ) 
    [text] => Array ( [0] => Textarea [1] => Commentaires éventuels [2] => dddddddddddddddddddddddddddddddddddddddddddddddddd ) ) Array ( [nom] => Array ( [0] => String [1] => Votre Nom [2] => Mathot ) [prenom] => Array ( [0] => String [1] => Votre prénom [2] => Etienne ) [email] => Array ( [0] => Email [1] => Votre adressse Courrielle [2] => a.b@cdf.be ) [cemail] => Array ( [0] => Email [1] => Confirmation de votre Courrielle [2] => a.b@cdf.be ) [phone] => Array ( [0] => Phone [1] => Votre numéro de téléphone [2] => 0467694641 ) [numero] => Array ( [0] => Decimal [1] => Numéro d'habitation [2] => 1693 ) [boite] => Array ( [0] => String [1] => Boite éventuelle [2] => ) [voie] => Array ( [0] => String [1] => Nom de voie [2] => cote d Aulas ) [zip] => Array ( [0] => Decimal [1] => Code postal [2] => 30120 ) [naissance] => Array ( [0] => Date [1] => Date de naissance [2] => ) [pays] => Array ( [0] => Select [1] => Pays de résidence [2] => France ) [question] => Array ( [0] => Select [1] => Question Secrète [2] => Nom de votre animal favoris ) [secretanswer] => Array ( [0] => String [1] => Réponse à cette question [2] => Victor ) [job] => Array ( [0] => Select [1] => Profession [2] => cadre commercial ) [pass] => Array ( [0] => Password [1] => Mot de passe [2] => sssssssss ) [cpass] => Array ( [0] => Password [1] => Confirmation du mot de passe [2] => ssssssssss ) [text] => Array ( [0] => Textarea [1] => Commentaires éventuels [2] => dddddddddddddddddddddddddddddddddddddddddddddddddd ) )
    Merci à ceussss qui m'aideront à sortir de là.....
    Esteban

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est
    $this->mon,
    $this->day,
    $this->year

    ou

    $this->mm
    $this->dd
    $this->yy

    ?

    sinon pour parser une date c'est date_parse, ou pour mettre les mois en français c'est strftime pas besoin de faire d'array

  3. #3
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Problèm de classe Date
    Merci, je ne connaissais pas cette fonction, je vais essayer mais où, je vais chercher...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    J'ai ceci dans le constructeur de la classe date
    
    		if ($default == NULL)
    			$this->date = date("dmY") ;
    		$this->dd	= $this->fill(substr($this->date,0,2),2) ;  	// 	ddmmyyyy
    		$this->mm	= $this->fill(substr($this->date,2,2),2) ;  	//	01234567 	
    		$this->yy	= $this->fill(substr($this->date,4,4),4) ;		//	========
    		$def_data   = date_parse  ( $this->date ) ;
    		print_r($def_date) ;
    	}
    Mais rien n'est affiché... je creuse...

    Suite...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		if ($default == NULL)
    			$this->date = date("dmY") ;
    print_r($this->date) ;
    		$this->dd	= $this->fill(substr($this->date,0,2),2) ;  	// 	ddmmyyyy
    		$this->mm	= $this->fill(substr($this->date,2,2),2) ;  	//	01234567 	
    		$this->yy	= $this->fill(substr($this->date,4,4),4) ;		//	========
    		$def_data   = date_parse  ( $this->date ) ;
    		print_r($def_date)
    ;

    la date affichée est bien: 08112010

    Merci bcp !
    Esteban

  4. #4
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Problème de classe Date & Affichage
    Bonjour,

    Qui n'avance pas recule... ben j'avance pas à pas...

    Mon souci réside dans (voir 3w.jecrapahute.fr où j'ai des soucis dans l'affichage initiale de la date de naissance
    La classe semble se déroule OK, je peux modifier cette date, je clique Envoi et elle est restituée OK


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Affiché ==> Date de naissance 06-16-1992
     
    Display ---> string(2) "06" string(2) "16" string(4) "1992"

    Mais le souci réside dans getFieldValue qui me transforme ma date en 19703501 ??????? !!!!!!!!!!

    Il y a 3 classes en jeu => Kernel => Form => Date.

    Je mets cette dernière ci-dessous en mettant en gras les parties que je pense être "stratégiques" !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    <?php
    /**
    * 	DATE[validation] constructor
    *
    */	
    class Date extends Form
    {	private   $month   = array	(	"01"   =>  "Jan" , 	"02"   =>  "Fev" ,	"03"  =>  "Mar" ,	"04"   	=>  "Avr" ,
    									"05"   =>  "Mai" ,	"06"   =>  "Jui" ,	"07"  =>  "Jul" ,	"08"	=>  "Aou" ,
    									"09"   =>  "Ssp" ,	"10"   =>  "Oct" ,	"11"  =>  "Nov" ,	"12"  	=>  "Dec" 
    								) ;
    
    	function __construct($name, $must, $legend=NULL, $default=NULL)
    	{	$this->name   = $name ;
    		$this->must   = $must ;
    		$this->legend = $legend ;
    				
    		$this->value = (isset( $_POST["$this->name"] ) ) ? trim($_POST["$this->name"]) : NULL ;
    		if ($default == NULL)
    			$this->date = date("YMd") ;  							// 	2010Nov09
    		$this->yy	= $this->fill(substr($this->date,0,4),4) ;		//	=========
    		$this->mm	= $this->fill(substr($this->date,4,3),3) ;  	//	012345678 	
    		$this->dd	= $this->fill(substr($this->date,7,2),2) ;  	// 	yyyymmmdd
    print_r($this->date) ;
    	}
    	
    	function __destruct()
    	{}
    	
    	function execute()
    	{	if ($this->debug)
    			user_error("Date[execute] [".$this->name."][".$this->value."][".$this->type."]" , E_USER_NOTICE) ;
    	}
    
    /**
    *	ifFilled
    *	=======
    */	
    	function ifFilled()
    	{	$filled = empty($this->value) ? false : true ;
    		if ($this->debug)
    			user_error("ifFilled[".$filled."][".$this->name."][".$this->value."][".$this->len."]" , E_USER_NOTICE) ;
    		return( $filled ) ;
    	}
    
    /**
    * 	mustFill
    *
    */	
    	function mustFill() 
    	{	$must = $this->must && empty($this->value) ? true : false ;
    		if ($this->debug)
    			user_error("mustFill[".$this->name."][".$must."]" , E_USER_NOTICE) ;
    		return( $must ) ; 
    	}
    	
    /**
    *	fill
    *	====
    */
    	
    	function fill($str,$len)
    	{	//for ($i = 0 ; (strlen($str) < $len) ; $i++)
    		//	$str = "0" . $str ;
    		return($str) ;
    	}
    	
    /**
    *	validate
    *	========
    */
    	function validate()
    	{	return( checkdate($this->mm, $this->dd,  $this->yy )  ? OK : ERRDATE) ;  }
    	
    /**
    *	display
    *	=======
    *
    */	
    	function pickup($start,$end,$len,$frmfld,$default)
    	{	echo "<select name='" . $frmfld . "' id='" . $frmfld . "'>\n";
    		for ($i = $start ; $i <= $end ; $i++)
    		{	$d = $this->fill($i,$len) ;
     			if (strcmp($default,$d) == 0)
    				echo '  <option value="' . $d . '" selected">' . $d. "</option>\n" ;
    			else
    				echo '  <option value="' . $d .           '">' . $d . "</option>\n" ;
    		}
    		echo "</select>\n" ;
    	}
    	
    	function select($valarray,$frmfld,$default)
    	{	echo "<select name='" . $frmfld . "' id='" . $frmfld . "'>\n";
    		foreach ($valarray as $key => $value)
    		{	if (strcmp($default,$key) == 0)
    				echo '  <option value="' . $key . '" selected">' . $value . "</option>\n" ;
    			else
    				echo '  <option value="' . $key .           '">' . $value . "</option>\n" ;
    		}
    		echo "</select>\n" ;
    	}
    	
    /**
    *	display
    *	=======
    *
    */	
    	function display()
    	{	$this->dd = (isset($_POST["dd"])) ? $_POST["dd"] : date("d") ;
    		$this->mm = (isset($_POST["mm"])) ? $_POST["mm"] : date("M") ;  
    		$this->yy = (isset($_POST["yy"])) ? $_POST["yy"] : date("Y") ; 
    
    		echo "<fieldset><legend  class='form_lbl'>" ;
    		echo $this->legend ;
    		echo "</legend>" ;
    		echo '<span class="form_fld fieldset">' ;
    		$this->pickup(1,31,2, $name="dd",$default=$this->dd) ;
    		echo '</span>' ;    	
    		echo '<span class="form_bkg fieldset">' ;
    		echo "-" ;
    		echo '</span>' ;    	
    		echo '<span class="form_fld fieldset">'  ;
    		$this->select($this->month, $name="mm",$default=$this->mm) ; //array_search($this->mm, $this->month)) ;
    		echo '</span>' ;    	
    		echo '<span class="form_bkg">' ;
    		echo "-" ;
    		echo '</span>' ;    	
    		echo '<span class="form_fld">'  ;
    		$this->pickup(1920,2020,4, $name="yy",$default=$this->yy) ;
    		echo '</span>' ;    	
    		echo "</fieldset>" ;
    
    		$this->yy = (isset($_POST["yy"])) ? $_POST["yy"] : NULL ;		
    		$this->mm = (isset($_POST["mm"])) ? $_POST["mm"] : NULL ;		
    		$this->dd = (isset($_POST["dd"])) ? $_POST["dd"] : NULL ;		
    /*
    		$date     = (isset($birthday)) ? $birthday->getFieldValue() : NULL ; // date("YMd") ;
    		var_dump($date) ;	
    
    		$def_date   = date_parse  ( date("dMY") ) ;
     		var_dump($def_date) ;
    		print('bool DD ' . isset($_POST["dd"]) . $_POST["dd"]) ;
    */	
    		var_dump($this->mm,$this->dd,$this->yy) ;
    	
    	}
    	
    /**
    *	getFieldName
    *	============
    *
    */	
    	function getFieldName()
    	{	return($this->name) ; }
    	
    /**
    *	getFieldLegend
    *	==============
    *
    */	
    	function getFieldLegend()
    	{	return($this->legend) ; }
    	
    /**
    *	getFieldValue
    *	=============
    *
    */	
    
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    123456789
    	function getFieldValue()
    	{	$date = strftime("%Y%M%d", sprintf("%4d2s2d",$this->yy, $this->mm, $this->dd) ) ;  	//  19703501
    																							//  ====--==
    																							//	0123456789
    user_error("Date de naissance[".$date."]", E_USER_NOTICE) ;
    //		var_dump($date) ;
    		return( $date ) ; 
    	}
    }
    /** ========================================================================================================================================================= * End Of Class: DATE * ======================================================================================================================================================== */ ?>
    Remarque: une date YYMMdd est un fieldset de 3 champs dd,mm et yy (il faudra que je prenne des précautions en cas d mutltiples "date" dans une même forme, une idée ?)

    Les classes Date et Form sont appelées comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    /**
    *	Instanciation de la FORME
    *	=========================
    */	
    	$cf = new Form(		$fields = array (  	
    					$nom 	  		= new String   (  "nom"			,  	MUST  	,   "Votre Nom"							,	Alpha	, 3		, 30 		)  ,
    	 				$prenom   		= new String   (  "prenom"		,  	MUST  	,   "Votre prénom"						,	Alpha	, 3		, 30 		)  ,
     					$email 	  		= new Email    (  "email"  		,  	MUST	, 	"Votre adressse Courrielle"			,	Mail 	, 8		, 30 		)  ,
     					$cemail   		= new Email    (  "cemail"  	,  	MUST	, 	"Confirmation de votre Courrielle"	,   Mail 	, 8		, 30 		)  ,
     					$phone    		= new Phone    (  "phone"		, 	MUST 	,   "Votre numéro de téléphone"						, 10    			)  , 
     					$numero   		= new Decimal  (  "numero" 		,   MUST	, 	"Numéro d'habitation"				,	UINT	, 1		,  5 		)  ,
     					$boite    		= new String   (  "boite"  		,  	OPT		, 	"Boite éventuelle"					,	aNum    , 1		,  4 		)  ,
       					$voie     		= new String   (  "voie"		,  	MUST  	, 	"Nom de voie"						,	aNumE	, 3		, 30 		)  ,  
     					$zip     		= new Decimal  (  "zip"   		,  	MUST	, 	"Code postal"						,	UINT 	, 5		,  5 		)  ,
    					$birthday 		= new Date     (  "naissance"	,   MUST    ,   "Date de naissance"                                        			)  ,
    
    
    M
    erci à ceusss qui me donneront le coup de pouce pour me sortir de là
    Esteban

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    tu veux transformer ca : 06-16-1992 en ca 19921606 ?

  6. #6
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Problème de classe Date
    Non,

    Mon problème réside dans la prise en charge et la restitution de la date;..

    Crois-tu que 19703501 soit une date valable ?

    Et bien c'est ce que j'ai....

    Attends 5 min (10h34) que mon ftp soit terminé et tu pouras voir les displays 3w.jcrapahute.fr

    Merci
    Esteban

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par ETVigan Voir le message
    Non,

    Mon problème réside dans la prise en charge et la restitution de la date;..

    Crois-tu que 19703501 soit une date valable ?

    Et bien c'est ce que j'ai....

    Attends 5 min (10h34) que mon ftp soit terminé et tu pouras voir les displays 3w.jcrapahute.fr

    Merci
    en meme temps ta mal utliser le strftime, d'ailleur pourquoi avec utilise strftime alors que tu n'utilisa pas de local, et il attend un timestamp toi ta mis une chaine

  8. #8
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Problèm de classe Date
    Je ne sais si je viens de toucher du doigt ta remarque mais voici (après mon ftp) ce que mes displays écran me donnent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    2010Nov09
    Notice: A non well formed numeric value encountered in /homez.231/jecrapah/www/class/validation/date.php on line 169
     
    Notice: Date de naissance[19703501] in /homez.231/jecrapah/www/class/validation/date.php on line 172
    et comme par hasard:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /**
    *	getFieldValue
    *	=============
    *
    */	
    	function getFieldValue()
    169 =>	{	$date = strftime("%Y%M%d", sprintf("%4d2s2d",$this->yy, $this->mm, $this->dd) ) ;  	//  19703501
    																							//  ====--==
    																							//	0123456789
    172 =>user_error("Date de naissance[".$date."]", E_USER_NOTICE) ;
    //		var_dump($date) ;
    		return( $date ) ; 
    	}
    S'il est exact que je n'ai pas un timestamp ici:

    $date = strftime("%Y%M%d", sprintf("%4d2s2d",$this->yy, $this->mm, $this->dd) )

    je pensais à tord, que les champs manquants étaient initialisés à zéro....

    Bon, je continue à chercher... mais OK pour recevoir des idées (sur le fait d'avoir plusieurs champs date dans une forme aussi !!!)

    Comment ferais-tu à ma place ?

    Merci à tous !
    Esteban

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    a quoi est égale $this->date (en exemple)
    et que doit rendre getFieldValue

  10. #10
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Problème de classe Date
    getFieldValue doit retourner exactement le contenu de la date (Fieldset), siècle en tête pour aider les comparaisons, donc, YYYYMMDD, 8 bytes....

    Merci @ toi....
    Esteban

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par ETVigan Voir le message
    getFieldValue doit retourner exactement le contenu de la date (Fieldset), siècle en tête pour aider les comparaisons, donc, YYYYMMDD, 8 bytes....

    Merci @ toi....
    voila t'as ta reponse

  12. #12
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Problèm de classe Date
    Pige pas... sorry
    Esteban

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par ETVigan Voir le message
    Pige pas... sorry
    Citation Envoyé par ETVigan
    getFieldValue doit retourner exactement le contenu de la date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function getFieldValue()
    {
        return $this->date;
    }

  14. #14
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Problèm de classe Date
    Si dans le constructeur de date, je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    	function __construct($name, $must, $legend=NULL, $default=NULL)
    	{	$this->name   = $name ;
    		$this->must   = $must ;
    		$this->legend = $legend ;
    				
    		$this->value = (isset( $_POST["$this->name"] ) ) ? trim($_POST["$this->name"]) : NULL ;
    		if (isset($default))
    			{
    				$this->date = date("YMd") ;  			
    				print("CONSTRUCT TRUE") ;
    			}
    		else
    			print("CONSTRUCT FALSE") ;				// 	2010Nov09
    		$this->yy	= $this->fill(substr($this->date,0,4),4) ;		//	=========
    		$this->mm	= $this->fill(substr($this->date,4,3),3) ;  	//	012345678 	
    		$this->dd	= $this->fill(substr($this->date,7,2),2) ;  	// 	yyyymmmdd
    print_r($this->date) ;
    	}
    j'affiche:
    Alors que défault n'est pas utilisé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    					$birthday 		= new Date     (  "naissance"	,   MUST    ,   "Date de naissance"                                        			)  ,
    Si je comprends bien, avoir $variable=NULL === isset($varaible === false,
    c'est normal.

    Merci
    Esteban

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    donc ?

  16. #16
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Problèm de classe Date
    Mais get FieldValue est censé le faire, n'oublie pas le fieldset.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    /**
    *	display
    *	=======
    *
    */	
    	function display()
    	{	$this->dd = (isset($_POST["dd"])) ? $_POST["dd"] : date("d") ;
    		$this->mm = (isset($_POST["mm"])) ? $_POST["mm"] : date("M") ;  
    		$this->yy = (isset($_POST["yy"])) ? $_POST["yy"] : date("Y") ; 
    
    		echo "<fieldset><legend  class='form_lbl'>" ;
    		echo $this->legend ;
    		echo "</legend>" ;
    		echo '<span class="form_fld fieldset">' ;
    		$this->pickup(1,31,2, $name="dd",$default=$this->dd) ;
    		echo '</span>' ;    	
    		echo '<span class="form_bkg fieldset">' ;
    		echo "-" ;
    		echo '</span>' ;    	
    		echo '<span class="form_fld fieldset">'  ;
    		$this->select($this->month, $name="mm",$default=$this->mm) ; //array_search($this->mm, $this->month)) ;
    		echo '</span>' ;    	
    		echo '<span class="form_bkg">' ;
    		echo "-" ;
    		echo '</span>' ;    	
    		echo '<span class="form_fld">'  ;
    		$this->pickup(1920,2020,4, $name="yy",$default=$this->yy) ;
    		echo '</span>' ;    	
    		echo "</fieldset>" ;
    
    		$this->yy = (isset($_POST["yy"])) ? $_POST["yy"] : NULL ;		
    		$this->mm = (isset($_POST["mm"])) ? $_POST["mm"] : NULL ;		
    		$this->dd = (isset($_POST["dd"])) ? $_POST["dd"] : NULL ;		
    /*
    		$date     = (isset($birthday)) ? $birthday->getFieldValue() : NULL ; // date("YMd") ;
    		var_dump($date) ;	
    
    		$def_date   = date_parse  ( date("dMY") ) ;
     		var_dump($def_date) ;
    		print('bool DD ' . isset($_POST["dd"]) . $_POST["dd"]) ;
    */	
    		var_dump($this->mm,$this->dd,$this->yy) ;
    	
    	}
    Esteban

  17. #17
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Problèm de classe Date
    if (!isset($default))
    {
    $this->date = date("YMd") ;
    print("CONSTRUCT TRUE") ;
    }
    else
    print("CONSTRUCT FALSE") ; // 2010Nov09
    Esteban

  18. #18
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    donc c'est pas exactement la même chose...
    donne un vrai exemple, c'est je te demande depuis le debut

    qu'est ce que t'as en entrée et qu'est ce que tu veux en sortie
    d'apres ce que tu montre

    en entrer ta un date style YMd et ton getFieldValue renvoie un date YMd ...

  19. #19
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Problèm de classe Date
    Donc, nous sommes bien d'accord, les formats d'entrée et de sortie sont les mêmes !

    S'il n'y a pas de défault, c'est le cas, j'initialise à la date du jour, voir constructeur...

    Sinon, c'est en jouant avec la date dans le fieldset que que tu changes les 3 champs qui la compose et dont le contenu doit être remonté par getFieldValue() sous le format Ymd
    ----
    Je viens de me rendre compte n te répondant... que je fais une erreur dans le format d'entrée et de sortie qui tous 2 doivent être Ymd et non YMd (que j'affiche mais ce n'est pas la même chose)
    ----

    C'est ce que je crois avoir expliqué depuis le début....
    Esteban

  20. #20
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Problèm de classe Date
    Mais j'ai tjs...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONSTRUCT TRUEstring(8) "20101109" .................[naissance] => Array ( [0] => Date [1] => Date de naissance [2] => 19700101 ) 
    Esteban

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/03/2007, 11h35
  2. Problème de classe
    Par DeusXL dans le forum DirectX
    Réponses: 15
    Dernier message: 04/12/2005, 14h37
  3. Réponses: 4
    Dernier message: 19/10/2005, 17h00
  4. Problème de classe
    Par tidou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 14/10/2005, 17h49
  5. [FLASH MX2004] Problème de classe
    Par JulPoWeR dans le forum Flash
    Réponses: 1
    Dernier message: 10/07/2005, 22h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo