2012-03-05 138 views
2

我需要將日期值添加爲零,因爲MySQL日期值將用作顯示添加照片的目錄路徑。目前該目錄保存爲2012-2-5,MySQL條目爲2012-02-05。PHP Concatenate零日期POST值

我曾嘗試以下,但它似乎並不奏效:

$dates = array($_POST['photos_year'], $_POST['photos_month'], $_POST['photos_day']); 
    foreach($dates as $date) { 
    if (strlen($date) == 1) { 
     $date = '0' . $date; 
    } 
    } 
$photos->date = $dates[0] . "-" . $dates[1] . "-" . $dates[2]; 

我使用一個for循環來創建的日期格式,它可能是更容易爲我編輯這個,但是我有沒有成功:

<select name="photos_month" id="photos_month" tabindex="3"> 
    <option value ="">- Month -</option> 
    <?php 
    for($date=01;$date<=12;$date++) { 
     if (isset($photos) && $date==$month) { 
      echo "<option value='".$date."' selected='selected'>".$date."</option>"; 
     } else { 
      echo "<option value='".$date."'>".$date."</option>"; 
     } 
    } 
    ?> 
</select> 

回答

4

您需要更新foreach

foreach ($dates as &$date) 

目前,$date是一個新符號,不會覆蓋該值。這應該解決它,但是也可以在選項中包含正確的字符串。你可以使用str_pad來做到這一點。

2

當做一個foreach時,元素變量$date是一個新變量,是數組中值的一個副本。您應該使用密鑰並更新原始數組。

foreach($dates as $key => $date) { 
if (strlen($date) == 1) { 
    $dates[$key] = '0' . $date; 
} 
} 

而且,你正在運行的代碼在year,你不想一零年,只有月份和日期將被添加。

0

用sprintf() 例如:

$date = sprintf('%02d', $_POST['photos_day']); 
1

你可以做的只是使用sprintf的使用格式字符串它稍微簡單;

$photos_year = '2012'; 
$photos_month = '2'; 
$photos_day = '5'; 

$result = sprintf("%4d-%02d-%02d", $photos_year, $photos_month, $photos_day); 

// $result = '2012-02-05'