2011-07-27 5 views
-1

테이블에 다음 값이 있습니다. 첫 번째 값에 대한 중복이없는 드롭 다운 목록에 첫 번째 값만 가져 오려고합니다. . 이 코드는 잘 작동하지만 중복을 보여줍니다. 어떤 도움이 필요합니까? 감사.
미디어> 오디오> 국가
미디어>>> 다른 복음 비디오> 국가
미디어> 비디오> 국가
미디어
의류> 여성> 성인
의류> 남성> 성인별명을 선택하고 폭발시키고 첫 번째 값을 놓습니다.

$sqlbrand = "SELECT DISTINCT Product_Type FROM products ORDER BY Product_Type"; 



       $rsbrand = mysql_query($sqlbrand); 



       while($brand = mysql_fetch_array($rsbrand)) 

        { 

         if($brand['Product_Type'] != '') 

         {     

         $str = $brand['Product_Type']; 

         $category = explode('>', $str); 

         $catName = $category['0']; 

          echo "<option value=\"".$catName."\">".$catName."\n "; 

         } 

          else 

         { 

         } 

        } 

답변

1

에 담기 배열의 모든 결과를 array_unique로 사용하고 그 결과를 드롭 다운 목록에 표시하십시오.

아마도 SQL 쿼리를 수정하여 얻을 수도 있습니다. 당신이 Product_Type에 의해 주문 이후

1

는 먼저 하나씩 그룹화 할 것 같은 elems, 그래서 당신은 단지 그것을 동일합니다 경우 이전 ELEM을 저장하고 볼 필요가 현재 그 :

$savePT=""; 

while($brand = mysql_fetch_array($rsbrand)) 
{ 
    if($brand['Product_Type'] != '' && $brand['Product_Type']!=$savePT) 
    {     
     $category = explode('>', $brand['Product_Type']); 
     $catName = $category['0']; 
     echo "<option value=\"".$catName."\">".$catName."\n "; 
     $savePT= $brand['Product_Type']; 
    } 
} 

편집 :

처럼 CS는 그냥 쿼리를 변경할 수 말했다 :

$sqlbrand = "SELECT DISTINCT SUBSTRING_INDEX(Product_Type,' >',1) as ProductType FROM products ORDER BY Product_Type"; 
$rsbrand = mysql_query($sqlbrand); 
while($brand = mysql_fetch_array($rsbrand)) 
{ 
    echo '<option value="'.htmlentities($brand['ProductType']).'">'.$brand['Product_Type'].'\n '; 
} 

작동합니다.

+0

감사합니다. by order by를 사용하면 어떻게 될까요? – karto

+0

배열에 값을 추가하고 C.S.와 같은'array_unique'를 실행 한 다음 배열을 반복하고 여전히 그 안에있는 각 요소를 표시합니다. 배열을 사용하고 각 값에 대해 배열에 있으면 무시됩니다. 옵션이 반향되고 값이 배열에 추가되면 – Enki

+0

시도했습니다. \ n 인쇄되고 있습니다. 가치를 얻지 못하는 것 같습니다. 그것은 SQL 쿼리에서 수 있습니까? – karto