Quantcast
Channel: DataTables 1.10 — DataTables forums
Viewing all articles
Browse latest Browse all 2364

Problem json with joins Datatable 1.10.15

$
0
0

Hello,
when I active serverSide mode, iI get this error:
DataTables warning: table id=productos-table - Invalid JSON response. For more information about this error, please see http://datatables.net/tn/1

My editor and table code:

editor = new $.fn.dataTable.Editor( {
"ajax": "../php/mod_productos.php",
"table": "#productos-table",
"fields": [{
"label": "Titulo en español:",
"name": "dt_productos.titulo_es_ES"
}, {
"label": "Titulo en inglés:",
"name": "dt_productos.titulo_en_US"
}, {
"label": "Tienda:",
"name": "dt_productos.fk_tienda",
"dataProb": "1",
"type": "select"
}, {
"label": "Sinonimos:",
"name": "dt_rel_productos_sinonimos.fk_sino",
"type": "select"
}, {
"label": "Subsubcategoria:",
"name": "dt_rel_productos_subsubcategorias.fk_subsubcategoria",
"type": "select"
}, {
"label": "Tags:",
"name": "dt_productos.tags",
"type": "textarea"
}, {
"label": "Prioridad:",
"name": "dt_productos.prioridad"
}, {
"label": "Precio:",
"name": "dt_productos.precio"
}, {
"label": "Precio anterior:",
"name": "dt_productos.precio_ant"
}, {
"label": "Url:",
"name": "dt_productos.url"
}, {
"label": "Activo:",
"name": "dt_productos.activo",
"type": "select",
"ipOpts": [{ "label": "Si", "value": "1" },
{ "label": "No", "value": "0"}]
}, {
label: "Imagen:",
name: "dt_files[].id",
type: "uploadMany",
display: function ( fileId, counter ) {
return '<img src="'+table.file( 'dt_files', fileId ).web_path+'"/>';
},
noImageText: "No images"
}
]
} );

        $('#productos-table').DataTable( {
            dom: "Bfrtip",
            ajax: {
                url: "../php/mod_productos.php",
                type: "POST"
            },
            serverSide: true,
            columns: [
                {data: "dt_productos.id_producto"},
                {"data": "dt_productos.titulo_es_ES"},
                {"data": "dt_productos.titulo_en_US"},
                {"data": "dt_tiendas.titulo"},
                {"data": "dt_sinonimos.titulo_es_ES",
                    defaultContent: "Sin sinonimo",
                    editField: "dt_rel_productos_sinonimos.fk_sino"
                },
                {"data": "dt_categorias_terciarias.titulo_es_ES",
                    defaultContent: "Sin subsubcategoria",
                    editField: "dt_rel_productos_subsubcategorias.fk_subsubcategoria"
                },
                {"data": "dt_productos.prioridad", editField: "dt_productos.prioridad"},
                {"data": "dt_productos.precio", render: $.fn.dataTable.render.number(',', '.', 2, '', '&euro;')},
                {"data": "dt_productos.precio_ant", render: $.fn.dataTable.render.number(',', '.', 2, '', '&euro;')},
                {"data": "dt_productos.tags"},
                {"data": "dt_productos.activo"},
                {
                    data: "dt_files",
                    render: function ( file_id ) {
                        if (file_id.length>0) {
                            return file_id[0].id ? '<img src="'+table.file( 'dt_files', file_id[0].id ).web_path+'" style="width: 100px;"/>' :
                                'No tiene imagen';
                        }else{
                            return null;
                        }
                    },
                    defaultContent: "No tiene imagen",
                    editField: "dt_files[].id"
                }

            ],
            order: [1, 'desc'],
            select: {
                style: 'os',
                selector: 'td:first-child'
            },
            buttons: [
                {extend: "create", editor: editor},
                {extend: "edit", editor: editor},
                {extend: "remove", editor: editor}
            ]
        } );

My PHP code:

<?php

// DataTables PHP library
include( "../../php/DataTables.php" );

// Alias Editor classes so they are easy to use
use
DataTables\Editor,
DataTables\Editor\Field,
DataTables\Editor\Format,
DataTables\Editor\Mjoin,
DataTables\Editor\Options,
DataTables\Editor\Upload,
DataTables\Editor\Validate;

// Build our Editor instance and process the data coming from _POST
Editor::inst( $db, 'dt_productos','id_producto' )
->fields(
Field::inst( 'dt_productos.id_producto' ),
Field::inst( 'dt_productos.titulo_es_ES' )->validator( 'Validate::notEmpty' ),
Field::inst( 'dt_productos.titulo_en_US' )->validator( 'Validate::notEmpty' ),
Field::inst( 'dt_productos.prioridad' ),
Field::inst( 'dt_productos.fk_tienda' )
->options( 'dt_tiendas', 'id_tienda', 'titulo' ),
Field::inst( 'dt_productos.precio' )
->validator( 'Validate::numeric' )
->setFormatter( 'Format::ifEmpty', null ),
Field::inst( 'dt_productos.precio_ant' )
->validator( 'Validate::numeric' )
->setFormatter( 'Format::ifEmpty', null ),
Field::inst( 'dt_productos.activo' )
->validator( 'Validate::numeric' ),
Field::inst( 'dt_tiendas.titulo' ),
Field::inst( 'dt_productos.tags' ),
Field::inst( 'dt_productos.url' ),
Field::inst( 'dt_rel_productos_sinonimos.fk_sino' )
->options( 'dt_sinonimos', 'id_sino', 'titulo_es_ES' ),
Field::inst( 'dt_sinonimos.titulo_es_ES' ),
Field::inst( 'dt_rel_productos_subsubcategorias.fk_subsubcategoria' )
->options( 'dt_categorias_terciarias', 'id_subsubcat', 'titulo_es_ES' ),
Field::inst( 'dt_categorias_terciarias.titulo_es_ES' )
)
->join(
Mjoin::inst( 'dt_files' )
->link( 'dt_productos.id_producto', 'dt_imagenes_productos.fk_producto' )
->link( 'dt_files.id', 'dt_imagenes_productos.fk_file' )
->fields(
Field::inst( 'id' )
->upload(Upload::inst($_SERVER['DOCUMENT_ROOT'].'/photos/products/ID.EXTN')
->db( 'dt_files', 'id', array(
'filename' => Upload::DB_FILE_NAME,
'filesize' => Upload::DB_FILE_SIZE,
'web_path' => Upload::DB_WEB_PATH,
'system_path' => Upload::DB_SYSTEM_PATH
) )
->dbClean( function ( $data ) {
// Remove the files from the file system
for ( $i=0, $ien=count($data) ; $i<$ien ; $i++ ) {
unlink( $data[$i]['system_path'] );
}

                        // Have Editor remove the rows from the database
                        return true;
                    } )
                    ->validator( function ( $file ) {
                        return$file['size'] >= 100000 ?
                            "Files must be smaller than 100K" :
                            null;
                    } )
                    ->allowedExtensions( [ 'png', 'jpg' ], "Please upload an image" )
                )
        )
)

->leftJoin( 'dt_rel_productos_sinonimos', 'dt_productos.id_producto', '=', 'dt_rel_productos_sinonimos.fk_producto' )
->leftJoin( 'dt_sinonimos','dt_rel_productos_sinonimos.fk_sino', '=', 'dt_sinonimos.id_sino' )
->leftJoin( 'dt_rel_productos_subsubcategorias', 'dt_productos.id_producto', '=', 'dt_rel_productos_subsubcategorias.fk_producto' )
->leftJoin( 'dt_categorias_terciarias','dt_rel_productos_subsubcategorias.fk_subsubcategoria', '=', 'dt_categorias_terciarias.id_subsubcat' )
->leftJoin( 'dt_tiendas','dt_productos.fk_tienda', '=', 'dt_tiendas.id_tienda' )
->where( 'dt_productos.activo', 1 , '=')


->on('postCreate', function ($editor, $id, $values, $row){
    //thumbnails($db, $values);
    /*$urlencrip = generateRandomString() . ($id * 5);
    //resize(340, 440, $uploadPath, $fi);
    $editor->db()->insert( 'dt_rel_productos_urls', array(
        'fk_producto'   => $id,
        'url' => $urlencrip
    ));*/

})
->process( $_POST )
->json();

Thank you.


Viewing all articles
Browse latest Browse all 2364

Trending Articles