2016-06-05 2 views
0

다양한 레코드 내부를 검색하는 검색 스크립트를 만들었지 만 SQL에서 WHERE 세션을 추가하면 스크립트가 더 이상 작동하지 않습니다. 당신이 코드를 확인하고 제가 어떻게 작동하도록 스크립트를 변경할 수 있는지 조언 해 주시겠습니까? 당신이 당신의 쿼리를 구성 할 때 분명히 로그인 한 사용자를 위해, 당신은 where user_id = ? 절을 추가세션 ID 및 검색 스크립트

<?php 
    //include connection file 
    include_once("connection.php"); 
    session_start(); 
    if (!isset($_SESSION['GEBRUIKER_ID'])) { 
    header ("Location: "); 
    die; 
} 


    // initilize all variable 
    $params = $columns = $totalRecords = $data = array(); 

    $params = $_REQUEST; 

    //define index of column 
    $columns = array(
     0 =>'id', 
     1 =>'user_id', 
     2 => 'klant_id', 
     3 => 'naam_klant', 
     4 => 'contactpersoon', 
     5 => 'adres' 
    ); 

    $where = $sqlTot = $sqlRec = ""; 

    // check search value exist 
    if(!empty($params['search']['value'])) { 
     $where .=" WHERE "; 
     $where .=" (naam_klant LIKE '".$params['search']['value']."%' ";  
     $where .=" OR contactpersoon LIKE '".$params['search']['value']."%' "; 

     $where .=" OR adres LIKE '".$params['search']['value']."%')"; 
    } 

    // getting total number records without any search 
     $sql = "SELECT id,naam_klant,contactpersoon,adres FROM klanten WHERE user_id='".$_SESSION['GEBRUIKER_ID']."' "; 
    $sqlTot .= $sql; 
    $sqlRec .= $sql; 
    //concatenate search sql if value exist 
    if(isset($where) && $where != '') { 

     $sqlTot .= $where; 
     $sqlRec .= $where; 
    } 


    $sqlRec .= " ORDER BY ". $columns[$params['order'][0]['column']]." ".$params['order'][0]['dir']." LIMIT ".$params['start']." ,".$params['length']." "; 

    $queryTot = mysqli_query($conn, $sqlTot) or die("database error:". mysqli_error($conn)); 


    $totalRecords = mysqli_num_rows($queryTot); 

    $queryRecords = mysqli_query($conn, $sqlRec) or die("error to fetch employees data"); 

    //iterate on results row and create new index array of data 
    while($row = mysqli_fetch_row($queryRecords)) { 
     $data[] = $row; 
    }  

    $json_data = array(
      "draw"   => intval($params['draw']), 
      "recordsTotal" => intval($totalRecords), 
      "recordsFiltered" => intval($totalRecords), 
      "data"   => $data // total data array 
      ); 

    echo json_encode($json_data); // send data as json format 
?> 


          
  
<script type="text/javascript"> 
 
    $(document).ready(function() { 
 
    $('#employee_grid').DataTable({ 
 
    "bProcessing": true, 
 
    "serverSide": true, 
 
    "ajax":{ 
 
    url :"response.php", // json datasource 
 
    type: "post", // type of method ,GET/POST/DELETE 
 
    error: function(){ 
 
    $("#employee_grid_processing").css("display","none"); 
 
    } 
 
    } 
 
    }); 
 
    }); 
 
    </script>
<div class="container"> 
 
    <div class=""> 
 
    <h3>Klanten overzicht</h3> 
 
    <div class=""> 
 
    <table id="employee_grid" class="display" width="100%" cellspacing="0"> 
 
    <thead> 
 
    <tr> 
 
    <th>Klantnummer</th> 
 
    <th>Naam</th> 
 
    <th>Contactpersoon</th> 
 
    <th>Adres</th> 
 
    </tr> 
 
    </thead> 
 

 
    <tfoot> 
 
    <tr> 
 
    <th>Klantnummer</th> 
 
    <th>Naam</th> 
 
    <th>Contactpersoon</th> 
 
    <th>Adres</th> 
 

 
    </tr> 
 
    </tfoot> 
 
    </table> 
 
    </div> 
 
    </div> 
 

 
    </div>
+0

당신이 SQL 쿼리를 확인나요 : 당신은 한 쿼리에서 두 where의를 가질 수 없습니다,이 같은 and을 수있다? – John

+0

나는 그랬다. 현재 쿼리는 다음과 같습니다. SELECT ID, 이름, 연락처, 주소, 사용자 ID = ' ". $ _ SESSION ['GEBRUIKER_ID ']."'; 어디서 user_id = ' "을 제거 할 때. $ _ SESSION ['GEBRUIKER_ID ']." 스크립트는 작동하지만 로그인 한 사용자는 관련된 클랜튼을 가져올 수 없습니다. –

답변

0

: 여기

내 스크립트입니다. 검색 값이 비어 있지 않은 경우 두 번째 where 절을 추가하여 쿼리가 본질적으로 select .. from .. where user_id = ? where (naam_klant like ".." OR .. OR ..)이되도록합니다.

select .. from .. where user_id = ? AND (naam_klant like ".." OR .. OR ..) 
+0

IK는 지금이,하지만 여전히 작동하지 :. 이 // 체크 검색 값이 존재 \t 경우 (! ($ PARAMS는 [ '검색'] 빈을 [ '값'])) { \t \t $ 곳 = " WHERE user_id = ' ". $ _ SESSION ['GEBRUIKER_ID ']."' "; \t \t $ where = "(naam_klant LIKE '") $ params ['검색 '] ['값 ']. 검색 '] ['값 ']. "%" "; \t \t $ where ="OR adres LIKE' ". $ params [ 'search'] [ 'value']."% ') "; \t} –