2014-12-19 2 views
2

Я могу заполнить выпадающее меню со всеми записями из базы данных, но застрял там, где уже установленное значение не может показать или показать как дубликат. я искал здесь и нашел два похожих вопроса, но их ответы не помогли мне. мой код нижеsql populated drop down to include database value

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) **. Узнайте о [подготовленных заявлениях] (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 нет значения, просто верните 'false' или' null' для '$ default_value', тогда он никогда не будет соответствовать' $ row ['expert'] ', и никакие параметры не будут отмечены как' selected'. – mopo922

1

Вам просто нужно удалить <option>, который вышел из цикла while. Вот почему ваш первый предмет дублируется.

<?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