2013-02-26 3 views
1

내 웹 사이트의 드롭 다운 목록에 조직 목록을 채우고 있습니다. 이 PHP는 쉽고 그다지 문제가 없었습니다.데이터베이스 값으로 드롭 다운 목록 채우기 및 알파벳순 정렬

그러나이 목록은 잠재적으로 아주 방대하게 될 것이며 목록을 세 개의 알파벳순 섹션으로 나누고 싶습니다. (예 : A-G, H-S, T-Z). 아래 코드를 수정하여 A-G로 첫 번째 드롭 다운 목록을 정렬 할 수 있습니다 (다른 두 항목에 동일한 로직을 적용 할 수 있음).

$sql = pg_query("SELECT name FROM institution ORDER BY name ASC");                 
    while($row = pg_fetch_array($sql)){ 
     echo "<option value=\"organisation1\">" .$row ['name'] . "</option>"; 
    } 
+1

잠시 전에 날짜를 가져오고 부분 문자열과 같은 일부 처리를 수행하여 'name'의 첫 문자를 찾은 다음 A에서 G 논리로 조건부 (if)를 찾습니다. 그렇지 않으면 H-S else T-Z. 또는 정말 펑키 한 방법으로 where 절로 SQL의 논리를 수행하십시오. – ChelseaStats

답변

0
$sql = pg_query(" 
    select name 
    from institution 
    where name < 'H' 
    order by name asc 
"); 

$sql = pg_query(" 
    select name 
    from institution 
    where name >= 'H' and name < 'T' 
    order by name asc 
"); 

$sql = pg_query(" 
    select name 
    from institution 
    where name >= 'T' 
    order by name asc 
"); 
+0

완벽하게 작동합니다. SQL이 <> 연산자 기능을 제공한다는 것을 깨닫지 못했습니다. – WebDevDanno

0

이 1 문자의 아스키 값을 얻기 위해 A-G와 H-S

$AG = $HS = ''; 
$sql = pg_query("SELECT name FROM institution ORDER BY name ASC");                 
while($row = pg_fetch_array($sql)){ 
    $char =chr(strtoupper(substr($row ['name'],0,1))); 
    if($char<=71){ 
     $AG .= "<option value=\"organisation1\">" .$row ['name'] . "</option>"; 
    } 
    if(($char>71) && ($char <= 83)){ 
     $HS .= "<option value=\"organisation1\">" .$row ['name'] . "</option>"; 
    } 
    } 
    echo $AG.$HS; 

사용 CHR의 트릭을해야한다. 하위 섹션에 문자열을 추가하는 조건을 만듭니다. 당신은 여기까지 아스키 발스 볼 수 있습니다 : http://www.asciitable.com/

+0

코드 뒤에있는 로직을 볼 수 있습니다. 작동해야한다면 작동하지만 작동하지 않는 것 같습니다. 나는 첫 번째 셀렉트 박스/드롭 다운리스트에 대해 AG 조건을 포함 시켰으며 $ HS와 관련이 없다. 왜 그것이 작동하지 않는 아이디어? 필요한 경우 페이지에 내 코드를 제공 할 수 있습니다. – WebDevDanno

+0

$ AG는 어떻게 보이나요? 선택 부분의 데이터 부분 만 포함해야하며, 여전히 HTML 출력을 보려면'