2013-04-14 46 views
0

我正在写一个jQuery移动页面(使用PHP)填充select元素,它的选项标签具有来自MySQL中的表中的“项目”数据库(该表包含ID,项目,成本)。使用通常引用的mysql_query和mysql_fetch_assoc方法来回显这些工作正常。剥到裸代码:jQuery Mobile:基于列表中的选择更新来自MySQL表的输入

<?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,成本)节省另一个数据库查询,或无论我们是否必须再次查询数据库以执行选择,其中用户的选择= shortDesc。

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

帮助非常感谢一如既往。

+0

您可以使用Ajax通过向PHP发送请求并返回JSON值来完成此操作。或者,您可以在选项标签中包含一个包含值并将其发布一次的选项。 – Omar

回答

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> 
+0

嗨。非常感谢您的回复!我想也许你对$ array的引用应该是$ row?使用$ array我得到了很多未定义的变量错误。 $行似乎解决了这个问题。虽然在线“”,但我遇到了麻烦。我关闭了短PHP标记,但即使使用“<?php = $ options?>”,它也不起作用。 “<?php echo $ options;?>”确实有效。你知道我在我的PHP配置中缺少什么来支持“<?php = $ options?>”?我很好奇等号的作用。我还没有做到JavaScript部分,因为我预计这行'<?php = $ javascript?>“也会失败。非常感谢。 – Robin

+0

我通过将相同的逻辑应用于JavaScript位来实现它:“<?php echo $ javascript;?>”。 – Robin

+0

很好用。我是对的行/数组是错误的(我改变了我的代码)。是的<?='是<?php echo的缩写,另见http://php.net/ini.core#ini.short-open-tag –

相关问题