Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在datatable服务器端搜索其他查询_Php_Datatables_Server Side - Fatal编程技术网

Php 如何在datatable服务器端搜索其他查询

Php 如何在datatable服务器端搜索其他查询,php,datatables,server-side,Php,Datatables,Server Side,我在服务器端使用datatables,一切正常。现在,我尝试在代码中搜索从函数attrib()获取的数据。这会为每行添加更多信息,但问题是无法搜索其数据 这是可以理解的,因为它不存在于用于搜索数据库的主$sql查询中。有办法解决这个问题吗 我知道这可能很难理解,所以我尽量说清楚。如果你能提供帮助,请要求更多的澄清。谢谢 $sql = "SELECT mat_code,mat_descp,short_code_details,approverComment,date_created,

我在服务器端使用datatables,一切正常。现在,我尝试在代码中搜索从函数attrib()获取的数据。这会为每行添加更多信息,但问题是无法搜索其数据

这是可以理解的,因为它不存在于用于搜索数据库的主$sql查询中。有办法解决这个问题吗

我知道这可能很难理解,所以我尽量说清楚。如果你能提供帮助,请要求更多的澄清。谢谢

$sql = "SELECT  mat_code,mat_descp,short_code_details,approverComment,date_created,
                mt.mat_type, mt.mat_desc,
                vc.val_class,vc.val_class_desc,
                vc.val_cat_code,vc.val_cat_desc,
                n.noun_name,n.qualifier,n.shorttext_item,
                u.uombs,
                mg.mtgp_id,mg.mtgp_desc,
                pt.plant_name,
                sl.sl_id,sl.sto_loc_name,
                pg.pur_id,pg.purchs_gp_name,
                us.fname,us.lname,mat_status
                    FROM mat_master_head mmh
                INNER JOIN material_type mt ON mmh.mat_type = mt.mat_type
                LEFT OUTER JOIN valuation_class vc ON mmh.val_class_id = vc.id
                INNER JOIN noun n ON mmh.noun_id = n.noun_id
                INNER JOIN uom_bs u ON mmh.uombs_id = u.uombs_id
                INNER JOIN material_group mg ON mmh.mg_id = mg.id
                INNER JOIN plant pt ON mmh.plant_id = pt.plant_id
                INNER JOIN storage_location sl ON mmh.sl_id = sl.id
                INNER JOIN purchase_gp  pg ON mmh.pur_id = pg.pur_id
                INNER JOIN users us ON mmh.user_id = us.id
                WHERE (1=1)";
                // AND mat_status = 4 AND (download_status = 0 OR download_status = 1)

if( !empty($requestData['search']['value']) ) {   // if there is a search parameter, $requestData['search']['value'] contains search parameter

    $sql.=" AND ( mat_code LIKE '%".$requestData['search']['value']."%' ";
    $sql.=" OR plant_name LIKE '%".$requestData['search']['value']."%' ";
    $sql.=" OR sto_loc_name LIKE '%".$requestData['search']['value']."%' ";
    $sql.=" OR noun_name LIKE '%".$requestData['search']['value']."%' ";
    $sql.=" OR qualifier LIKE '%".$requestData['search']['value']."%' ";
    $sql.=" OR shorttext_item LIKE '%".$requestData['search']['value']."%' ";
    $sql.=" OR short_code_details LIKE '%".$requestData['search']['value']."%' ";
    $sql.=" OR uombs LIKE '%".$requestData['search']['value']."%' ";
    $sql.=" OR mat_descp LIKE '%".$requestData['search']['value']."%' ";
    $sql.=" OR fname LIKE '%".$requestData['search']['value']."%' ";
    $sql.=" OR lname LIKE '%".$requestData['search']['value']."%' ";
    $sql.=" OR date_created LIKE '%".$requestData['search']['value']."%' )";

}

$query = $conn->query($sql);
$totalFiltered = $query->rowCount(); // when there is a search parameter then we have to modify total number filtered rows as per search result.

if( !empty($requestData['order'][0]['column']) || !empty($requestData['order'][0]['dir']) || !empty($requestData['start']) || !empty($requestData['length'])) {

$sql.=" ORDER BY ". $columns[$requestData['order'][0]['column']]."   

".$requestData['order'][0]['dir']." ";
    $sql.=" LIMIT ".$requestData['start']." , ".$requestData['length']." ";
    /* $requestData['order'][0]['column'] contains colmun index, $requestData['order'][0]['dir'] contains order such as asc/desc  */
    }

    $query = $conn->query($sql);


///Attribute Function//////////////////////////////////

    function attrib($mat_code)
    {
        global $conn;

    $mat_query = "SELECT a.attributes, mmd.attr_value, u.uombs FROM mat_master_details mmd
                    INNER JOIN attribute a ON mmd.attr_id = a.attr_id
                    INNER JOIN uom u ON a.uombs_id = u.uombs_id
                    WHERE mat_code = '$mat_code' AND mmd.attr_value >= '0'";
    $mat = $conn->query($mat_query);

    $attribs = '';

    foreach($mat as $mats){
        $attribs .= removeSlash($mats['attributes'].' - '.$mats['attr_value'].''.$mats['uombs'].' ');
    }
    return '<span class="colortxt3">'.$attribs.'</span>';
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

$data = array();
  foreach ($query as $row)  {  // preparing an array
    $nestedData=array(); //new array to display list

    $nestedData[0] =  $row['mat_code'];
    $nestedData[1] =  MatStatus($row['mat_status']);
    $nestedData[2] = '<span class="lgtxt">'.'PLANT:'.' '.'</span>'.'<span class="colortxt">'.$row['plant_name'].'</span>'.' '.
                     '<span class="lgtxt">'.'STORAGE LOCATION:'.' '.'</span>'.'<span class="colortxt">'.$row['sto_loc_name'].'</span>'.' '.'<br>'.

                     '<span class="lgtxt">'.'NOUN:'.' '.'</span>'.'<span class="colortxt">'.$row['noun_name'].'</span>'.' '.
                     '<span class="lgtxt">'.'QUALIFIER:'.' '.'</span>'.'<span class="colortxt">'.$row['qualifier'].'</span>'.' '.

                     '<span class="lgtxt">'.'SHORT TEXT:'.' '.'</span>'.'<span class="colortxt">'.$row['shorttext_item'].''.removeSlash($row['short_code_details']).'</span>'.' '.
                     '<span class="lgtxt">'.'BASE UOM:'.' '.'</span>'.'<span class="colortxt">'.$row['uombs'].'</span>'.' '.'<br>'.

                     '<span class="lgtxt">'.''.'</span>'.'<span class="colortxt4">'.$row['mat_descp'].'</span>'.' '.
                     '<span class="colortxt3">'.attrib($nestedData[0]).'</span>'.' '.'<br>'.
                     '<span class="lgtxt">'.'CREATED BY:'.' '.'</span>'.'<span class="colortxt2">'.$row['fname']." ". $row['lname'].'</span>'.' '.
                     '<span class="lgtxt">'.'DATE CREATED:'.' '.'</span>'.'<span class="colortxt2">'.$row['date_created'].'</span>';
    $nestedData[3] = '<a href="materialMasterForm.php?id='.$row['mat_code'].'" target="_blank" class="nbtn">View</a>';

    $data[] = $nestedData;
  }
$sql=“选择物料代码、物料描述、简短的物料代码详细信息、审批人注释、创建日期、,
mt.mat_类型,mt.mat_描述,
vc.val\u class,vc.val\u class\u desc,
vc.val_cat_代码,vc.val_cat_desc,
n、 名词名,限定词,短文本项,
u、 uombs,
mg.mtgp_id,mg.mtgp_desc,
pt.工厂名称,
sl.sl_id,sl.sto_loc_名称,
pg.PURU id,pg.purchs\U gp\U名称,
美国名称,美国名称,材料状态
来自mat_master_head mmh
mmh上的内部连接材料类型mt.mat类型=mt.mat类型
mmh.val\u class\u id=vc.id上的左外连接赋值类vc
mmh.noun\u id=n.noun\u id上的内部连接名词n
mmh.uombs\u id=u.uombs\u id上的内部联接计量单位
mmh.mg上的内部连接材料组mg\U id=mg.id
mmh.plant\U id上的内部连接设备pt=pt.plant\U id
mmh.sl\u id=sl.id上的内部联接存储位置sl
mmh.pur\U id=pg.pur\U id上的内部连接采购\U gp pg
内部用户在mmh.user\u id=us.id上加入我们
式中(1=1)”;
//和mat_status=4和(download_status=0或download_status=1)
如果(!empty($requestData['search']['value']){//如果有搜索参数,$requestData['search']['value']包含搜索参数
$sql.=”和(类似“%”的mat_代码$requestData['search']['value'].“%”);
$sql.=”或类似“%”的plant_名称$requestData['search']['value']。“%”;
$sql.=”或类似“%”的sto_loc_名称$requestData['search']['value'].“%”;
$sql.=”或类似“%”的名词名称$requestData['search']['value']。“%”;
$sql.=”或类似“%”的限定符$requestData['search']['value'].“%”;
$sql.=”或类似“%”的短文本项$requestData['search']['value'].“%”;
$sql.=”或“%”之类的简短代码详细信息,$requestData['search']['value'].“%”;
$sql.=“或类似“%”的计量单位$requestData['search']['value']。“%”;
$sql.=“或类似“%”的mat_descp$requestData['search']['value'].“%”;
$sql.=”或类似“%”的fname$requestData['search']['value'].“%”;
$sql.=”或类似“%”的lname$requestData['search']['value'].“%”;
$sql.=”或像“%”一样创建的日期\$requestData['search']['value'].“%”);
}
$query=$conn->query($sql);
$totalFiltered=$query->rowCount();//当有搜索参数时,我们必须根据搜索结果修改过滤行的总数。
如果(!empty($requestData['order'][0]['column']])| |!empty($requestData['order'][0]['dir']])| |!empty($requestData['length'])){
$sql.=“订单依据”$columns[$requestData['ORDER'][0]['column']]
“$requestData['order'][0]['dir']”;
$sql.=“限制”。$requestData['start']。”、“$requestData['length']。”;
/*$requestData['order'][0]['column']包含colmun索引,$requestData['order'][0]['dir']包含asc/desc等顺序*/
}
$query=$conn->query($sql);
///属性函数//////////////////////////////////
函数属性($mat_代码)
{
全球$conn;
$mat\u query=“从mat\u master\u details mmd中选择a.attributes、mmd.attr\u value、u.uombs
mmd.attr\u id=a.attr\u id上的内部联接属性a
a.uombs_id=u.uombs_id上的内部联接计量单位u
其中mat_code='$mat_code'和mmd.attr_value>='0';
$mat=$conn->query($mat\u query);
$attribs='';
foreach($mat作为$mats){
$attribs.=removeSlash($mats['attributes'.-'.$mats['attr_value'.'.'.$mats['uombs'.]);
}
返回“.$attribs.”;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
$data=array();
foreach($queryas$row){//准备数组
$nestedData=array();//要显示列表的新数组
$nestedData[0]=$row['mat_code'];
$nestedData[1]=MatStatus($row['mat_status');
$nestedData[2]=''植物:'.$row['PLANT_name'.''.''.''。
'.'存储位置:'.'.$row['sto_loc_name'.].'.'.'
'。 ''名词:'.$行['NOUN_name'.'.''.''.'''.''.'。 '.'限定符:'.$row['QUALIFIER'.'.''.'。 '.'SHORT TEXT:'.$row['shorttext\u item'.'.'.'.'删除Flash($row['SHORT\u code\u details'])。'.''。 '.'基本计量单位:'.$row['uombs'.'.'.'.'.'。 “.”.$row['mat_descp'.]”.“.”。 '.attrib($nestedData[0])。'。 ''创建人:'''.$row['fname'].''.'.$row['lname'].''。 '.'创建日期:'.'.$row['DATE_CREATED'.']。'; $nestedData[3]=''; $data[]=$nestedData; }
你没有让这变得容易。首先,“数据表”可以指几件事。只是有“数据”的“表格”,但我想是的

您的代码中有一个函数
attrib()
,但它做什么?!它的名字没有告诉我任何事情,上面的评论是:“属性函数”,这不是很有启发性。好的,我明白了,它执行一个查询

因此,您在“datatable”中输出一列,其中的值来自查询,您希望能够在选择行f之前搜索该值
$sql .=" OR (SELECT ... FROM ... WHERE ....) LIKE '%".$requestData['search']['value']."%' ";