-2

画像のアップロードを含むフォームを作成しようとしています。participant挿入したいテーブルがあるとしましょう:

INSERT INTO `participant`(`Matric`, `Name`, `IC`, `Address`, `Tel`, `Phone`, 
`Email`, `Phone_Ref`, `Institute`, `Course`, `Pic_Participant`, `Exp_Work`) 
VALUES ([value-1],[value-2],[value-3],[value-4],[value-5],[value-6],[value-7],
[value-8],[value-9],[value-10],[value-11],[value-12])

私がやりたいことは、データを挿入して画像をアップロードすることです。その属性はPic_Participant.

ajax Ajax Image Upload と Resize with jQuery と PHP を使用してアップロードについて検索します。次に、フローを考えて、フォームに入力して同じページに画像をアップロードし、画像をアップロードした後、画像のデータをdbに送信しますが、フォームはまだ送信されません。テーブル画像から属性を取得してテーブル参加者に追加するにはどうすればよいですか?

私を助けてください。私はこれについて新しいです。


編集

このコードを試してみましたが、エラーが発生しました: 未定義の変数

 <?php

session_start();

include 'dbconnect.php';

function is_valid_type($file)
{
$valid_types = array("image/jpg", "image/jpeg", "image/bmp", "image/gif");

if (in_array($file['type'], $valid_types))
return 1;
return 0;
}


function showContents($array)
{
echo "<pre>";
print_r($array);
echo "</pre>";
}


$TARGET_PATH = "upload/";

//ERROR START HERE

$Matric = $_POST['Matric'];
$Name = $_POST['Name'];
$IC = $_POST['IC'];
$Address = $_POST['Address'];
$Tel = $_POST['Tel'];
$Phone = $_POST['Phone'];
$Email = $_POST['Email'];
$Phone_Ref = $_POST['Phone_Ref'];
$Institute = $_POST['Institute'];
$Course = $_POST['Course'];
/* $fname = $_POST['fname'];
$lname = $_POST['lname']; */
$image = $_FILES['image'];
$Exp_Work =$_POST['Exp_Work'];
//ERROR END HERE


$Matric = mysql_real_escape_string($Matric);
$Name = mysql_real_escape_string($Name);
$IC = mysql_real_escape_string($IC);
$Address = mysql_real_escape_string($Address);
$Tel = mysql_real_escape_string($Tel);
$Phone = mysql_real_escape_string($Phone);
$Email = mysql_real_escape_string($Email);
$Phone_Ref = mysql_real_escape_string($Phone_Ref);
/* $Total_sales = addslashes($_POST['Total_sales']);
$Date = addslashes($_POST['Date']); */
/* $Cer_name = mysql_real_escape_string($Cer_name); */
$Institute = mysql_real_escape_string($Institute);
$Course = mysql_real_escape_string($Course);
/* $Cat_name = addslashes($_POST['Cat_name']);
$Product_name = addslashes($_POST['Product_name']); */
/* $fname = mysql_real_escape_string($fname);
$lname = mysql_real_escape_string($lname); */
$image['name'] = mysql_real_escape_string($image['name']);
$Exp_Work = mysql_real_escape_string($Exp_Work);


$TARGET_PATH .= $image['name'];


if ( $Matric == "" ||$Name == "" ||$IC == "" ||$Address == "" ||$Tel == "" ||$Phone == "" ||$Email == "" ||$Phone_Ref == "" || $Institute == "" || $Course == ""|| $image['name'] == ""|| $Exp_Work == "" )
{
$_SESSION['error'] = "All fields are required";
echo "All fields are required";
exit;
}


if (!is_valid_type($image))
{
$_SESSION['error'] = "You must upload a jpeg, gif, or bmp";
echo"You must upload a jpeg, gif, or bmp";
exit;
}


if (file_exists($TARGET_PATH))
{
$_SESSION['error'] = "A file with that name already exists";
echo"A file with same name exists already";
exit;
}


if (move_uploaded_file($image['tmp_name'], $TARGET_PATH))
{

$sql = "insert into participant (Matric, Name, IC, Address, Tel, Phone, Email, Phone_Ref, Institute, Course, image, Exp_Work) values ('$Matric','$Name','$IC','$Address','$Tel','$Phone','$Email','$Phone_Ref','$Institute', '$Course','" . $image['name'] . "','$Exp_Work')";
$result = mysql_query($sql) or die ("Could not insert data into DB: " . mysql_error());
echo"Imgage uploaded successfully";
exit;
}
else
{

$_SESSION['error'] = "Could not upload file. Check read/write persmissions on the directory";
header("Location: fail.php");
exit;
}
?>
4

2 に答える 2

0

私があなたの質問を読んだとき、あなたはあなたが見つけたチュートリアル/コードを使ってすでに画像をアップロードし、そして画像がすでにアップロードされているときにフォームを別々に提出したいと思います。

ファイルのアップロード後に画像がどこにあるかを知るには、次の2つのオプションがあります。

  1. アップロードが完了したときに画像のアップロードでファイルパスを返し、その変数をフォームに含めます(たとえば、非表示の入力として)。
  2. 画像パスをセッション変数に保存して、データフィールドを送信するときに、その変数にアクセスして画像の情報を取得できるようにします。

編集:詳細については、フォームプラグインのドキュメントを確認する必要がありますが、アップロードphpスクリプトから何かを返すことができます。たとえばecho、ファイル名をsuccess関数で使用できるようにすることができます。

    function afterSuccess(return_value)  {
        console.log(return_value);  // here you have what was echoed out by php

        $('#UploadForm').resetForm();  // reset form
        $('#SubmitButton').removeAttr('disabled'); //enable submit button
    }
于 2013-03-16T17:25:17.213 に答える
0

私が正しく取得した場合、あなたが望むのは(おそらくMYSQL)データベースに画像を挿入することです。

画像のバイナリ データを使用してこれを実現し、base64_encode()結果の平文をデータベースに挿入します。

$image = 'path/to/image/image.png';
$imagefordbs  =  base64_encode($image);
/*now your image is ready to be stored in database*/

ただし、base64_encode() は元のメモリよりも約 33% 多く消費し、入力バイナリの処理に時間がかかるため、この方法には欠点があります。また、mysql にはこの種の要件に対応する専用のデータ型 - BLOBがあります。

于 2013-03-16T17:20:27.050 に答える