【问题标题】:Using PHP & MySQL to populate dropdown使用 PHP & MySQL 填充下拉菜单
【发布时间】:2013-03-03 15:57:58
【问题描述】:

我正在尝试使用 PHPMySQL 从第一个下拉列表中选择的值填充第二个下拉列表,并且不刷新页面。我认为这很简单,但无法使其正常工作,因此非常感谢任何帮助。

到目前为止,我有以下内容:

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>

JavaScript(在 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>";
}

谢谢!

【问题讨论】:

标签: php javascript mysql drop-down-menu


【解决方案1】:

正如其他成员所说,您应该使用 PDO(带有准备好的语句)而不是 mysql_。

一种可能的实现方式:

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 : 未经测试,但它应该可以工作......我猜。

【讨论】:

  • 感谢 Guicara,这对我很有帮助!
  • 不客气 ;) 我更新了我的帖子:选项 (
猜你喜欢
  • 2010-10-06
  • 1970-01-01
  • 2013-11-27
  • 2016-08-15
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
  • 2020-03-31
  • 2018-03-19
相关资源
最近更新 更多