Я все еще борюсь с тем же проектом, и на этот раз с формой редактирования (открытой через модал), которая использует 8 текстовых полей, 4 раскрывающихся списка (2 - это те же динамические раскрывающиеся списки, которые я опубликовал в своей предыдущей проблеме ) ) и одна стандартная дата типа ввода, когда данные должны быть загружены из базы данных после выбора записи в сетке (которая представляет собой простую HTML-таблицу) для редактирования.
Я не знаю, пропустил ли я что-нибудь или это было что-то еще, что я должен применить в коде, поэтому, пожалуйста, дайте мне знать ваши мысли.
Я выложу коды ниже для проверки:
Таблица «activofijo» (основные средства)
- id_AF (id)
- codigo_AF (введенный пользователем код)
- descripción_AF (описание)
- id_prov (идентификатор из таблицы провайдеров)
- id_td (идентификатор из таблицы типов документов)
- цифраDocumento_AF (номер документа)
- fechaDocumento_AF (дата документа)
- valorAdquisicion_AF (стоимость покупки актива)
- vidaUtil_AF (срок полезного использования актива)
- valorActual_AF (текущая стоимость актива)
- vidaUtilMes_AF (срок полезного использования актива в месяцах для расчета амортизации)
- id_grp (идентификатор из таблицы категорий)
- id_sgrp (идентификатор из таблицы подкатегорий)
libAF.php
public function detailsAF($id_AF)
{
$query = $this->db->prepare("SELECT * FROM activofijo WHERE id_AF = :id_AF");
$query->bindParam("id_AF", $id_AF, PDO::PARAM_STR);
$query->execute();
return json_encode($query->fetch(PDO::FETCH_ASSOC));
}
detailsAF.php
<?php
if (isset($_POST['id_AF']) && isset($_POST['id_AF']) != "") {
require 'libAF.php';
$id_AF = $_POST['id_AF'];
$object = new CRUD();
echo $object->detailsAF($id_AF);
}
?>
scptAF.js
function getAFDetails(id_AF) {
loadUpdDropDowns();
// Add asset's ID to the hidden field
$("#hidden_AF_id").val(id_AF);
$.post("ajax/activoFijo/detailsAF.php", {
id_AF: id_AF
},
function (data, status) {
// PARSE json data
var activofijo = JSON.parse(data);
// Assign existing values to the modal popup fields
$("#upd_codigo_AF").val(activofijo.codigo_AF);
$("#upd_descripcion_AF").val(activofijo.descripcion_AF);
$("#upd_select_prov").val(activofijo.id_prov);
$("#upd_select_td").val(activofijo.id_td);
$("#upd_numeroDocumento_AF").val(activofijo.numeroDocumento_AF);
$("#upd_fechaDocumento_AF").val(activofijo.fechaDocumento_AF);
$("#upd_valorAdquisicion_AF").val(activofijo.valorAdquisicion_AF);
$("#upd_vidaUtil_AF").val(activofijo.vidaUtil_AF);
$("#upd_valorActual_AF").val(activofijo.valorActual_AF);
$("#upd_vidaUtilMes_AF").val(activofijo.vidaUtilMes_AF);
$("#upd_select_grp").val(activofijo.id_grp);
$("#upd_select_sgrp").val(activofijo.id_sgrp);
}
);
// Open modal popup
$("#update_AF_modal").modal("show");
}
//sync asset's original cost textfield with the salvage value hidden field to set a
//starting value for depreciation calculation
function syncValorAF()
{
var n1 = document.getElementById('valorAdquisicion_AF');
var n2 = document.getElementById('valorActual_AF');
n2.value = n1.value;
}
//sync asset's useful life textfield with the useful life in months hidden field to set a
//starting value for depreciation calculation
function syncVidaUtilAF()
{
var v1 = document.getElementById('vidaUtil_AF');
var v2 = document.getElementById('vidaUtilMes_AF');
v2.value = v1.value * 12;
}
activos.php
<!-- Modal - Update details -->
<div class="modal fade" id="update_AF_modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel">Agregar nuevo activo</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
</div>
<div class="modal-body">
<div class="col-md-8">
<h5>Datos generales del activo</h5>
</div>
<div class="form-group">
<label for="upd_codigo_AF">Codigo del activo</label>
<input type="text" id="upd_codigo_AF" placeholder="Codigo del activo" class="form-control" required/>
</div>
<div class="form-group">
<label for="upd_descripcion_AF">Descripción</label>
<textarea id="upd_descripcion_AF" placeholder="Descripción" class="form-control" rows="3" cols="30" required></textarea>
</div>
<div class="form-group">
<label for="upd_select_prov">Proveedor</label>
<div class="upd_option_prov"></div>
</div>
<br>
<div class="col-md-8">
<h5>Datos de adquisición</h5>
</div>
<div class="form-group">
<label for="upd_select_td">Tipo de documento</label>
<div class="upd_option_td"></div>
</div>
<div class="form-group">
<label for="upd_numeroDocumento_AF">N° de documento</label>
<input type="number" id="upd_numeroDocumento_AF" placeholder="N° de documento" class="form-control" required/>
</div>
<div class="form-group">
<label for="upd_fechaDocumento_AF">Fecha de documento</label>
<input type="date" id="upd_fechaDocumento_AF" placeholder="dd-mm-yyyy" class="form-control" required/>
</div>
<div class="form-group">
<label for="upd_valorAdquisicion_AF">Valor del activo</label>
<input type="number" id="upd_valorAdquisicion_AF" placeholder="Valor del activo" class="form-control" onkeyup="syncValorAF()" required/>
</div>
<div class="form-group">
<label for="upd_vidaUtil_AF">Vida util</label>
<input type="number" id="upd_vidaUtil_AF" placeholder="Vida util" class="form-control" required/>
</div>
<div class="form-group">
<input type="number" id="upd_valorActual_AF" class="form-control" hidden readonly/>
</div>
<div class="form-group">
<input type="number" id="upd_vidaUtilMes_AF" class="form-control" hidden readonly/>
</div>
<br>
<div class="col-md-8">
<h5>Clasificación del activo</h5>
</div>
<div class="form-group">
<label for="upd_select_grp">Grupo</label>
<div class="upd_option_grp"></div>
</div>
<div class="form-group">
<div class="upd_option_sgrp"></div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancelar</button>
<button type="button" class="btn btn-primary" onclick="updateAF()">Agregar</button>
<input type="hidden" id="hidden_AF_id">
</div>
</div>
</div>
</div>
<!-- // Modal -->
PS: я заранее прошу прощения, если у меня плохая грамматика, и, кстати, код, используемый для заполнения независимых списков, такой же, как и в предыдущей проблеме, за исключением того, что у них нет функции onchange.
Редактировать
Я забыл добавить, в чем проблема, у меня проблема в том, что когда я открываю модальное окно для редактирования, я не могу загрузить выбранные опции в соответствующие выпадающие списки, и то же самое касается Дата. Я также забыл добавить файл ответов для сетки, чтобы проверить, как пользователь просматривает данные вместе с соответствующим JS-скриптом.
Мои извинения.
readAF.php
<?php
require 'libAF.php';
$data = "";
$object = new CRUD();
// Design initial table header
$data = '<table class="table table-bordered table-condensed table-striped">
<tr>
<td>Código del activo</td>
<td>Descripción</td>
<td>Nombre del proveedor</td>
<td>Tipo de documento</td>
<td>N° de documento</td>
<td>Fecha del documento</td>
<td>Valor de adquisición</td>
<td>Vida util</td>
<td>Valor actual</td>
<td>Grupo del activo</td>
<td>Sub-grupo del activo</td>
<td></td>
</tr>';
$activos = $object->readAF();
if (count($activos) > 0) {
foreach ($activos as $activo) {
$fechaDocumento_AF = date_create($activo['fechaDocumento_AF']);
$data .= '<tr>
<td>' . $activo['codigo_AF'] . '</td>
<td>' . $activo['descripcion_AF'] . '</td>
<td>' . $activo['nombre_prov'] . '</td>
<td>' . $activo['nombre_td'] . '</td>
<td>' . $activo['numeroDocumento_AF'] . '</td>
<td>' . date_format($fechaDocumento_AF, 'd-m-Y') . '</td>
<td>' . $activo['valorAdquisicion_AF'] . '</td>
<td>' . $activo['vidaUtil_AF'] . '</td>
<td>' . $activo['valorActual_AF'] . '</td>
<td>' . $activo['nombre_grp'] . '</td>
<td>' . $activo['nombre_sgrp'] . '</td>
<td>
<div class="btn-group">
<button onclick="getAFDetails(' . $activo['id_AF'] . ')" class="btn btn-warning">Editar</button>
<button onclick="deleteAF(' . $activo['id_AF'] . ')" class="btn btn-danger">Eliminar</button>
</div>
</td>
</tr>';
}
} else {
// records not found
$data .= '<tr><td colspan="6">No hay datos disponibles</td></tr>';
}
$data .= '</table>';
echo $data;
?>
scptAF.php
// READ records
function readRecords() {
$.get("ajax/activoFijo/readAF.php", {
}, function (data, status) {
$(".records_content").html(data);
});
}