Page 1 sur 1

affichage année naissance

Posté : 20 juin 2013, 21:53
par bob56@
Bonjour à tous :D

Voilà mon problème. Je voudrais que l'année de naissance s'affiche: jour mois année sans poser de problèmes sur les fonctions du site.

Par avance merci !
<?php



class field_birthdate extends iprofile_field {
	var $empty_value=array('edit'=>array('year'=>0,'month'=>0,'day'=>0),'display'=>'-');
	var $display_name='Date de naissance / Age';
	var $allowed_search_types=array('field_age_range');

	function __construct($config=array(),$is_search=false) {
		$this->config=$config;
		$this->is_search=$is_search;
		if (isset($this->config['default_value'])) {
			$this->value=$this->config['default_value'];
		} else {
			$this->value=$this->empty_value['edit'];
		}
	}

	function set_value(&$all_values,$sanitize=true) {
		if ($sanitize) {
			$this->value['day']=sanitize_and_format_gpc($all_values,$this->config['dbfield'].'_day',TYPE_INT,0,$this->empty_value['edit']['day']);
			$this->value['month']=sanitize_and_format_gpc($all_values,$this->config['dbfield'].'_month',TYPE_INT,0,$this->empty_value['edit']['month']);
			$this->value['year']=sanitize_and_format_gpc($all_values,$this->config['dbfield'].'_year',TYPE_INT,0,$this->empty_value['edit']['year']);
		} elseif (isset($all_values[$this->config['dbfield']])) {
			$temp=explode('-',$all_values[$this->config['dbfield']]);
			if (count($temp)==3) {
				$this->value['year']=(int)$temp[0];
				$this->value['month']=(int)$temp[1];
				$this->value['day']=(int)$temp[2];
			}
		}
		$this->value['day']=str_pad($this->value['day'],2,'0',STR_PAD_LEFT);
		$this->value['month']=str_pad($this->value['month'],2,'0',STR_PAD_LEFT);
		return true;
	}

	function edit($tabindex=1) {
		$myreturn='<select name="'.$this->config['dbfield'].'_month" id="'.$this->config['dbfield'].'_month" tabindex="'.$tabindex.'">'.vector2options($GLOBALS['accepted_months'],$this->value['month']).'</select>';
		$myreturn.='<select name="'.$this->config['dbfield'].'_day" id="'.$this->config['dbfield'].'_day" tabindex="'.$tabindex.'"><option value="">'.$GLOBALS['_lang'][131].'</option>'.interval2options(1,31,$this->value['day']).'</select>';
		$cur_year=(int)gmdate('Y');
		$myreturn.='<select name="'.$this->config['dbfield'].'_year" id="'.$this->config['dbfield'].'_year" tabindex="'.$tabindex.'"><option value="">'.$GLOBALS['_lang'][132].'</option>'.interval2options($cur_year-$this->config['accepted_values']['max'],$cur_year-$this->config['accepted_values']['min'],$this->value['year'],array(),1,2).'</select>';
		return $myreturn;
	}

	/**
	 *	displays the age, not the actual birthday
	 *	We assume that the label will be read after the call to display() so we set the label here to search_label
	 *	("Age:" instead of "Birtdate:")
	 */
	function display() {
		$this->config['label']=$this->config['search_label'];
		// we prepend '1' so the type cast won't convert '04' to 4
		$myreturn=(int)gmdate('Y')-(int)$this->value['year']-(int)(((int)('1'.gmdate('md')))<((int)('1'.$this->value['month'].$this->value['day'])));
		if ($myreturn>110) {
			$myreturn=$this->empty_value['display'];
		}
		return $myreturn;
	}

	function search() {
		if ($this->search!=null) {
			return $this->search;
		} elseif (!empty($this->config['search_type'])) {
			$class_name=$this->config['search_type'];
			$new_config=unserialize(serialize($this->config));
			$new_config['label']=$new_config['search_label'];
			if (isset($new_config['search_default'])) {
				$new_config['default_value']=$new_config['search_default'];
			} else {
				unset($new_config['default_value']);
			}
			unset($new_config['search_default'],$new_config['search_label'],$new_config['searchable'],$new_config['required'],$new_config['search_type'],$new_config['reg_page']);
			$new_config['parent_class']=get_class($this);
			$this->search=new $class_name($new_config,true);
//			$temp=array($this->config['dbfield'].'_year'=>$this->value['year'],$this->config['dbfield'].'_month'=>$this->value['month'],$this->config['dbfield'].'_day'=>$this->value['day']);
//			$this->search->set_value($temp,false);
			return $this->search;
		} else {
			return $this;
		}
	}

	function edit_admin() {
		global $output;
		$myreturn='';
		if (!$this->is_search) {
			$output['accepted_values']['min']=isset($output['accepted_values']['min']) ? $output['accepted_values']['min'] : '';
			$output['accepted_values']['max']=isset($output['accepted_values']['max']) ? $output['accepted_values']['max'] : '';
			$myreturn.='<div class="clear">
					<label for="year_start">Age a permis de:</label>
					<input class="text numeric" type="text" name="age_start" id="age_start" value="'.$output['accepted_values']['min'].'" size="3" maxlength="3" tabindex="13" />
					to
					<input class="text numeric" type="text" name="age_end" id="age_end" value="'.$output['accepted_values']['max'].'" size="3" maxlength="3" tabindex="14" />
				</div>';
		}
		return $myreturn;
	}

	function admin_processor() {
		$error=false;
		global $input,$__field2format,$dbtable_prefix,$default_skin_code;
		$my_input=array();
		if (!$this->is_search) {
			$age_start=sanitize_and_format_gpc($_POST,'age_start',TYPE_INT,0,0);
			$age_end=sanitize_and_format_gpc($_POST,'age_end',TYPE_INT,0,0);
			if ($age_start>$age_end) {
				$temp=$age_end;
				$age_end=$age_start;
				$age_start=$temp;
			}
			if ($age_start==$age_end) {
				$error=true;
				$GLOBALS['topass']['message']['type']=MESSAGE_ERROR;
				$GLOBALS['topass']['message']['text']='The start and end ages must not be equal';
			}
			if (!$error) {
				$my_input['accepted_values']=array('min'=>$age_start,'max'=>$age_end);
				if (!empty($input['searchable']) && !empty($input['search_type'])) {
					$search_field=new $input['search_type'](array(),true);
					$temp=$search_field->admin_processor();
					if (is_array($temp) && !empty($temp)) {
						$my_input=array_merge($my_input,$temp);
					}
				}
				$input['custom_config']=sanitize_and_format(serialize($my_input),TYPE_STRING,FORMAT_ADDSLASH);
			}
		} else {
			return array();
		}
		return $error;
	}

	function query_select() {
		return "DATE_FORMAT(`".$this->config['dbfield']."`,'%Y-%m-%d') as `".$this->config['dbfield'].'`';
	}

	function query_set() {
		return '`'.$this->config['dbfield']."`='".$this->value['year'].$this->value['month'].$this->value['day']."'";
	}

	function query_create($dbfield) {
		return " ADD `{$dbfield}` date not null";
	}

	function query_drop($dbfield) {
		return " DROP `{$dbfield}`";
	}

	function edit_js() {
		$myreturn='';
		if (!empty($this->config['required'])) {
			$myreturn.='$(\'#'.$this->config['dbfield'].'_year\').parents(\'form\').bind(\'submit\',function() {
				var is_empty=true;
				if ($(\'#'.$this->config['dbfield'].'_day\').val()!='.$this->empty_value['edit']['day'].' && $(\'#'.$this->config['dbfield'].'_month\').val()!='.$this->empty_value['edit']['month'].' && $(\'#'.$this->config['dbfield'].'_year\').val()!='.$this->empty_value['edit']['year'].') {
					is_empty=false;
				}
				if (is_empty) {
					alert(\'"'.$this->config['label'].'" ne peut pas rester vide\');
					return false;
				}
			});';
		}
		return $myreturn;
	}

	function validation_server() {
		$myreturn=true;
		if (!empty($this->config['required'])) {
			if (((int)$this->value['day'])==$this->empty_value['edit']['day'] || ((int)$this->value['month'])==$this->empty_value['edit']['month'] || ((int)$this->value['year'])==$this->empty_value['edit']['year']) {
				$myreturn=false;
			}
		}
		return $myreturn;
	}

	function get_value($as_array=false) {
		if ($as_array) {
			return array($this->config['dbfield'].'_year'=>$this->value['year'],$this->config['dbfield'].'_month'=>$this->value['month'],$this->config['dbfield'].'_day'=>$this->value['day']);
		} else {
			return $this->value;
		}
	}
}

if (defined('IN_ADMIN')) {
	$GLOBALS['accepted_fieldtype']['direct']['field_birthdate']='Date de naissance';
}

Re: affichage année naissance

Posté : 20 juin 2013, 22:06
par moogli
salut,


et ?

on fait des 400 lignes de codes ?

on ne va pas faire la chose pour toi, tu doit localiser le code utile et récupérer l'info qui t’intéresse pour l'afficher.


on ne pas plus t'aider avec juste un je voudrais.


@+

Re: affichage année naissance

Posté : 20 juin 2013, 22:29
par bob56@
salut moogli :)

J'ai mis le code de la page au complet car j'ai déjà essayé de faire la modif dans cette partie sans avoir les trois choix au complet dans le bon ordre
	function edit($tabindex=1) {
		$myreturn='<select name="'.$this->config['dbfield'].'_month" id="'.$this->config['dbfield'].'_month" tabindex="'.$tabindex.'">'.vector2options($GLOBALS['accepted_months'],$this->value['month']).'</select>';
		$myreturn.='<select name="'.$this->config['dbfield'].'_day" id="'.$this->config['dbfield'].'_day" tabindex="'.$tabindex.'"><option value="">'.$GLOBALS['_lang'][131].'</option>'.interval2options(1,31,$this->value['day']).'</select>';
		$cur_year=(int)gmdate('Y');
		$myreturn.='<select name="'.$this->config['dbfield'].'_year" id="'.$this->config['dbfield'].'_year" tabindex="'.$tabindex.'"><option value="">'.$GLOBALS['_lang'][132].'</option>'.interval2options($cur_year-$this->config['accepted_values']['max'],$cur_year-$this->config['accepted_values']['min'],$this->value['year'],array(),1,2).'</select>';
		return $myreturn;
	}

Re: affichage année naissance

Posté : 19 oct. 2013, 19:34
par bob56@
Bonjour :D

voilà la modif, çà roule pour moi , au plaisir !
 
        $myreturn ='<select name="'.$this->config['dbfield'].'_day" id="'.$this->config['dbfield'].'_day" tabindex="'.$tabindex.'"><option value="">'.$GLOBALS['_lang'][131].'</option>'.interval2options(1,31,$this->value['day']).'</select>';
        $myreturn .='<select name="'.$this->config['dbfield'].'_month" id="'.$this->config['dbfield'].'_month" tabindex="'.$tabindex.'">'.vector2options($GLOBALS['accepted_months'],$this->value['month']).'</select>';
        
        $cur_year=(int)gmdate('Y');
        $myreturn.='<select name="'.$this->config['dbfield'].'_year" id="'.$this->config['dbfield'].'_year" tabindex="'.$tabindex.'"><option value="">'.$GLOBALS['_lang'][132].'</option>'.interval2options($cur_year-$this->config['accepted_values']['max'],$cur_year-$this->config['accepted_values']['min'],$this->value['year'],array(),1,2).'</select>';
        return $myreturn;
    }