M
M
Matvey Uvarov2020-07-02 15:10:11
PHP
Matvey Uvarov, 2020-07-02 15:10:11

How to display data from MongoDB in BootstrapTable, first correctly rebuild the array in PHP?

I don’t understand how to correctly configure the array in the handler.php handler , bring it to this form - test BootstrapTable . With it the table works correctly.

Array TEST - the table works with it.
5efdcd15c0d7d963333867.gif
Data selection from the MongoDB database is carried out by the handler (PHP) - handler.php :

if ($_POST['data_host'] == 1) {

    try { // подключаемся к MongoDB

        $mongo = new MongoDB\Client('mongodb://localhost:27017');
        $collection = $mongo->mydatabase->customers; // выбираем коллекцию

        $array = [];
        $cursor = $collection->find([], array('_id', 'ip', 'port')); // возвращаемый курсор с заданными значениями


        $k=0;
        foreach ($cursor as $document) {

            $array[$k] = array(

                'rows'  => array(

                    'id' => $k,
                    'ip' => $document['ip'],
                    'port' => $document['port']
            ));

            //printf("%s: %s, %s\n", $k, $document['ip'], $document['port']);
            $k++;
        }

        // отправляем назад данные
        echo json_encode( $new );
    } catch ( Exception $e ) {

        echo '<p>Невозможно подключиться к MongoDB.</p>';
        exit();
    }
}

As a result, an array is formed with which the table does not work. NON-WORKING OPTION - the table does not work with it.
5efdcdd52bde6318131074.gif
table.html
<div class="content">
    <div class="fresh-table full-color-red">
        <div class="toolbar"></div>
        <table id="host_table" class="table"></table>
    </div>
</div>

table.js
if (document.getElementById('host_table')) {

    // инициализируем таблицу
    $table = $('#host_table');

    $(function () {

        $table.bootstrapTable('destroy').bootstrapTable({
            method: 'post',
            url: HANDLER_URL + '?data_host=1',
            classes: 'table table-hover table-striped',
            toolbar: '.toolbar',
            search: true,
            pagination: true,
            striped: true,
            sortable: true,
            pageSize: 9,
            columns: [
                { field: 'id', title: 'ID', align: 'left', visible: true },
                { field: 'ip', title: 'IP', align: 'left', visible: true },
                { field: 'port', title: 'Port', align: 'left', visible: true }
            ],
            formatShowingRows: function (pageFrom, pageTo, totalRows) {

                return 'Showing ' + pageFrom + ' to ' + pageTo + ' of ' + totalRows + ' RDP host';
            }
        })
    })
}


-- EDIT --
Corrected the logic of "rebuilding" the array, bringing it to the reference (test) output:
// получаем данные таблицы
if ($_POST['data_rdphost'] == 1) {

  try { // подключаемся к MongoDB

        $mongo      = new MongoDB\Client('mongodb://localhost:27017'); // без авторизации
        $collection = $mongo->mydatabase->customers; // выбираем коллекцию
        $cursor     = $collection->find([], array('ip', 'port')); // возвращаемый курсор с заданными значениями
        $arr        = []; // инициализируем массив
        $k          = 0; // начальный id

        // вносим в массив данные
        foreach ($cursor as $document) {

            array_push($arr, array(

                    'id' => $k,
                    'ip' => $document['ip'],
                    'port' => $document['port']
                )
            );

            $k++;
        }

        // сращиваем массивы
        $array = array(

            'total' => 100,
            'totalNotFiltered' => 100,
            'rows' => $arr
        );

        // кодируем ответ
        echo json_encode($array);
    } catch ( Exception $e ) {

        echo '<p>Невозможно подключиться к MongoDB. Проверьте работоспособность кода и процесса MongoDB.</p>';
        exit();
    }
}

5efdf1e5e3510160998121.gif
But the table still doesn't work . Friends, we need your help.

Answer the question

In order to leave comments, you need to log in

2 answer(s)
M
Matvey Uvarov, 2020-07-05
@zoddak

For some reason, it only worked with a GET request, I corrected it a little more ...

if ($_GET['data_rdphost'] == 1) {

  try { // подключаемся к MongoDB

        $mongo      = new MongoDB\Client('mongodb://' . MONGO_HOST . ':' . MONGO_PORT); // без авторизации
        $collection = $mongo -> mydatabase -> rdp_host; // выбираем коллекцию
        $cursor     = $collection -> find([], array('ip', 'port')); // возвращаемый курсор с заданными значениями
        $arr        = []; // инициализируем массив
        $k          = 1; // начальный id

        // вносим в массив данные
        foreach ($cursor as $document) {

            array_push($arr, array(

                    'id' => $k,
                    'ip' => $document['ip'],
                    'port' => $document['port']
                )
            );

            $k++;
        }

        // сращиваем массивы
        $array = array( 'rows' => $arr );

        // кодируем ответ
        echo json_encode($array);
    } catch ( Exception $e ) {

        echo '<p>Невозможно подключиться к MongoDB. Проверьте работоспособность кода и процесса MongoDB.</p>';
        exit();
    }
}

F
FanatPHP, 2014-10-29
@FanatPHP

Double. Aftar did not manage to edit the old question, and asked a new, more relevant one.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question