【问题标题】:how to set the selected value tag <select> html from database in php?如何在php中从数据库中设置选定的值标签<select> html?
【发布时间】:2014-05-07 07:27:39
【问题描述】:

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

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 中的所有解决方案。但下拉值仍然没有选择。我知道我想念的东西一定很简单,但严重的是我无法弄清楚。请大家帮忙,谢谢!

【问题讨论】:

  • 看看这是否有帮助&lt;option value="&lt;?php $baris['nama_supplier'] ?&gt;"&gt; &lt;?php if($supplier==$baris['nama_supplier']) { echo 'selected'; } ?&gt; &lt;?php echo $baris['nama_supplier']; ?&gt; &lt;/option&gt;
  • 你可以像这样缩小你的代码&lt;option value="&lt;?=$baris['nama_supplier']?&gt;" &lt;?=$supplier==$baris['nama_supplier']?selected:''?&gt; &gt; &lt;?=$baris['nama_supplier']?&gt; &lt;/option&gt;;
  • mysql 已折旧。我可以看到的一个错误是您使用了$hasil 而不是$hasil2
  • 请显示您的供应商和 brg_supplier 表的所有列名
  • @VishalSharma 供应商列:id_supplier、nama_supplier、alamat、telp。 brg_supplier : id_brg, barang, nama_supplier, harga, ket

标签: php html mysql html-select


【解决方案1】:

我认为问题出在这一行:

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

【讨论】:

  • 还是谢谢你。好吧,这很有趣:/我不知道为什么我无法弄清楚那个错误
【解决方案2】:
    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>

【讨论】:

    【解决方案3】:

    试试这个

    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>
    

    【讨论】:

    • 谢谢,它有效。只是我只是错过了“回声”。但我不得不删除此代码&lt;option value=""&gt;---pilih supplier---&lt;/option&gt; 以显示选定的值。
    • @anggimery:如果它的作品,那么请正确我的回答是有用的,以便对其他人有所帮助
    【解决方案4】:
    <option value="<?php $baris['nama_supplier'] ?>
    

    应该是

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

    【讨论】:

      【解决方案5】:

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

      首先,您应该使用PDOmysqli 而不是mysql,因为它是deprecated。假设您已经解决了这个问题。

      &lt;form&gt; 标签内,添加&lt;input type="hidden"/&gt; 以便它可以存储您的数据库值,例如:

      HTML

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

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

      所以现在我们在 HTML 代码中获得了数据库的值。现在我们只需要检查&lt;select&gt; 标签内的任何选项是否等于这个值。我们将使用 jQuery 来实现:

      jQuery

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

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

      您可以使用here(使用日历示例)。

      希望有帮助!

      【讨论】:

        猜你喜欢
        • 2015-04-28
        • 1970-01-01
        • 2014-08-05
        • 2018-04-11
        • 1970-01-01
        • 1970-01-01
        • 2011-12-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多