2014-12-19 2 views
2

데이터베이스에서 모든 항목을 선택 드롭 다운 할 수 있지만 이미 설정된 값이 표시되거나 복제본으로 표시 될 수없는 곳에서 처리 할 수 ​​있습니다. 나는 여기에서 수색했고, 2 개의 유사한 질문을 발견했다. 그러나 그들의 대답은 나를 도와주지 않았다.sql이 데이터베이스 값을 포함하도록 드롭 다운 됨

connect.php 아래에있는 내 코드는 그것이 중복 된 항목뿐만 아니라, 선택한 항목을 포함하여 모든 데이터베이스가

<?php 
include 'connect.php'; 
$qry=mysql_query("SELECT * FROM experts", $con); 
if(!$qry) 
{ 
die("Query Failed: ". mysql_error()); 
} 
?> 


<select name="expert" id="expert"> 
<option value="<?php echo $row['expert']; ?>"><?php echo $row['expert']; ?> </option> 


<?php 
while($row=mysql_fetch_array($qry)) 
{ 
echo "<option value='".$row['expert']."'>".$row['expert']."</option>"; 
} 
?> 

</select> 

정보를 문제를 연결이있는 포함되어 있습니다. 선택한 항목을 제거하기 위해 if 문을 추가해야하지만 확실하지는 않은지 알고 있습니다.

PHP MySQL Drop Down Box Populate Selected Value은 내 대답을 갖고있는 것처럼 보입니다.하지만 내 코드를 다르게 표현한 예를 사용할 수없는 것 같습니다.

+0

, 제발 [사용하지 않는'mysql_로 *'기능 (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) 새로운 코드에서. ** 더 이상 유지 관리되지 않으며 [공식적으로 권장되지 않습니다] (https://wiki.php.net/rfc/mysql_deprecation) **. 대신 [prepared statements] (http://en.wikipedia.org/wiki/Prepared_statement)에 대해 알아보고 [PDO] (http://us1.php.net/pdo) 또는 [MySQLi] (http : //)를 사용하십시오. us1.php.net/mysqli). –

+1

'

+0

Jay. 나는 너무 늦게 배웠지 만, PDO 나 MySQLi로 코드를 변경하는 것이 가장 효율적인 방법은 아닐 것입니다. –

답변

1
<select name="expert" id="expert"> 
    <!-- Show an empty option so the "default" is blank --> 
    <option value=""></option> 
    <?php 
    // Define the desired selected value from the database (if any) 
    $selected_value = CODE_TO_GET_CURRENT_VALUE; 
    // Loop through all of the available options to create your... well, options 
    while($row=mysql_fetch_array($qry)) 
    { 
     // If this option matches the one you want to select, add the HTML "selected" attribute 
     $selected = ($row['expert'] == $selected_value) ? ' selected' : ''; 
     echo "<option value='" . $row['expert'] . "'" . $selected . ">" . $row['expert'] . "</option>"; 
    } 
    ?> 
</select> 
+0

인스턴트 메신저 해보기. –

+0

어떻게 기본값을 정의합니까? 이것이 선택되어 있지 않거나 이미 데이터베이스에있는 것이 없을 때입니다. –

+0

이것은 데이터베이스에 이미있는 값입니다. db에 값이 없으면'$ default_value'에'false' 또는'null'을 반환하면'$ row [ 'expert']'와 절대 일치하지 않으며 옵션은'selected'로 표시되지 않습니다. – mopo922

1

while 루프 외부에있는 <option> 만 제거하면됩니다. 이것이 첫 번째 항목이 복제 된 이유입니다.

<?php 
    include 'connect.php'; 

    $qry=mysql_query("SELECT * FROM experts", $con); 

    if(!$qry) 
    { 
     die("Query Failed: ". mysql_error()); 
    } 
?> 

<select name="expert" id="expert"> 
<?php 
    while($row=mysql_fetch_array($qry)) 
    { 
     echo "<option value='".$row['expert']."'>".$row['expert']."</option>"; 
    } 
?> 
</select> 
+0

그건 내가 말한 것이지만 OP는 * "fred. 나는 이해합니다. 그러나 그 행을 제거하면 현재 선택된 데이터베이스 값을 가져 오지 않습니다"*. –

+0

그래, 나는 대답을 올린 후에 당신의 의견을 보았다. OP가 문제 설명에서 선택된 옵션을 얻을 필요성에 대해서는 언급하지 않았지만. – Willz

관련 문제