2017-04-18 16 views
0

私はこのような状況を持っている:私は、フォームを経由して行うPHP、jQueryとJSON、日付検索

すべての検索は完璧に動作しますが、私は日付を設定すると、クエリが有効である場合、それはまた...何も返さない。..任意のアイディア ?

JS PAGE

$('#frm_ricerca') 
    .submit(function(e) { 
     console.log('fired'); 
     $("#ricerca_btn").html('Caricamento in corso...'); 
     table.clear().draw(); 
     ZEUS.Notification('bottom', 'center', 'Ricerca Avviata', 1); 
     e.preventDefault(); 
     $.ajax({ 
      url: 'index.php?dispatch&token=XXXX&method=search_by', 
      type: 'POST', 
      data: new FormData(this), 
      processData: false, 
      contentType: false, 
      success : function(datas){ 
       $.each (datas, function(i, v){ 
       table.row.add([v.fieldA, v.fieldB...]); 
       }); 
       $("#count_research").text(datas.length + ' Elementi trovati'); 
       $("#search_result").show(); 
       table.draw(); 
       $("#ricerca_btn").html('Ricerca'); 

      }, 
      error : function(e){ 
       console.log("---- errore ----"); 
       console.log(e); 
       console.log("--- FINE ERRORE ---"); 
       $("#ricerca_btn").html('Ricerca'); 
      } 
     }); 
    }); 

PHPページ

$searchKeys = array(
     'id_operazione'  => filter_input(INPUT_POST, 'reg_id', FILTER_SANITIZE_STRING), 
     'rapporto_numero'  => filter_input(INPUT_POST, 'rapporto_numero', FILTER_SANITIZE_STRING), 
     'CONCAT(Cognome, \' \', Nome) ' => filter_input(INPUT_POST, 'nominativo', FILTER_SANITIZE_STRING), 
     'CodiceFiscale' => filter_input(INPUT_POST, 'cf', FILTER_SANITIZE_STRING), 
     'data_formazione >= ' => filter_input(INPUT_POST, 'data_dal', FILTER_SANITIZE_STRING), 
     'data_formazione <= ' => filter_input(INPUT_POST, 'data_al', FILTER_SANITIZE_STRING), 
    ); 


    $mainQuery = 'SELECT id_operazione, Cognome, Nome, CodiceFiscale, data_formazione FROM database WHERE '; 

    foreach ($searchKeys as $field=>$value) { 
     if(!empty($value)){ 
      if (strpos($field, 'Cognome') !== false) { 
       $mainQuery .= $field . " LIKE '%$value%' AND "; 
      } else if(strpos($field, 'data') !== false) { 
       $mainQuery .= $field . " '$value' AND "; 
      } else { 
       $mainQuery .= $field . " = '$value' AND "; 
      } 
     } 
    } 

    $mainQuery = substr($mainQuery, 0, -4); 

    $result = $mysqli->query($mainQuery); 
    $data = array(); 
    if($result) { 
     while ($row = $result->fetch_assoc()) { 
      $data[] = $row; 
     } 

     if(empty($data)){ 
      http_response_code(200); 
      echo json_encode(array("status"=>"succes", "message"=>"no data")); 
     } else { 
      http_response_code(200); 
      echo json_encode($data); 

     } 
    } else{ 
     http_response_code(400); 
     echo json_encode(array("status"=>"error", "query"=>$mainQuery)); 
    } 

だから、基本的には私の問題は、何でも、私はそれが動作検索に使用のparam ...

が、私が設定されている場合ということです1または両方の日付を返すと、応答200およびデータなし...

anyアイデア?

- UPDATE -

クエリに形成され使用される日付

SELECT id_operazione, Cognome, Nome, CodiceFiscale, data_formazione FROM aui WHERE data_formazione >= '2017-01-01' 

weird

それがステータス200で私にエラーを返すが....さらに奇妙な

+0

忘れました...既にJSON_HEX_TAGを追加しようとしています。 JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | jsonのJSON_UNESCAPED_UNICODEはエンコードされていますが、何も... –

+0

日付の形式は何ですか? –

+0

MySQLの日付フィールドなので、Y-m-d –

答えて

1

を解決したのthats

justned run

json_last_error() 

そして、それは

UTF-8エンコーディングエラーだったので...ちょうどティアゴhereで私に専用の時間のために

おかげで皆に提案されたソリューションを使用していました。

楽しい一日をお過ごしください。