2012-04-06 26 views
-1

可能重複:
it inserts a blank value for ImageId我不斷收到空白值和無效的文件

我有一個的jsfiddle here其中用戶能夠在一個文本添加問題,並添加問題在下面。現在,當用戶添加一個問題時,它會在下面的表格中添加問題,但它也會添加一個包含文件輸入的列。用戶可以使用此輸入選擇圖像文件。

現在我沒有在Jsfiddle中包含一個提交按鈕,但是當用戶提交表單時,它將把用戶帶到create_session.php頁面,但我有一個AJAX,它將發佈到insertQuestion.php中的背景。

function submitform() 
{ 
    var fieldvalue = $("#QandA").val(); 
    $.post("insertQuestion.php", $("#QandA").serialize() ,function(data){ 
     var QandAO = document.getElementById("QandA"); 
     QandAO.submit(); 
    }); 
    alert("Your Details for this Session has been submitted"); 
} 

現在在insertQuestion.php,它做了兩兩件事,首先就應該從上傳的文件輸入字段中的所有文件,它應該插入所有的值從形式到數據庫中。

有2個問題,但:

問題1:

它使呼應我有一個「無效的文件」,即使我正在上傳正確的文件類型。爲什麼它這樣做,以及它如何被修復,因此它不會爲有效文件回顯「無效文件」。

問題2:

在插入值代碼,它不斷用於即使當一個文件的位置已經從文件輸入所選擇的「圖像標識」顯示空白值。爲什麼它會繼續詆譭一個空白的價值,以及如何解決這個問題?

下面是INSERT VALUES我目前看到的例子:

INSERT INTO Question (QuestionContent, ImageId) VALUES ('What is my Name?',''), ('What is my Age','') 

下面是在insertQuestion.php的完整代碼:

<?php 

session_start(); 


if ((($_FILES["fileImage"]["type"] == "image/gif") 
|| ($_FILES["fileImage"]["type"] == "image/jpeg") 
|| ($_FILES["fileImage"]["type"] == "image/pjpeg") 
|| ($_FILES["fileImage"]["type"] == "image/jpg") 
|| ($_FILES["fileImage"]["type"] == "image/png") 
|| ($_FILES["fileImage"]["type"] == "image/tif"))) 
    { 
    if ($_FILES["fileImage"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["fileImage"]["error"] . "<br />"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["fileImage"]["name"] . "<br />"; 
    echo "Type: " . $_FILES["fileImage"]["type"] . "<br />"; 
    echo "Size: " . ($_FILES["fileImage"]["size"]/1024) . " Kb<br />"; 
    echo "Temp fileImage: " . $_FILES["fileImage"]["tmp_name"] . "<br />"; 

    if (file_exists("uploadimages/" . $_FILES["fileImage"]["name"])) 
     { 
     echo $_FILES["fileImage"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["fileImage"]["tmp_name"], 
     "uploadimages/" . $_FILES["fileImage"]["name"]); 
     echo "Stored in: " . "uploadimages/" . $_FILES["fileImage"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 


$username="xxx"; 
$password="xxx"; 
$database="xxx"; 

mysql_connect('localhost',$username,$password); 

mysql_select_db($database) or die("Unable to select database"); 


$i = 0; 
    $c = count($_POST['questionText']); 

    $insertquestion = array(); 

    for($i = 0; $i < $c; $i++){ 

     $imagequery = "SELECT ImageId FROM Image WHERE (ImageFile = '". mysql_real_escape_string($_POST['fileImage'])."')"; 
     $imagers = mysql_query($imagequery); 
     $imagerecord = mysql_fetch_array($imagers); 
     $imageid = $imagerecord['ImageId']; 

     $insertquestion[] = "'". 
         mysql_real_escape_string($_POST['questionText'][$i]) ."','". 
         mysql_real_escape_string($imageid [$i]) ."'"; 

    } 

    $questionsql = "INSERT INTO Question (SessionId, QuestionId, QuestionContent, QuestionMarks, OptionId, ImageId) 
     VALUES (" . implode('), (', $insertquestion) . ")"; 

    echo($questionsql); 

mysql_close(); 

?> 

回答

0

問題1: 既然你將[]添加到上傳文件名稱$ _FILES [「fileImage」]是一個文件數組,因此[「type」]只對數組的每個元素都存在,所以if失敗。

error_reporting(E_ALL); 有助於防止這種錯誤。

問題2是問題1但帶有$ _POST