2014-09-24 3 views
0

모든 카테고리 (ID, 카테고리) 및 ​​모든 이벤트 (ID, 이벤트, 카테고리 ID)가있는 DB 테이블이 있습니다.PHP : 현재 옵션 선택

이벤트 편집 양식에는 모든 카테고리 (DB에서 가져 오기)가있는 select 필드가 있습니다. 하지만 죄송합니다. 편집 양식을 개발 중이므로 기본적으로 현재 카테고리를 선택해야합니다.

이 내 선택 필드 (DB에서 모든 카테고리를 가져온 후 다음과 같은 순서로두고 PHP 방법)입니다 :

<option value="1">Cat1</option> 
<option value="2">Cat2</option> 
<option value="3">Cat3</option> 
<option value="4">Cat4</option> 
<option value="5">Cat5</option> 

이의 말을하자, 현재 이벤트 카테고리 3에서, 그래서 다음이 필요합니다 생성 될 HTML :

<option value="1">Cat1</option> 
<option value="2">Cat2</option> 
<option value="3" selected>Cat3</option> 
<option value="4">Cat4</option> 
<option value="5">Cat5</option> 

내가 catID를 가지고 있다면 어떻게해야합니까?

이 질문에 대한 답변은 충분합니다. 내 나쁜 설명 죄송합니다

UPD :

public function getCatList($conf) { 
    $mysqli = $this->dbConnect($conf); 

    // Quering... 
    $query = "SELECT * FROM categories"; 
    $result = $mysqli->query($query); 

    while($row = mysqli_fetch_array($result)) { 
    echo '<option value="' . $row['id'] . '">' . $row['category'] . '</option>'; 
    } 
} 
+0

현재 PHP 코드를 표시 하시겠습니까? – mithunsatheesh

+0

완료. 처음에 추가하지 못해 죄송합니다 –

답변

1

: 당신은 당신의 함수에 CATID를 전달할 수

지금
public function getCatList($conf, $catID = 0) { 
    $mysqli = $this->dbConnect($conf); 

    // Quering... 
    $query = "SELECT * FROM categories"; 
    $result = $mysqli->query($query); 

    while($row = mysqli_fetch_array($result)) { 
    echo '<option value="' . $row['id'] . '"' . ($row['id']==$catID?' selected':'') . '>' . $row['category'] . '</option>'; 
    } 
} 

: 그럼 그냥 선택한-속성을 포함하도록 HTML의 생성을 변경 당신이 -하고 부울 저장 현재 값이 그 $catID에 저장된 동일한 경우

while($row = mysqli_fetch_array($result)) { 
    $isSelected = $row['id'] == $catID; 
    echo '<option '.($isSelected ? 'selected="selected"' : '').' value="' . $row['id'] . '">' . $row['category'] . '</option>'; 
}  

당신은 비교를하고 결과는 변수이다. 에코에서는 값이 참이면 조건부 분기 및 selected 속성을 추가하고, 그렇지 않으면 빈 문자열을 추가하지 않습니다.

+0

흠. 이 방법은 내 것이 더 좋을 것 같습니다. –

+0

이 방법의 일반적인 개념은 HTML과 PHP의 혼합을 최소화하고자하는 것입니다. 인쇄/반향을하기 전에 모든 계산을 수행하고 싶기 때문에 출력 부분을 훨씬 이해하기 쉬울 것입니다 (모든 것을 인라인으로 배치하는 것보다 물론 복잡한 경우는 아니지만 여러 개의 데이터가있는 경우를 상상해보십시오). 속성, 조건 전환기 등). – Gabor

+1

왜 내가 이상하다고 생각하니 : 왜 당신은 @Gabor가'$ isSelected = ($ row [ 'id'] == $ catID)를 코딩하지 않았습니까? 'selected': '';'그런 다음 echo에 'echo'

1

당신은

while($row = mysqli_fetch_array($result)) {3 

    echo '<option value="' . $row['id'] . '"'; 
    //if condition is met then make the option selected 
    if($row['categoryID'] == 3) { 
     echo " selected='selected' "; 
    } 
    echo '>' . $row['category'] . '</option>'; 

} 
+0

오, 이런. 나는이 질문을 게시하고 해결책을 찾았다. (당신과 매우 흡사하다). 나는 바보 같아. 미안해. –

+0

@ArtemUshakov : 문제 없음 :) – mithunsatheesh

0

처럼 할 수는 매개 변수로 선택한 CATID를 추가해야합니다 :이 카테고리 목록을 생성 내 PHP 코드 getCatList - 기능. 조건이이 문제를 해결됩니다 while 반복에 덧붙이

$myConf = "something"; 
$myCatID = 3; 
getCatList($myConf, $myCatID); 
0
//query for the categories and options 
$current_value = 3; 
$total_num_of_options = mysql_num_rows($your_query_result); 
for($count = 1; $count <= $total_num_of_options){ 
    echo "<option value='".$count."' "; 
    if($count == $current_value) 
     echo "selected"; 
    echo ">cat".$count."</option>"; 
}