Error on Join on Editor

Error on Join on Editor

daniloragodanilorago Posts: 4Questions: 2Answers: 0
edited February 28 in Free community support

**https://itxm.online/Project.html**:

**DataTables warning: table id=Project - Invalid JSON response. For more information about this error, please see https://datatables.net/tn/1**:

Description of problem: I'm starting now with the editor, because I want to buy the license, but I'm not able to join between the tables, the error appears:
"DataTables warning: table id=Project - Invalid JSON response. For more information about this error, please see https://datatables.net/tn/1"
I dont know how to solve! The link is: https://itxm.online/Project.html

My HTML:

<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>Teste</title>
        <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/dt/jqc-1.12.4/moment-2.29.4/dt-2.2.2/b-3.2.2/date-1.5.5/sl-3.0.0/datatables.min.css">
        <link rel="stylesheet" type="text/css" href="css/generator-base.css">
        <link rel="stylesheet" type="text/css" href="css/editor.dataTables.min.css">

        <script type="text/javascript" charset="utf-8" src="https://cdn.datatables.net/v/dt/jqc-1.12.4/moment-2.29.4/dt-2.2.2/b-3.2.2/date-1.5.5/sl-3.0.0/datatables.min.js"></script>
        <script type="text/javascript" charset="utf-8" src="js/dataTables.editor.min.js"></script>
        <script type="text/javascript" charset="utf-8" src="js/table.Project.js"></script>
    </head>
    <body class="dataTables">
        <div class="container">
            <table cellpadding="0" cellspacing="0" border="0" class="display" id="Project" width="100%">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Country</th>
                        <th>Date</th>
                        <th>Name</th>
                        <th>Description</th>
                    </tr>
                </thead>
            </table>
        </div>
    </body>
    <script>
    addEventListener("DOMContentLoaded", function () {
        var editor = new DataTable.Editor( {
            ajax: 'php/table.Project.php',
            table: '#Project',
            fields: [
                {
                    "label": "ID__Project:",
                    "name": "Project.ID__Project"
                },
                {
                    "label": "ID__Location__Country:",
                    "name": "Project.ID__Location__Country",
                    "type": "select",
                    "placeholder": "Select the country!"
                },
                {
                    "label": "Project__Start_Date:",
                    "name": "Project.Project__Start_Date",
                    "type": "datetime",
                    "format": "DD/MM/YYYY"
                },
                {
                    "label": "Project__Name:",
                    "name": "Project.Project__Name",
                    "type": "text"
                },
                {
                    "label": "Project__Description:",
                    "name": "Project.Project__Description",
                    "type": "textarea"
                }
            ]
        } );

        var table = new DataTable('#Project', {
            ajax: 'php/table.Project.php',
            columns: [
                {
                    "data": "Project.ID__Project"
                },
                {
                    "data": "Location__Country.Country__Name",
                    "editField": "Project.ID__Location__Country"
                },
                {
                    "data": "Project.Project__Start_Date"
                },
                {
                    "data": "Project.Project__Name"
                },
                {
                    "data": "Project.Project__Description"
                }
            ],
            layout: {
                topStart: {
                    buttons: [
                        { extend: 'create', editor: editor },
                        { extend: 'edit', editor: editor },
                        { extend: 'remove', editor: editor },
                        {
                            extend: 'collection',
                            text: 'Export',
                            buttons: ['copy', 'excel', 'csv', 'pdf', 'print']
                        }
                    ]
                }
            },
            select: true,
            order: [[0, 'asc']]
        });
        table.on('click', 'tbody td:not(:first-child)', function (e) {
            editor.inline(this, {
                onBlur: 'submit'
            });
        });
    });
    </script>
</html>

My PHP:

include( "lib/DataTables.php" );
use
    DataTables\Editor,
    DataTables\Editor\Field,
    DataTables\Editor\Format,
    DataTables\Editor\Mjoin,
    DataTables\Editor\Options,
    DataTables\Editor\Upload,
    DataTables\Editor\Validate,
    DataTables\Editor\ValidateOptions;

Editor::inst( $db, 'Project', 'ID__Project' )
    ->fields(
        Field::inst( 'Project.ID__Project' ),
        Field::inst( 'Project.ID__Location__Country' )
            ->options(
                    Options::inst()
                        ->table('Location__Country')
                        ->value('ID__Location__Country')
                        ->label('Country__Name')
                ),
                Field::inst( 'Location__Country.Country__Name' ),
                Field::inst( 'Project.Project__Start_Date' ),
                Field::inst( 'Project.Project__Name' ),
                Field::inst( 'Project.Project__Description' )
    )
    ->leftJoin('Location__Country', 'Location__Country.ID__Location__Country', '=', 'Project.ID__Location__Country')
    ->process( $_POST )
    ->json();

Project table:

Location__Country table:

What am I doing wrong here?

Answers

  • allanallan Posts: 64,059Questions: 1Answers: 10,559 Site admin

    I think you've hit this issue I'm afraid. What version of PHP is your server running?

    In Options.php if you replace public function include with public function inc it should start working. I'm going to commit a change for that once I've finished replying to support threads :).

    Allan

  • daniloragodanilorago Posts: 4Questions: 2Answers: 0

    I will try, thanks a lot

    My version of PHP is 8.0, its not old versions... I will try tomorrow... tks my friend

  • allanallan Posts: 64,059Questions: 1Answers: 10,559 Site admin

    Interesting - I wonder if it is actually a more more recent change! I'll try switching back to PHP 8.0 and see what happens. Until then, I'd welcome your feedback.

    Allan

Sign In or Register to comment.