首页 > 解决方案 > 如何使用 Datatables 在 ajax 调用中循环?

问题描述

我试图data在我的数据库中设置columns:我自己在 Ajax 调用中的数组。

我需要在动态列中替换那些静态列(我创建了自己的类构造函数,我的数组是```$myObject->tableFields````。

我只想知道如何在循环中循环列(在 ajax 调用中)以替换usuario, apellido1, apellido2, email$myObject->tableFields以循环整个数组。

你们知道我想说什么吗,伙计们?

<?php
    
        get_header_admin('Alex - AlexCRUDGenerator');
        get_content_admin('Alex', 'AlexCRUDGenerator');
        
        global $DB;
        
?>

    <head>
        <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    </head>
    
<?php 
        
    class GenerateCrud {
        
        // Properties.
        
            public $tableName;
            public $id;
            public $tableFields = array();
    
        // Constructor.
        
            function __construct($tableName, $id, $tableFields){
                $this->tableName = $tableName;
                $this->id = $id;
                $this->tableFields = $tableFields;
                
                //is_string($tableName) ? $this->tableName = $tableName : $this->tableName = null;
                //is_string($id) ? $this->id = $id : $this->id = null;
                //is_string($tableFields) ? $this->tableFields= $tableFields : $this-$tableFields = null;
            }
    }
    
    $myObject = new GenerateCrud('users_test', 'id', ['usuario', 'apellido1', 'apellido2', 'email']);
    
    // Parse array to string.   
    $myStringArray = implode(",", $myObject->tableFields);
    
    $sql = "SELECT $myStringArray FROM $myObject->tableName";
    $res = $DB->get_records($sql);
    
    #################################### Generate HTML - START ####################################
    
        $buttonModal = "<div class='container'><div class='row'><div class='col-lg-12'><button id='btnNuevo' type='button' class='btn btn-info' data-toggle='modal'><i class='material-icons'>library_add</i></button></div></div></div>";
        
        $html = "<table id='crudTable' class='display' style='width:100%'>";
        
            $html .= "<thead>";
                $html .= '<tr>';
                foreach ($myObject->tableFields as $ths){
                    $html .= '<th>' . $ths . '</th>';
                }
                $html .= '</tr>';
            $html .= "</thead>";
            
            $html .= "<tbody>";
                foreach ($res as $r){
                    $html .= '<tr>';
                    foreach($myObject->tableFields as $field){
                        $html .= '<td>' . $r->$field . '</td>';
                    }
                    $html .= '</tr>';
                }
            $html .= "</tbody>";
        $html .= '</table>';    
    
    #################################### Generate HTML - END ####################################
        
        echo $buttonModal . '<br>' . $html;
        
    ?>

    <!--  #################################### JAVASCRIPT START #################################### -->

    <script>
        $(document).ready(function() {

            var id, opcion;
            opcion = 4;

            $('#crudTable').DataTable({
                "language": {"url": "//cdn.datatables.net/plug-ins/1.10.20/i18n/Spanish.json"},
                "paging": true,
                "lengthChange": true,
                "searching": true,
                "info": true,
                "autoWidth": true,
                "scrollX": true,

                "ajax": {
                    "url": 'main',
                    "method": 'POST',
                    "data": {opcion: opcion}
                },

                "columns": [
                    {"data": "id"},         // I want this data in a dynamic way with my own array ($myObject->tableFields).
                    {"data": "usuario"},    // I want this data in a dynamic way with my own array ($myObject->tableFields).
                    {"data": "apellido1"},  // I want this data in a dynamic way with my own array ($myObject->tableFields).
                    {"data": "apellido2"},  // I want this data in a dynamic way with my own array ($myObject->tableFields).
                    {"data": "email"},      // I want this data in a dynamic way with my own array ($myObject->tableFields).
                    {"defaultContent": "<div class='text-center'><div class='btn-group'><button class='btn btn-primary btn-sm btnEditar'><i class='material-icons'>edit</i></button><button class='btn btn-danger btn-sm btnBorrar'><i class='material-icons'>delete</i></button></div></div>"}
                ],
                
            });
        } );
    </script>

    <!--  #################################### JAVASCRIPT END #################################### -->
        
<?php 
        
    get_footer_admin();

?>  

标签: phploopsdatatables

解决方案


推荐阅读