相关下拉菜单无法正常运行

时间:2018-08-27 15:53:41

标签: javascript php jquery mysql

这是我第一次访问此网站,所以我会努力追求。

我一直在使用PHP,AJAX,jquery和MySQL作为数据库的固定资产控制Web系统(该项目的结构是通过遵循本网站https://www.itechempires.com/2016/07/pdo-crud-operations-using-php-bootstrap/的教程进行的,而构成),其中这些项目是注册以及每种资产所属的类别,公司内用户进行的交易以及每次交易生成的报告。

由于我尝试了所有可以使它们起作用的下拉列表,但目前我一直受困于这些下拉列表,但是没有我一直在寻找的结果,这是: 在模式中,有一种形式是要添加资产及其相关信息的信息,其中两个详细信息是类别和子类别,这些类别和子类别由从属下拉列表处理,选择子类别后,将显示与子类别有关的下拉列表。

这些代码段将进行审核,重点将放在与下拉列表相关的代码段上。

表格

组(组或类别)

  • id_grp(组ID,自动递增,用户不可见)
  • codigo_grp(代码)
  • nombre_grp(名称)

subgeupo(子组或子类别)

  • id_sgrp(子组ID,自动递增,用户不可见)
  • codigo_sgrp(代码)
  • nombre_sgrp(名称)
  • vidaUtil_sgrp(有用的生活)
  • id_grp(组ID,外键)

libAF.php:包含所有针对Crud操作的查询

    /* 
    * Get group's id and name
    *
    * @return $id_grp, $nombre_grp
    * */
    public function populateSelGrp()
    {
        $query = $this->db->prepare("SELECT id_grp, nombre_grp FROM grupo");
        $query->execute();
        $data = array();
        while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
            $data[] = $row;
        }
        return $data;
    }

    /* 
    * Get sub-group's id and name
    *
    * @return $id_grp, $nombre_grp
    * */
    public function populateSelSgrp($id_grp)
    {
        $query = $this->db->prepare("SELECT * FROM subgrupo WHERE id_grp = :id_grp");
        $query->bindParam("id_grp", $id_grp, PDO::PARAM_STR);
        $query->execute();
        $data = array();
        while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
            $data[] = $row;
        }
        return $data;
    }

populateSelGrp.php:将类别加载到父级下拉列表上

<?php

require 'libAF.php';

$data = "";

$object = new CRUD();

$grupos = $object->populateSelGrp();

$data .= '<select id="select_grp" class="form-control" onchange="populateSelSgrp()">';
$data .= '<option value="0" disabled selected>Escoja grupo</option>';    
if (count($grupos) > 0) {
    foreach ($grupos as $grupo) {
        $data .= '<option id="selected_grp" value="' . $grupo['id_grp'] . '"> ' . $grupo['nombre_grp'] . '</option>';
    }
}
else
{
    $data .= '<option>No hay opciones disponibles</option>';
}

$data .= '</select>';

echo $data;

?>

populateSelSgrp.php:将子类别加载到子下拉列表

<?php

require 'libAF.php';

if (isset($_POST['id_grp']) && isset($_POST['id_grp']) != "") {
    $id_grp = $_POST['id_grp'];
    $data = "";

    $object = new CRUD();

    $subgrupos = $object->populateSelSgrp($id_grp);

    $data .= '<label for="select_sgrp">Sub-grupo</label>';
    $data .= '<select id="select_sgrp" class="form-control">';
    $data .= '<option value="0" disabled selected>Escoja sub-grupo</option>';

    if (count($subgrupos) > 0) {
        foreach ($subgrupos as $subgrupo) {    
            $data .= '<option value="' . $subgrupo['id_sgrp'] . '"> ' . $subgrupo['nombre_sgrp'] . '</option>';
        }
    }
    else
    {
        $data .= '<option>No hay opciones disponibles</option>';        
    }

    $data .= '</select>';

    echo $data;
}

?>

scptAF.js:包含使输入正常工作所需的脚本

function populateSelGrp(){        
$.get("ajax/activoFijo/populateSelGrp.php", {
},
    function (data, status) {
//load options to dropdown list
        $(".option_grp").html(data);
    }
);
}

function populateSelSgrp(id_grp){
$.ajax({
    url: "ajax/activoFijo/populateSelSgrp.php",
    method: "POST",
    data:{id_grp: id_grp},
    success:function(data){
        $(".option_sgrp").html(data);
    }
})            
}

activos.php(资产):用户在其中添加,删除或更新资产的可见页面。

 <div class="form-group">
     <label for="select_grp">Grupo</label>
     <div class="option_grp"></div>
 </div>         
 <div class="form-group">
      <div class="option_sgrp"></div>
 </div>

1 个答案:

答案 0 :(得分:0)

我终于找到了解决此问题的方法,这是我必须添加到javaScript文件中的一些代码才能将ID发送到第二个下拉列表。尽管我终于解决了我的问题,但我希望看到有关如何解决该问题的其他建议。

这是我的摘录

scptAF.js

print()