这是我第一次在这个网站上,所以我将削减追逐。
我一直在开发一个固定资产控制web系统,使用php、ajax、jquery和mysql作为数据库(项目结构是按照本网站的教程制作的:https://www.itechempires.com/2016/07/pdo-crud-operations-using-php-bootstrap/ ),其中这些项目与每项资产所属的类别一起登记,用户在公司内部进行的交易以及每笔交易生成的报告。
目前,我被下拉列表困住了,因为我尝试了任何我能让它们工作的方法,但是没有我一直在寻找的结果,那就是:在一个模式中,有一个表单,其中一个资产将被添加其相关信息,其中两个细节是类别和子类别,由相关的下拉列表处理,选择类别后,将显示有关子类别的下拉列表。
代码片段将进行审查,重点是与下拉列表相关的代码片段:
table
grupo(组或类别)
id\ grp(组id,自动递增,用户不可见)
codigo\ U grp(代码)
名称(名称)
subgeupo(子组或子类别)
id\u sgrp(子组id,自动递增,用户不可见)
codigo\ U sgrp(代码)
名称(名称)
使用寿命
id\u grp(组id,外键)
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;
}
?>
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(assets):用户添加、删除或更新资产的可见页面。
<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条答案
按热度按时间5rgfhyps1#
我终于找到了解决这个问题的方法,就是在javascript文件中添加一些代码,将id发送到第二个下拉列表中。虽然我终于解决了我的问题,但我想看看其他关于如何解决这个问题的建议。
这是我的片段
脚本.js