来自多个来源的数据表格式列(服务器端处理) [英] datatables format column from multiple sources?(Server side processing)

查看:104
本文介绍了来自多个来源的数据表格式列(服务器端处理)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图让服务器端处理工作使用连接列。



我发现这个帖子:数据库 - 服务器端处理 - DB列合并



但是我使用这种格式我得到SQL错误。但是我也想插入一个字段之间的空格...这是可能吗?



编辑:



示例:



表init:



DataTable({
processing:true,
serverSide:true,
ajax:php / server_processing.php,
stateSave:true,
lengthMenu:[[10,25,50,-1],[10,25,50,全部 ]],
'order':2,'asc']],
columns:[{title:id,visible:false,type字符串},{title:name,visible:true,type:html-string},[{title:address,visible html-string}
});

列方案:

  $ columns = array(
array('db'=>'id','dt'=>id),
array('db'=> 'name','dt'=>Name),
array('db'=>`street`。''``city`。'< br>'。 ''。'country`'dt'=>address

);

错误:

 code> {error:发生SQL错误:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册在``id`,`name`,`JCP`,``street`附近使用的语法'````````````` 'at line 1'} 


解决方案

从错误信息中判断处理引擎正在期待'db'的有效列引用。每个'db'都应该引用WHERE子句中的一个有效的列引用,每个'dt'都包含要为该列显示的标签。



根据你的片段:

 `street'。''`city`。'& ````country`

对于大多数数据库引擎来说,这并不意味着什么熟悉。尝试这样的东西:

  $ columns = array(
array('db'=>'id' 'dt'=>id),
array('db'=>'name','dt'=>Name),
array('db'=> CONCAT(street,,city,< br>','postal`,'','country`),
'dt'=>address)
);


Im trying to get server side processing working with concatenated columns.

I came across this this post: Datatables - Server-side processing - DB column merging

But when I use that format I get SQL errors. But I also want to insert say... a space between the fields... is this possible?

Edit:

Example:

Table init:

var customer_Table = $('#customer_Table').DataTable( {
    "processing": true,
    "serverSide": true,
    "ajax": "php/server_processing.php",
    stateSave: true,
    "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
    'order': 2, 'asc' ]],
    "columns": [{"title":"id","visible":false,"type":"html-string"},{"title":"name","visible":true,"type":"html-string"},[{"title":"address","visible":true,"type":"html-string"}
} );

Column scheme:

$columns = array(
    array( 'db' => 'id', 'dt' => "id" ),
    array( 'db' => 'name',  'dt' => "Name" ),
    array( 'db' => "`street` . ' ' . `city` . '<br>' . `postal` . ' ' . `country`" 'dt' => "address"
    )
);

Error:

{"error":"An SQL error occurred: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`id`,`name`, `JCP`, ``street` . ' ' . `city` . '<br>' . `postal` . ' ' . `country``...' at line 1"}

解决方案

Judging from the error message, the processing engine is expecting a valid column reference for 'db'. Each 'db' should refer to a valid column reference in the WHERE clause, and each 'dt' contains the label to be displayed for that column.

Your reference is, according to your snippet:

"`street` . ' ' . `city` . '<br>' . `postal` . ' ' . `country`"

Which doesn't mean much to most database engines I am familiar with. Try something like this:

$columns = array(
    array( 'db' => 'id', 'dt' => "id" ),
    array( 'db' => 'name',  'dt' => "Name" ),
    array( 'db' => "CONCAT(`street`, ' ', `city`, '<br>', `postal`, ' ', `country`)", 
            'dt' => "address")
);

这篇关于来自多个来源的数据表格式列(服务器端处理)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆