2016-09-16 3 views
0

チケットを作成するときにファイルをアップロードできる小さなヘルプデスクシステムを作成しました。チケットは、データベースに格納されているチケットの詳細と一致するID番号を持つフォルダに格納されます。チケットの詳細を開くと、そのチケットに関連付けられているファイルを一覧表示して開くことができます。これまではすべてのチケットの詳細を取得することができましたが、json_encode($ファイル)に悩まされています。また、現在のJavaScriptコードでどのように参照することができますか?何か案は?JavaScriptのPHPファイルscandir()の結果

私も問題があります。そして.. scandir()配列内にあり、それらを削除したい。コメント行を使用すると、PHPファイルでjson_encode配列が正しく表示されません。あなたは私が解読できたものから、2つの出力を結合したいようおかげ

PHPファイル(スニペット)

$value = $_POST['value']; 

$sql = "SELECT * FROM helpdesk WHERE ID = '$value'"; 
$result = mysqli_query($conn, $sql); 

while($rowEdit = mysqli_fetch_array($result)) 
{    
     echo json_encode(array($rowEdit['ID'], $rowEdit['DateCreated'], $rowEdit['Name'], $rowEdit['Company'], $rowEdit['Phone'], $rowEdit['Email'])); 
} 

$dir = 'uploads/' . $value .'/'; 
$files = scandir($dir); 
//$files = array_diff(scandir($dir), array('.', '..')); 
echo json_encode($files); 

HTMLファイル(JavaScriptのスニペットは)

$(function(){ 
    /* Opens selected ticket details */ 
    var modal = document.getElementById('modal'); 
    var output = ""; 
    $('#btnEdit').click(function(e){ 
     var value = $("#tblTickets tr.selected td:first").html(); 
      $.ajax({ 
       type : "POST", 
       url : "sql_helpdesk_ticket_details.php",      
       data : {value:value}, 
       success : function(output) { 
        var result = $.parseJSON(output); 
        $(".modal-body #txtID").val(result[0]); 
        $(".modal-body #txtDateCreated").val(result[1]); 
        $(".modal-body #txtName").val(result[2]); 
        $(".modal-body #txtCompany").val(result[3]); 
        $(".modal-body #txtPhone").val(result[4]); 
        $(".modal-body #txtEmail").val(result[5]); 

        modal.style.display = 'block'; 
       } 
      });    
    }); 

答えて

1

ですね。

define('DS',DIRECTORY_SEPARATOR); 
# Trim any spacing 
$id = trim($_POST['value']); 
# Just die if there are any errors 
# I am presuming $_POST['value'] is numeric. If not, you need to bind_param 
if(!empty($id)) { 
    if(!is_numeric($id)) 
     die(json_encode(array('error'=>'Id not numeric'))); 
} 
else 
    die(json_encode(array('error'=>'Id can not be empty'))); 
# As noted, if you are allowing anything but numeric, bind_param is required 
$result = mysqli_query($conn, "SELECT * FROM `helpdesk` WHERE `ID` = '{$id}'"); 
$data = array(); 
# Loop through and save to array 
while($rowEdit = mysqli_fetch_array($result)) {    
    $data['data'][] = array(
          $rowEdit['ID'], 
          $rowEdit['DateCreated'], 
          $rowEdit['Name'], 
          $rowEdit['Company'], 
          $rowEdit['Phone'], 
          $rowEdit['Email']) 
         ); 
} 
# Create directory path 
$dir = 'uploads'.DS.$value.DS; 
# It is wise to check that it exists first 
if(is_dir($dir)) { 
    $files = scandir($dir); 
    # I just loop through the results, but you can array_diff to filter the dots 
    foreach($files as $file) { 
     if(!is_file($file)) 
      continue; 
     # Save files to array 
     $data['files'][] = $file; 
    } 
} 
# Output all the data 
die(json_encode($data)); 

使いのブラウザではJavaScriptが対応するように調整する必要があります:filesという名前のファイルと1つのdataと呼ばれるキーとその他のデータベース・リターンを格納することによって、およびJSONにエンド出力に一つの配列を作成し、それを行うために、新しいキー。

+0

私のjson_encodeは{"data": "data2"、 "files": ""、 "file1"、 "file2" ]}、JavaScriptからどのように 'data'配列オブジェクト 'data2'を参照するのですか? 'var result = $。parseJSON(出力); val(結果[データ] [2]); ' – user2168287

+0

申し訳ありませんが、私はそれを働いた。 '$("。modal-body #txtID ")。val(result.data [2]);' – user2168287