【问题标题】:datatables format column from multiple sources?(Server side processing)来自多个来源的数据表格式列?(服务器端处理)
【发布时间】:2015-11-22 20:53:47
【问题描述】:

我试图让服务器端处理与连接列一起工作。

我看到了这个帖子:Datatables - Server-side processing - DB column merging

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

编辑:

示例:

表初始化:

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"}
} );

列方案:

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

错误:

{"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"}

【问题讨论】:

  • 请发布:代码、数据库架构、数据库示例、错误。如果没有这些基本信息,您的问题将无法回答。
  • 更好?它不是我的直接代码,因为我的代码有很多列,只会让帖子更难理解。
  • 更好,但我没有阅读整个数据表文档来确定它需要什么

标签: javascript php datatables


【解决方案1】:

从错误消息来看,处理引擎期望 'db' 的列引用有效。每个 'db' 都应该引用 WHERE 子句中的有效列引用,并且每个 'dt' 都包含要为该列显示的标签。

根据您的 sn-p,您的参考是:

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

这对我熟悉的大多数数据库引擎来说意义不大。试试这样的:

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

【讨论】:

  • 有什么方法可以阻止 SSP.class 在 concat 语句周围添加 ``?还是我必须添加一些逻辑来防止它?
  • 在添加一些代码以确保 sql 正确返回后,数据表只返回:DataTables 警告:表 id=customer_Table - 请求第 0 行的未知参数 '0' .... 出于某种原因它也试图一次加载 2000 条记录
  • 查看数据时返回正确但决定返回所有记录?
  • 抱歉,对您使用的框架不太熟悉。似乎此实例中的“db”参数需要保存对表中单个列的引用。您需要查看有关此框架的文档以了解如何正确执行此操作。我在 30 秒的搜索中最接近的是:datatables.net/examples/advanced_init/column_render.html
  • 所以,经过进一步调查,我发现数据表发送的 get 请求包含长度列排序等,但在 php 中它看不到大多数 get 变量...
【解决方案2】:
$columns = array(
    array( 'db' => 'id', 'dt' => "id" ),
    array( 'db' => 'name',  'dt' => "Name" ),
    array( 'db' => "CONCAT(`street`, ' ', `city`, '<br>', `postal`, ' ', `country`)", 
            'as' => "address",
            'dt' => "address")
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    相关资源
    最近更新 更多