2013-11-03 2 views
-1

사용자가 드롭 다운 목록에서 특정 날짜를 선택할 수 있도록하려는 데이터베이스에 날짜 묶음이 있습니다.데이터베이스의 범위를 기반으로 날짜로 가득 찬 선택 목록 채우기

모든 날짜를 나열하려고했지만 중복 날짜가 표시되어 작동하지 않습니다.

$query1 = "SELECT order_date FROM orders"; 
$result1 = mysql_query($query1); 
while($row1 = mysql_fetch_array($result1)) 
    { 
    $dateDB = date("Y-m-d", strtotime($row1['order_date'])); 
    $niceDate = date("d/m/Y", strtotime($row1['order_date'])); 

?> 
    <option value="<?php echo $dateDB; ?>"><?php echo $niceDate; ?></option> 
<?php 
    } 
?> 

어떻게 가장 낮은 날짜와 가장 높은 날짜를 가져 와서 모든 항목을 선택 상자에 채울 수 있습니까?

감사

답변

1

난 그냥 모든 날짜를 나열 시도하지만, 중복 날짜를 보여주기 때문에이 작동하지 않습니다.

그 다음 문제의 핵심은, 그들이 주문한 얻을과 같이 할 수 ORDER BY 키워드 조합에서 DISTINCT 키워드를 사용하는 쿼리를 변경하는 것입니다 해결하는 가장 간단한 방법 인 경우 :

SELECT DISTINCT order_date FROM orders ORDER BY order_date

어떤 만의 고유 날짜를 얻을 수 있습니다 의미하며, 첫 번째 날짜가 가장 낮은되며 마지막 쉽게 while 루프에 추가 할 수는 higest 될 것입니다.

편집 : 당신이 최고 및 최저로 수행하려는 경우, 당신이 얻을 수있는이 MINMAX 기능 내장 사용할 수 있지만 다음과 같이 다음 최고 및 최저, 그들을 생성 :

<?php 
    $query = 'SELECT MAX(order_date) AS `highest`, ' . 
        'MIN(order_date) AS `lowest` FROM orders'; 
    $result = mysql_query($query); 
    $lowest = strtotime(mysql_result($result , 0, 'lowest')); 
    $highest = strtotime(mysql_result($result , 0, 'highest')); 
    $dates = array(); 
    $dateTime = $lowest; 
    do 
    { 
     $newDates = array(); 
     $newDates['db'] = date("d/m/Y", $dateTime); 
     $newDates['nice'] = date("d/m/Y", $dateTime++); 
     $dates[] = $newDates; 
    } 
    while($dateTime <= $highest); 
    foreach($dates as $date) 
    { 
?> 
    <option value="<?php echo $date['db']; ?>"><?php echo $date['nice']; ?></option> 
<?php 
    } 
?> 
+0

하셨습니까을 ' 작동하지 않는 것처럼 보이지만, 나는 여전히 모든 날짜를 얻습니다. 시간은 datetime 열의 상점이기 때문에 모든 시간이 다르기 때문에 일하지 않을 것이라고 생각하십니까? – Exoon

+0

편집 해 보았습니다 만 결과가 돌아 오지 않습니다. "order_date"열이 datetime 필드이기 때문에 시간도 포함됩니다. 하지만 그 선택 목록에 표시 싶지 않아요. – Exoon

관련 문제