【问题标题】:jQuery Mobile: Updating an input from MySQL table based on a selection from a listjQuery Mobile:根据列表中的选择更新 MySQL 表中的输入
【发布时间】:2013-04-17 02:31:48
【问题描述】:

我正在编写一个 jQuery 移动页面(使用 PHP),它填充了一个 select 元素,它的选项标签带有来自 MySQL 数据库中表的“items”(该表包含 id、items、cost)。使用常用的 mysql_query 和 while mysql_fetch_assoc 方法来回显选项,这很好用。剥离到裸代码:

<?php
    $itemQuery = mysql_query("SELECT shortDesc FROM `items` ORDER BY shortDesc");
?>
<label for="item" class="select">Item:</label>
    <select name="item" id="item" data-native-menu="false">
        <option>Select Item:</option>            
        <?php
            while($temp = mysql_fetch_assoc($itemQuery))
            {
                echo "<option value='".$temp['shortDesc']."'>".$temp['shortDesc']."</option>";
            }
        ?>
    </select>

但是,当用户从列表中选择一个项目时,我希望能够使用 MySQL 表中的实际项目成本更新名为“成本”下方的输入元素,但我不确定该怎么做使用 jQuery/PHP/MySQL。费用输入栏:

<label for="cost">Cost:</label>
<input type="text" name="cost" id="cost" value="" placeholder="Cost (£)"/>

我也不确定我们是否可以从 $itemQuery 中已经返回的结果中以某种方式获取成本值(通过将 SELECT 更改为 shortDesc,cost)保存另一个数据库查询,或者我们是否必须再次查询数据库执行选择,其中用户的选择 = shortDesc。

我怀疑以不同的形式,这是开发人员的共同要求;本质上是根据用户的选择/交互从数据库中获取一些信息。我在 Google 上查看并在这里搜索过,但我不确定我是否使用了正确的搜索词来查找我怀疑在其他地方已经得到解答的内容!

一如既往的帮助非常感谢。

【问题讨论】:

  • 您可以使用 Ajax 执行此操作,方法是向 PHP 发送请求并返回 JSON 值。或者您可以在选项标签中包含一个 arribute 包含该值并在选择后发布它。

标签: php jquery mysql jquery-mobile


【解决方案1】:

你可以这样做:

1) 遍历您的查询结果并编写您的选项和一些 javascript(我使用关联数组)

<?php
    $result = mysql_query("SELECT shortDesc,costs FROM items ORDER BY shortDesc");
    $options = '';
            $javascript = ''; 
    while ($row = mysql_fetch_assoc($result))
    {
        $options .= '<option value="'.$row['shortDesc'].'">'.$row['shortDesc'].'</option>';
        $javascript .= '\''.$row['shortDesc'].'\' : \''.$row['costs'].'\',';
    }
?>

2) 编写你的 html 和 javascript:

<select id="yourselect">
    <option>select</option>
<?=$options?>
</select>

<label for="cost">Cost:</label>
<input type="text" name="cost" id="cost" value="" placeholder="Cost (£)"/>

3) 编写一些 javascript 来更新您的输入字段:

<script>
    var costs = {<?=$javascript?>};

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

    cost = costs[$('#yourselect').val()];

    $('#cost').val(cost);


    });
    });

</script>

【讨论】:

  • 嗨。非常感谢您的回复!我想也许您对 $array 的引用应该是 $row?使用 $array 我得到许多未定义的变量错误。 $row 似乎解决了这个问题。我在使用“=$options?>”这一行时遇到了麻烦。我关闭了简短的 PHP 标记,但即使使用 "" 它也不起作用。 "" 确实有效。你知道我在我的 PHP 配置中缺少什么来支持“”吗?我很好奇等号的作用。我还没有进入 JavaScript 部分,因为我预计 "" 行也会失败。到目前为止,谢谢。
  • 我通过对 JavaScript 位应用相同的逻辑使其工作:“”。
  • 很好用。我是对的行/数组是错误的(我改变了我的代码)。是的,&lt;?= 是 &lt;?php echo 的缩写,另见 php.net/ini.core#ini.short-open-tag
  • 再次感谢您。很高兴也学会了如何在 PHP 和 Javascript 之间传递数据。标记为答案。
猜你喜欢
  • 2014-05-03
  • 2017-07-11
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多