使用PHP& MySQL填充下拉列表 [英] Using PHP & MySQL to populate dropdown

查看:98
本文介绍了使用PHP& MySQL填充下拉列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用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&amp; MySQL填充下拉列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆