2

我检查了董事会并在谷歌上搜索了这段代码,但找不到任何东西。任何帮助将不胜感激。

我已经完成了一个教程,该教程根据汽车制造商查询数据库中的汽车型号。在代码中,汽车品牌被硬编码为选择,而汽车模型是动态的。这是代码的第一部分:

    <?php 
    require_once("Connections/xxx.php"); // database connection

    $make = $_POST['make'];


    if ($make){
    $query= sprintf("SELECT * FROM car_model where car_model_id='$make'");
    $result = @mysql_query($query); 
    $rowModel = mysql_fetch_array($result);
    }
    ?>

这是选择硬代码:

<select name="make" onChange="document.forms[0].submit()">
<option value="">Select Make</option>
<option value="1" <?php if(!(strcmp(1, $make))){echo "selected";}?>>Alfa Romeo</option>
<option value="2" <?php if(!(strcmp(2, $make))){echo "selected";}?>>Audi</option>
<option value="3" <?php if(!(strcmp(3, $make))){echo "selected";}?>>BMW</option>
<option value="4" <?php if(!(strcmp(4, $make))){echo "selected";}?>>Citroen</option>

这是动态填充的选择:

 <select name="model">
<option value="">Select Model</option>
<?php do {  ?>
<option value="<?php echo $rowModel['car_model_id']; ?>"><?php echo $rowModel['car_model']; ?></option>
<?php  }while ($rowModel = mysql_fetch_array($result));  ?>

我想向这个动态填充的选择字段添加一个 onChange 函数,以将结果回显到文本字段,我尝试了很多组合,但无法弄清楚这一点。谢谢

4

3 回答 3

0

我建议使用 jquery 而不是将 javascript 内联。这样代码就可以重用了。

<select name="model">
    <option value="">Select Model</option>
    <?php while ($rowModel = mysql_fetch_assoc($result)){  ?>
      <option value="<?php echo $rowModel['car_model_id']; ?>">
       <?php echo $rowModel['car_model']; ?>
      </option>
    <?php  } ?>
</select>
<input type="text" id="model_text">

这是应该放入通用 js 文件的 javascript。

<script>
  $(document).ready(function(){
     $('select[name="model"]').change(function(){
       $('#model_text').val($(this).text());
     });
  });
</script>

我还建议像 Arun Killu 所说的那样做一些没有 sql 注入的事情。将变量放入 sql 而不先清理它绝不是一个好主意。即使当前用户无权更改它。

于 2012-10-29T13:35:41.100 回答
0

在构造查询或使用准备好的查询之前,您的查询会暴露在 sql 注入中转义您的输入(建议使用 php pdo)

<select name="model">
    <option value="">Select Model</option>
    <?php while ($rowModel = mysql_fetch_assoc($result)){  ?>
    <option value="<?php echo $rowModel['car_model_id']; ?>" onChange="textfield(this.value)" ><?php echo $rowModel['car_model']; ?></option>
    <?php  } ?>
<script>
function textfield(val)
{
  document.getElementById('your_text_filed_id').value=val;
}

<script>
于 2012-10-29T12:20:09.737 回答
0

由于您不喜欢我的 jquery 版本,我仍然认为这是一个更好的答案,我敢肯定 javascript 方式不会在每个浏览器中都受支持并且非常有问题(这就是大多数人使用 jquery 的原因)

<select name="model" onchange="update_textbox()" id="model">
    <option value="">Select Model</option>
    <?php while ($rowModel = mysql_fetch_assoc($result)){  ?>
      <option value="<?php echo $rowModel['car_model_id']; ?>">
       <?php echo $rowModel['car_model']; ?>
      </option>
    <?php  } ?>
</select>
<input type="text" id="model_text">
<script>
 function update_textbox(){
  var selectbox = document.getElementById('model');
  var model = selectbox[selectbox.selectedIndex].text;
  document.getElementById('model_text').value=model ;
 }
</script>
于 2012-10-31T13:35:54.593 回答