无法搜索数据库表列中不存在的列中的数据

Cannot search for data in columns that do not exist in the database table column

提问人:Denis 提问时间:10/18/2023 最后编辑:Denis 更新时间:10/19/2023 访问量:9

问:

在不在SQL中的列上搜索数据,而是在JSON数组中的列上搜索数据,有人可以教我如何正确地做到这一点吗

一切正常,但我找不到“keterangan”列中的内容。如果我在该列中搜索内容。我可以搜索其中的任何内容

(“尼克”, “电子邮件”, “nama_lengkap”)

.难道只是因为数据库表字段中不存在这一列吗?,该列怎么能包含在搜索中?

我的代码有什么问题?:

$sortableColumns = array("nik", "email", "nama_lengkap", "keterangan");
$sortColumn = "timestamp";
$sortDirection = "DESC";

if (isset($_POST['order']) && !empty($_POST['order'])) {
    $order = $_POST['order'][0];
    $sortColumnIndex = $order['column'];
    $sortColumn = $sortableColumns[$sortColumnIndex];
    $sortDirection = $order['dir'];
}
$searchValue = mysqli_real_escape_string($conn, $_POST['search']['value']);
$query = "SELECT * FROM data_mahasiswa LEFT JOIN data_kampus 
          ON data_mahasiswa.nik = data_kampus.nik WHERE 
          data_mahasiswa.nik = '$searchValue' OR
          data_mahasiswa.nama_lengkap LIKE '%$searchValue%' OR
          data_mahasiswa.email LIKE '%$searchValue%'";
$result = $conn->query($query);
$totalRecords = $result->num_rows;
$limit = $_POST['length'];
$offset = $_POST['start'];
$query .= " LIMIT $limit OFFSET $offset";

$result = $conn->query($query);

$data = array();

while ($row = $result->fetch_assoc()) {
    
$rowData = array(
'nik'                   => ''.$row["nik"].'',
'email'                 => ''.$row["email"].'',
'nama_lengkap'          => ''.$row["nama_lengkap"].'',
'keterangan'            => 'Some text', // this columns not in table fields
);

$data[] = $rowData;
}

$output = array(
    "draw" => intval($_POST['draw']),
    "recordsTotal" => $totalRecords,
    "recordsFiltered" => $totalRecords,
    "data" => $data
);
echo json_encode($output, JSON_PRETTY_PRINT);
error_log("Data JSON: " . json_encode($output, JSON_PRETTY_PRINT));
exit();

对于 JavaScript 数据表:

$(document).ready(function () {
    var table = $('#dataMightyWeb').DataTable({
        "processing": true,
        "serverSide": true,
        "ajax": {
            "url": "actions.php?act=data",
            "type": "POST",
            "datatype": "json"
        },
        "lengthChange": false,
        "pagingType": "full",
        "searching": true,
        "paging": true,
        "lengthMenu": [[10, 25, 50, -1], ["10", "25", "50", "Show all"]],
        "ordering": false,
        "info": true,
        "responsive": true,
        "columns": [ 
            { "data": "nik" },
            { "data": "email" },
            { "data": "nama_lengkap" }
            { "data": "keterangan",  "searchable": true }
        ],
        language: {
            "searchPlaceholder": "Pencarian...",
            "search": ""
        },
        "initComplete": function (settings, json) {
            table.buttons().container().appendTo('#dataMightyWeb_wrapper .col-md-6:eq(0)');
            $('div.dataTables_filter > label > input').addClass('form-control g-font-size-default g-brd-gray-light-v7 g-brd-lightblue-v3--focus g-pl-20 g-pr-50 g-py-8');
            // this for search input 
            $('div.dataTables_filter input').on('keyup', function () {
                table
                    .columns([2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]) // Kolom ke-15 adalah kolom "keterangan"
                    .search(this.value)
                    .draw();
            });
        }
    });
});
数据表 服务器端

评论


答: 暂无答案