如何在php中设置数据库中选择的值标签<select> html?</select>

时间:2014-05-07 07:27:39

标签: php html mysql html-select

我正在尝试创建一个下拉菜单,该菜单将选择存储在数据库中的值。这是代码:

require 'koneksi.php';
    $sql_select = "SELECT * FROM supplier"; 
    $hasil = mysql_query($sql_select);
    if(!$hasil) {
        echo "data supplier not found ".mysql_error();
    }

    $id = $_GET["id"];
    $hasil2 = mysql_query("SELECT * FROM brg_supplier WHERE id_brg=".$id);
    $data = mysql_fetch_array($hasil2);
    if($hasil2) {
    $supplier = $data['nama_supplier'];
    }


<select name="supplier">
     <option value="">---pilih supplier---</option>
     <?php
        while($baris = mysql_fetch_array($hasil)){
     ?>
     <option value="<?php $baris['nama_supplier'] ?>" <?php if     ($supplier==$baris['nama_supplier']) echo 'selected="selected"'; ?> > <?php echo  $baris['nama_supplier']; ?> </option>; 
<?php   }?>
</select>

问题是我的代码创建了一个没有选中的下拉列表。屏幕截图为link

我已尝试过stackoverflow中的所有解决方案。但是下拉值仍未选中。我知道它必须是一些简单的东西,我想失踪但严重的我无法弄明白。请任何人帮忙,谢谢!

5 个答案:

答案 0 :(得分:2)

我认为问题出在这一行:

<option value="<?php $baris['nama_supplier'] ?>" <?php if     ($supplier==$baris['nama_supplier']) echo 'selected="selected"'; ?> > <?php echo  $baris['nama_supplier']; ?> </option>;

你错过了一个回声,看起来很有趣:/ 请尝试改为:

<option <?php $val=$baris['nama_supplier']; echo "value='$val'";  if($supplier==$val) echo "selected='selected'>";echo $val;?> </option>;

答案 1 :(得分:0)

    Try this way..

$sel="select f.*,c.category from final f, category c where f.category_id=c.id and f.id='$id'";
$data=mysql_query($sel);
$res=mysql_fetch_assoc($data);    

     <select name="cat">
                       <?php

                        $sql = mysql_query("SELECT * FROM category");
                        while ($row = mysql_fetch_array($sql)){
                           if($row['id'] ==  $res['category_id']){
                        echo '<option value="'.$row['id'].'" selected="selected">'.$row['category'].'</option>';
                           }else{
                       echo '<option value="'.$row['id'].'">'.$row['category'].'</option>';
                           }
                        }
                       ?>
                  </select>

答案 2 :(得分:0)

试试这个

require 'koneksi.php';
$sql_select = "SELECT * FROM supplier"; 
$hasil = mysql_query($sql_select);
if(!$hasil) {
    echo "data supplier not found ".mysql_error();
}

$id = $_GET["id"];
$hasil2 = mysql_query("SELECT * FROM brg_supplier WHERE id_brg=".$id);
$data = mysql_fetch_array($hasil2);
if(mysql_num_rows($hasil2) > 0) {
$supplier = $data['nama_supplier'];
}


<select name="supplier">
 <option value="">---pilih supplier---</option>
 <?php
    while($baris = mysql_fetch_array($hasil)){
 ?>
 <option value="<?php echo $baris['nama_supplier'] ?>" <?php if      ($supplier==$baris['nama_supplier']) {echo 'selected="selected"';} ?> > <?php echo  $baris['nama_supplier']; ?> </option>; 
<?php   }?>
</select>

答案 3 :(得分:0)

<option value="<?php $baris['nama_supplier'] ?>

应该是

<option value="<?php echo $baris['nama_supplier'] ?>

答案 4 :(得分:0)

我花了一些时间试图为此找到最佳解决方案,并提出了一个小小的 jQuery 代码。

首先,您应该使用PDOmysqli代替mysql,因为它是deprecated。让我们假设你已经解决了这个问题。

<form>标记内添加<input type="hidden"/>,以便它可以存储您的数据库值,例如:

<强> HTML

<form>
    <input id="valueFromDatabase" type="hidden" value="<?php echo $stringFromDB ?>"/>
</form>

注意:在这种情况下,$stringFromDB是一个变量,用于保存您的查询从数据库返回。

现在我们在HTML代码中拥有数据库的价值。现在我们只需要检查<select>标记内的任何选项是否等于此值。我们将使用jQuery来实现它:

<强>的jQuery

$( document ).ready(function() {
    $('option').each(function(){
        if (this.value == $('#valueFromDatabase').val()){
            this.setAttribute('selected', 'selected');
        }
    });
});

这里发生了什么?我们告诉jQuery分析HTML中的所有<option>标签,并将其值与数据库中的值进行比较;如果它相等,我们将所选属性添加到等效的<option>

你可以工作here(使用日历示例)。

希望有所帮助!