-1

重複の可能性:
ImageId に空の値を挿入します

ユーザーがテキストエリアに質問を追加し、その下に質問を追加できるjsfiddleがここにあります。ユーザーが質問を追加すると、下の表に質問が追加されますが、ファイル入力を含む列も追加されます。ユーザーは、この入力を使用して画像ファイルを選択できます。

Jsfiddleに送信ボタンを含めていませんが、ユーザーがフォームを送信すると、ユーザーはcreate_session.phpページに移動しますが、バックグラウンドでinsertQuestion.phpに投稿する場所の下にAJAXがあります。

  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 つのことを行います。まず、ファイル入力フィールドからすべてのファイルをアップロードし、フォームからすべての値をデータベースに挿入します。

ただし、2 つの問題があります。

問題 1:

正しいファイル タイプをアップロードしているにもかかわらず、「無効なファイルがあります」とエコーし続けます。なぜこれを行うのか、有効なファイルに対して「無効なファイル」をエコーし​​ないように修正するにはどうすればよいですか。

問題 2:

INSERT VALUES コードでは、ファイル入力からファイルの場所が選択されている場合でも、'ImageId' に空白の値が表示され続けます。空白の値が表示され続けるのはなぜですか?どうすれば修正できますか?

以下は、私が現在見ている 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();

?>
4

1 に答える 1

0

問題 1: [] をアップロード ファイル名に追加しているため、 $_FILES["fileImage"] はファイルの配列であるため、["type"] は配列の各要素に対してのみ存在するため、if は失敗します。

error_reporting(E_ALL); この種のエラーに対して役立ちます。

問題 2 は問題 1 ですが、$_POST があります

于 2012-04-06T21:27:21.103 に答える