example file upload gives error on table files
example file upload gives error on table files
http://oostveen-advies.eu/test_upload/index.html
error message: uncaught exception: Unknown file table name: files
I am using the datatables_demo database
js and php files are copies of the example given:
var editor; // use a global for the submit and return data rendering in the examples
$(document).ready(function() {
editor = new $.fn.dataTable.Editor( {
ajax: "php/upload.php",
table: "#example",
fields: [ {
label: "First name:",
name: "first_name"
}, {
label: "Last name:",
name: "last_name"
}, {
label: "Phone #:",
name: "phone"
}, {
label: "City:",
name: "city"
}, {
label: "Image:",
name: "image",
type: "upload",
display: function ( file_id ) {
return '<img src="'+editor.file( 'files', file_id ).web_path+'"/>';
},
clearText: "Clear",
noImageText: 'No image'
}
]
} );
var table = $('#example').DataTable( {
dom: "Bfrtip",
ajax: "php/upload.php",
columns: [
{ data: "first_name" },
{ data: "last_name" },
{ data: "phone" },
{ data: "city" },
{
data: "image",
render: function ( file_id ) {
return file_id ?
'<img src="'+editor.file( 'files', file_id ).web_path+'"/>' :
null;
},
defaultContent: "No image",
title: "Image"
}
],
select: true,
buttons: [
{ extend: "create", editor: editor },
{ extend: "edit", editor: editor },
{ extend: "remove", editor: editor }
]
} );
} );
<?php
/*
* Example PHP implementation used for the index.html example
*/
// DataTables PHP library
include( "lib/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,
DataTables\Editor\ValidateOptions;
// Build our Editor instance and process the data coming from _POST
Editor::inst( $db, 'users' )
->fields(
Field::inst( 'first_name' ),
Field::inst( 'last_name' ),
Field::inst( 'phone' ),
Field::inst( 'city' ),
Field::inst( 'image' )
->setFormatter( Format::ifEmpty( null ) )
->upload( Upload::inst( $_SERVER['DOCUMENT_ROOT'].'/upload2/__ID__.__EXTN__' )
->db( '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
) )
->validator( Validate::fileSize( 500000, 'Files must be smaller that 500K' ) )
->validator( Validate::fileExtensions( array( 'png', 'jpg', 'jpeg', 'gif' ), "Please upload an image" ) )
)
)
->process( $_POST )
->json();
the uploaded file is placed correctly in directory upload2/
the edit-proces by the editor has stopped. table "files" is present.
but...files contains the created record
{"data":[],"files":{"files":{"5":{"id":"5","filename":"IMG-20200329-WA0036.jpg","filesize":"69321","web_path":"/upload2/5.jpg","system_path":"/var/www/vhosts/oostveen-advies.eu/httpdocs/upload2/5.jpg"}}},"upload":{"id":"5"}}
Please, where did I get it wrong?
I am updated to the latest versions.
Thanks!
Jan
This question has an accepted answers - jump to answer
Answers
Hi Jan,
I think the issue is that you have clashing copies of Editor installed - you've got two:
Could you try just the
datatables.min.js
file and remove the other DataTables specific files you are using?Thanks,
Allan