我检查了主板和Google搜索此代码但找不到任何内容。任何帮助将不胜感激。
我已经完成了一个教程,该教程根据汽车品牌查询数据库中的汽车模型。在代码中,当汽车模型是动态的时,汽车制造硬编码到选择。这是代码的第一部分:
<?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函数,以便将结果回显到文本字段,我尝试了很多组合,但是无法解决这个问题。谢谢
答案 0 :(得分: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>
答案 1 :(得分: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而不首先清理它永远不是一个好主意。即使目前用户无权更改它。
答案 2 :(得分: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>