使用PHP& MySQL填充下拉列表 [英] Using PHP & MySQL to populate dropdown
问题描述
我正在尝试使用PHP和MysSQL从第一个下拉列表中选择的值填充第二个下拉列表,而不刷新页面。我以为这很简单,但不能让它工作,所以任何帮助将不胜感激。
到目前为止,我有以下:
HTML表单(form.php)
select name =list1id =list1>
< option value =1> 1< / option>
< option value =2> 2< / option>
< option value =3> 3< / option>
< / select>
< select name =list2id =list2>
< / select>
JavaScript(在form.php内)
< script type =text / javascript>
$(#list1)。change(function(){
$(#list2)。load(get_list2.php?id =+ $(#list1 ());
});
< / script>
get_list2.php
require_once(config.php);
$ q1 = mysql_query(SELECT * FROM mytable WHERE id ='$ _GET [id]');
while($ row1 = mysql_fetch_assoc($ q1)){
echo< option>$ row1 ['item']。< / option>;
}
谢谢!
像其他成员一样,你应该使用PDO(带准备的语句)而不是mysql _。
一个可能的实现: / p>
HTML(form.php)
< select name = list1id =list1>
< option value =1> 1< / option>
< option value =2> 2< / option>
< option value =3> 3< / option>
< / select>
< select name =list2id =list2>< / select>
< script type =text / javascript>
$(#list1)。change(function(){
$ .ajax({
url:get_list2.php?id =+ $(this) ,
type:'GET',
dataType:'json',
success:function(data){
if(data.success){
$(' #list2')。html(data.options);
}
else {
//处理错误
}
}
});
});
< / script>
PHP(get_list2.php)
require_once( config.php中);
$ id = $ _GET ['id'];
if(!isset($ id)||!is_numeric($ id))
$ reponse = array('success'=> FALSE);
else {
//其中$ db是PDO的一个实例
$ query = $ db-> prepare(SELECT * FROM mytable WHERE id =:id) ;
$ query-> execute(array(':id'=> $ id));
$ rows = $ query-> fetchAll(PDO :: FETCH_ASSOC);
$ options =;
foreach($ rows as $ row){
$ options。='< option value ='。$ row。'>'。 $ row。'< / option>';
}
$ response = array(
'success'=> TRUE,
'options'=> $ options
);
}
header('Content-Type:application / json');
echo json_encode($ response);
PS:没有测试,但它应该工作...我猜,
I am trying to populate a second dropdown list using the value selected from a first dropdown list using PHP and MysSQL, and without refreshing the page. I thought this would be simple but can't get it to work so any help would be much appreciated.
So far, I have the following:
HTML Form (form.php)
<select name="list1" id="list1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="list2" id="list2">
</select>
JavaScript (within form.php)
<script type="text/javascript">
$("#list1").change(function() {
$("#list2").load("get_list2.php?id=" + $("#list1").val());
});
</script>
get_list2.php
require_once("config.php");
$q1 = mysql_query("SELECT * FROM mytable WHERE id = '$_GET[id]'");
while($row1 = mysql_fetch_assoc($q1)){
echo "<option>".$row1['item']."</option>";
}
Thanks!
Like other members have says, you should use PDO (with prepared statements) instead of mysql_.
One possible implementation:
HTML (form.php)
<select name="list1" id="list1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="list2" id="list2"></select>
<script type="text/javascript">
$("#list1").change(function() {
$.ajax({
url : "get_list2.php?id=" + $(this).val(),
type: 'GET',
dataType:'json',
success : function(data) {
if (data.success) {
$('#list2').html(data.options);
}
else {
// Handle error
}
}
});
});
</script>
PHP (get_list2.php)
require_once("config.php");
$id = $_GET['id'];
if (!isset($id) || !is_numeric($id))
$reponse = array('success' => FALSE);
else {
// Where $db is a instance of PDO
$query = $db->prepare("SELECT * FROM mytable WHERE id = :id");
$query->execute(array(':id' => $id));
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
$options = "";
foreach ($rows as $row) {
$options .= '<option value="'. $row .'">'. $row .'</option>';
}
$response = array(
'success' => TRUE,
'options' => $options
);
}
header('Content-Type: application/json');
echo json_encode($response);
PS : not tested but it should works... I guess.
这篇关于使用PHP& MySQL填充下拉列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!