2017-03-09 4 views
1

ファイルをアップロードするPHPファイルでクエリを作成するためにint(プロジェクトID)を渡したいが、すべて動作するが、 $ project [0] [0]であるintを渡します。 file_upload_parse.phpに向かってAjaxファイルをアップロードして、intを渡したいがどうすればよいかわからない

<?php 
    if ($project[0][5] == true) { 
     echo "<div class=\"ui cards\"> 
     <div class=\"card\" style=\"width: 100vw;\"> 
      <div class=\"content\"> 
       <div class=\"header\"> 
        <div class=\"meta\"> 
         <span class=\"right floated time\">" . $project[0][2] . "</span> 
         <a style=\"font-size: 0.7em\" class=\"category\"> <i class=\"Reply icon\"></i>" . $lang['VIEW_PREVIOUS'] . "</a> 
        </div> 
        <h1><i class=\"File Pdf Outline icon\" style=\"font-size: 2em; padding:14px; margin-right: 20px;\"></i>" . $project[0][1] . " " . $lang['PRESENTATION'] . " </h1> 
       </div> 
       <br> 
      </div> 
      <form style='margin-bottom:0px;' id='upload_form' method='POST' enctype='multipart/form-data'> 
      <div class=\"extra content\"> 
       <div class=\"ui two buttons\"> 
        <a href='uploads/".$upload[0][1]."' download='' class=\"ui green button\"><i class=\"download icon\"></i>" . $lang['DOWNLOAD'] . "</a> 
        <label for=\"presentation\" class=\"ui icon button\"> 
        <i class=\"file icon\"></i> 
        " . $lang['UPLOAD_NEW_PRESENTATION'] . "</label> 
        <input onchange=\"selectFile()\" type='file' name='presentation' style='display:none;' id=\"presentation\" class=\"ui basic red button\"></div> 
       </div> 
      </div> 
      </form> 
     </div> 
    </div>"; 
    } 
    ?> 
</div> 

これは、現在のコード(JSは、ページの下部に位置しています)(JSです:誰かが、これは、現在のコード(HTML/PHP)である

私を助けてください/ PHP):

function selectFile() { 
    var file = _("presentation").files[0]; 
    uploadFile(file); 
    $('.ui.modal') 
     .modal('show') 
    ; 
} 

function uploadFile(file) { 
    var file = _("presentation").files[0]; 

    var formdata = new FormData(); 
    formdata.append("presentation", file); 
    var ajax = new XMLHttpRequest(); 
    ajax.upload.addEventListener("progress", progressHandler, false); 
    ajax.addEventListener("load", completeHandler, false); 
    ajax.addEventListener("error", errorHandler, false); 
    ajax.addEventListener("abort", abortHandler, false); 
    ajax.open("POST", "templates/upload/file_upload_parse.php"); 
    ajax.send(formdata); 



} 

function progressHandler(event) { 
    var percent = (event.loaded/event.total) * 100; 
    console.log(percent); 
    // _("progressBar").value = percent = Math.round(percent); 
    // _("status").innerHTML = Math.round(percent)+ " uploaded"; 
} 
function completeHandler(event) { 
    $('.ui.modal') 
     .modal('hide') 
    ; 
    console.log("closed"); 
} 
function errorHandler(event) { 
    _("status").innerHTML = "failed"; 
} 
function abortHandler(event) { 
    _("progressBar").value = 0; 
} 

これは、現在のコード(HTML/PHP)です:

<?php 
include "../../models/login.php"; 
$con = new User(); 

if (isset($_FILES['presentation'])){ 
$filename = $_FILES['presentation']['name']; 
$fileTmpLoc = $_FILES['presentation']['tmp_name']; 
$fileType = $_FILES['presentation']['type']; 
$fileSize = $_FILES['presentation']['size']; 
$fileErrorMsg = $_FILES['presentation']['error']; 

$file_ext = explode('.',$filename); 
$file_ext = strtolower(end($file_ext)); 

$allowed = array('txt' , 'pdf','png','jpg'); 
if (in_array($file_ext, $allowed)){ 
    if ($fileSize <= 2000000000){ 
     $file_name_new = uniqid('', true) . '.' . $file_ext; 
     if (move_uploaded_file($fileTmpLoc, "../../uploads/$file_name_new")){ 
     $con->executeQuery("INSERT INTO `uploads`(`project_id`, `location`, `file_kind`) VALUES (".$_GET['projectid'].",'".$file_name_new."','presentation')"); 
     $con->executeQuery("UPDATE `GGD`.`projects` SET `presentation` = '1' WHERE `projects`.`id` =".$_GET['projectid']); 
    } 

} 
} 

} 

答えて

0

アップロードファイル機能uploadFile(file)では、project_idになる2番目のパラメータを渡してから、フォームデータオブジェクトに追加する必要があります。 すなわち

function uploadFile(file, project_id) { 
// ... 
    console.log('passed project_id', project_id); // make sure you are sending the right ID. 
    formdata.append("projectID", project_id); // key, value 
    ajax.send(formdata); 
} 
ペソ(file_upload_parse.php)では、あなたはまた、このよう

function uploadFile(file, project_id) { 
//... 
console.log('passed project_id', project_id); // make sure you are sending the right ID. 
ajax.open("POST", "templates/upload/file_upload_parse.php?projectID="+project_id); 
//... 
} 

やPHPでのGetメソッドを介してPROJECTIDを送ることができます$_POST['projectID']

を経由して、これをアクセスすることができます

(file_upload_parse .php)、これは$_GET['projectID']で取得できます。そう

あなたのケースのために

、あなたがuploadFile(と呼ばれている)selectFileの内側() 、あなたがselectFile

<input onchange=\"selectFile(". $project[0][0] .")\" type='file' name='presentation' style='display:none;' id=\"presentation\" class=\"ui basic red button\"></div> 

そして、あなたはselectFileを(定義されている場所)にごPROJECTIDを渡す必要がある、あなたはこれを渡しますprojectIdをuploadFile関数に設定します

+0

高速応答のおかげでありがとう! 私はPHPページに私を導くフォームにアクションを追加して、私はまだ次のエラーが表示されます: 通知:未定義のインデックス:/アプリケーション/ MAMP/htdocs/GGD /テンプレート/アップロード/file_upload_parse.php 4行目 –

+0

あなたはproject_idを送っていますか?私は自分の答えを更新し、確認できるようにconsole.log()を追加しました。また、この[SO post](http://stackoverflow.com/questions/23802133/send-xmlhttprequest-with-both-header-and-formdata)への回答を確認してください。それは同様のシナリオのようです。 –

+0

私はそれは動作しますが、質問を実行しません(投稿を編集してください)。 –

関連する問題