-1

好的,为了正确地提出问题,我需要简要介绍一下我想要实现的目标。所以请多多包涵。

我有一个表单,它显示了一个从 MySQL 数据库中获取数据的下拉菜单。

删除获取 mysql 数据的 dpwn 菜单 http://img690.imageshack.us/img690/5378/59790538.png

我的 MySQL 表如下所示:

mysql 表 http://img841.imageshack.us/img841/2023/58196854.png

我用来执行此操作的(垃圾)代码如下:

<div class="rowElem">
<label for="service_name"><b>Particulars</b></label>
<?php 
            $sql1 = "select * from `service_tbl`";
            $query_result = mysql_query($sql1);

        echo "<select id='service_name' name='service_name'>";
        while( $row = mysql_fetch_array( $query_result ) ) {
            echo "<option value='".$row['id_service']."' >".$row['service_name']."</option>";
            $service_price = $row['service_price'];
        }
        echo "</select>";
        ?>
</div>

<div class="rowElem">
        <label for='service_price'><b>Price</b></label>
        <input type='text' id='service_price' name='service_price' value="<?php echo $service_price; ?>" />
</div>

代码正在做它应该做的事情:

输出 http://img94.imageshack.us/img94/6341/67345604.png

无论我选择哪个项目,在Price表单的字段中,我都会得到800在 while 循环结束时获取的值。根据代码,这是预期的行为。

但我的目标不是这样做的。我想要的是,从下拉菜单中选择一个项目并Price在表单的字段中显示它的相应价格值。我怎么做?我知道我的 MySQL 查询已被弃用,我应该使用PDOMySQLi方法。但这不是我现在主要关心的问题。任何建议将不胜感激。

4

4 回答 4

0

假设您生成这样的输出:

<select id="service_name">
  <option value="1" data-price="80">Service #1</option>
  <option value="2" data-price="90">Service #2</option>
  ...
  <option value="n" data-price="100">Service #n</option>
</select>

<div id="price"></div>

你可以用一点 jQuery 来做到这一点:

$(function(){

  var $priceDiv = $('#price');

  $('#service_name').change(function(){

    $priceDiv.html(

      $(this).children('option[value="' + $(this).val() + '"]').data('price');

    );

  });

});
于 2013-05-20T18:07:22.003 回答
0

它显示 800.00 的价格,因为这是它从查询中获得的最后一个值。您可以通过基于所选服务名称运行第二个查询来完成您想要的。

$sql2 = " select service_price from service_tbl where id_service= $row['id_service']";

您需要将其作为 onchange 事件执行,以便它知道从下拉列表中选择了哪个值。

于 2013-05-20T18:03:31.223 回答
0

目前还不清楚你在这里要求什么。据我了解,您想在选择项目时更改价格字段中的价格。如果是这种情况,您需要使用 javascript 或 jQuery。

这是使用 jQuery 的解决方案:

像这样的东西会起作用:

$(document).ready(function(){
    $(document).on('change','#service_name',function(){
        $('#service_price').val(function(){
            return $(this).children('option[value="' + $(this).val() + '"]').data('price');
        });
    });
});

此外,我必须强烈建议您不要使用 PHP mysql_*API,因为它现在已被弃用!相反,请使用 PDO 或 mysqli,两者的信息都可以在以下链接中找到:

  1. PDO 库
  2. MySQLi 库
于 2013-05-20T18:04:02.977 回答
0

更改此行:

echo "<select id='service_name' name='service_name' onChange=\"document.getElementyById('service_price').value = this.value\">";

并删除这个:value="<?php echo $service_price; ?>"

于 2013-05-20T18:01:35.193 回答