webForumDet fria alternativet

Ålder function

4 svar · 277 visningar · startad av Webslave

WebslaveMedlem sedan maj 2002647 inlägg
#1

Denna koda har jag knåpat ihop och den fungerar fint förutom när det gäller valet av månad... då vill den inte visa rätt.

<?PHP
$year = substr($row['user_age'],0,4);
$mon = substr($row['user_age'],5,2);
$day = substr($row['user_age'],8,2);
?>
<select name="update_age_year" class="form_select">
<option value="0000"<?PHP
if($year==0000){
  echo " selected";
}
  ?>>År</option>
<?PHP
$year_start = date("Y");
$year_end = 1960;
for($i=$year_start;$i>=$year_end;$i--){
  ?>
  <option value="<?=$i?>"<?PHP
  if($year==$i){
    echo " selected";
  }
  ?>><?=$i?></option>
  <?PHP
}
?>
</select>
<select name="update_age_month" class="form_select">
<option value="00"<?PHP
  if($mon==00){
    echo " selected";
  }
  ?>>Månad</option>
<?PHP
$month=array("Jan"=>01,"Feb"=>02,"Mars"=>03,"Apr"=>04,"Maj"=>05,"Juni"=>06,"Juli"=>07,"Aug"=>08,"Sept"=>09,"Okt"=>10,"Nov"=>11,"Dec"=>12);

foreach($month as $key=> $val){
  ?>
  <option value="<?=$val?>" <?PHP
  if('$mon'=='$val'){
    echo "selected";
  }
  ?>><?=$key?></option>
  <?PHP
}
?>
</select>
<select name="update_age_day" class="form_select">
<option value="00"<?PHP
  if($day==00){
    echo " selected";
  }
  ?>>Dag</option>
<?PHP
$day_start = 01;
$day_stop = 31;
for($i=$day_start;$i<=$day_stop;$i++){
  ?>
  <option value="<?PHP
  if(strlen($i)<2){
    echo '0';
  }
  echo $i;
  ?>"<?PHP
  if(substr($row['user_age'],8,2)==$i){
    echo " selected";
  }
  ?>><?=$i?></option>
  <?PHP
}
?>

$row['user_age'] ser ut så här:
yyyy-mm-dd hh:mm:ss (det sista är för att jag har en function som räknar om detta till ålder i år och då behöver den tydligen timmar osså, fast de är alla = 0)

Kan någon se något som är alldeles galet? Jag är för trött för det själv nu och behöver lite experthjälp ;)

MungoMedlem sedan jan. 2000372 inlägg
#2

Tveksamt om det är den hjälp du söker, men jag lagrar iaf alltid datum och tid i TIMESTAMP-format istället, och sen har jag skrivit följande funktion för att ta ut det jag vill:

function mysqldate_format($datum, $format) {
	$lang_monthname = array("Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec");
	$year = substr($datum, 0, 4);
	$smallyear = substr($datum, 2, 2);
	$month = substr($datum, 4, 2);
	$day = substr($datum, 6, 2);
	$hour = substr($datum, 8, 2);
	$minutes = substr($datum, 10, 2);
	$seconds = substr($datum, 12, 2);
	$format = ereg_replace("YYYY", $year, $format);
	$format = ereg_replace("yy", $smallyear, $format);
	$format = ereg_replace("MM", $month, $format);
	$format = ereg_replace("DD", $day, $format);
	$format = ereg_replace("hh", $hour, $format);
	$format = ereg_replace("mm", $minutes, $format);
	$format = ereg_replace("ss", $seconds, $format);
	$format = ereg_replace("MN", $lang_monthname[$month-1], $format);
	return $format;
	}

Så ditt fall skulle:

echo mysqldate_format($row['user_age'], 'MM');

...skriva ut endast månadens nummer från ett TIMESTAMP-värde.

Följande nycklar finns till formatet:

YYYY : 4-siffrigt år
yy : 2-siffrigt år
MM : 2-siffrig månad
DD : 2-siffrig dag
hh : 24-timmars timme
mm : minuter
ss : sekunder
MN : Månadsnamn

WebslaveMedlem sedan maj 2002647 inlägg
#3

Nope, det gör det inte. Jag frågade om hjälp med min kod inte leta nya koder. Men tack i alla fall ;)

MatteMedlem sedan aug. 20002 975 inlägg
#4

$mon är en sträng. Då borde det vara lämpligt att ha strängar i arrayen för din jämförelse:

$month=array("Jan"=>"01", "Feb"=>"02", "Mars"=>"03" , "Apr"=>"04", "Maj"=>"05", "Juni"=>"06", "Juli"=>"07", "Aug"=>"08", "Sept"=>"09", "Okt"=>"10", "Nov"=>"11", "Dec"=>"12");

foreach($month as $key=> $val){
  ?>
  <option value="<?=$val?>" <?PHP
  if($mon==$val){
    echo "selected";
  }
  ?>><?=$key?></option>
  <?PHP
}
WebslaveMedlem sedan maj 2002647 inlägg
#5

Tackar Matte, jag kom på det och körde med =>'01' istället... fungerar perfekt nu ;)

237 ms totalt · 3 externa anrop · v20260731065814-full.30151723
126 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
234 ms — hämta tråd, inlägg och bilagor (db)