0

ユーザーが別のページでクリックしたボタンに応じて、2つの場所に移動できるファイルがあります。

現時点では、ファイルが「ImageFiles」フォルダーに移動するかどうかを説明し、フォルダーを移動してデータベース行を挿入します。

ただし、ファイルが「ImageFiles」フォルダーにアップロードされていない場合は、以下のコードを使用してデータベース行を削除することも含めたいと思います。

$imagecancelsql = "DELETE FROM Image 
                   WHERE ImageFile = 'ImageFiles/".
                   mysql_real_escape_string($_FILES['fileImage']['name'])."'";
mysql_query($imagecancelsql);

これは可能ですか?もしそうなら、phpスクリプトにある現在のif / elseステートメントにどのように書くことができますか?

以下はphpスクリプトです:

<?php

session_start();


...//connect to DB

$result = 0;

if( is_file("ImageFiles/".$_FILES['fileImage']['name'])) {
$parts = explode(".",$_FILES['fileImage']['name']);
$ext = array_pop($parts);
$base = implode(".",$parts);
$n = 2;

while( is_file("ImageFiles/".$base."_".$n.".".$ext)) $n++;
$_FILES['fileImage']['name'] = $base."_".$n.".".$ext;

    move_uploaded_file($_FILES["fileImage"]["tmp_name"],
    "ImageFiles/" . $_FILES["fileImage"]["name"]);
    $result = 1;

    $imagesql = "INSERT INTO Image (ImageFile) 
    VALUES ('ImageFiles/".mysql_real_escape_string($_FILES['fileImage']['name'])."')";

    mysql_query($imagesql);

}
    else
      {
      move_uploaded_file($_FILES["fileImage"]["tmp_name"],
      "ImageFiles/" . $_FILES["fileImage"]["name"]);
      $result = 1;

        $imagesql = "INSERT INTO Image (ImageFile) 
        VALUES ('ImageFiles/".mysql_real_escape_string($_FILES['fileImage']['name'])."')";

mysql_query($imagesql);

      }
4

1 に答える 1

0

私が正しく理解していれば、次のコードは意図したとおりに機能するはずです。ファイルが見つかった場合、新しいファイルがそれを置き換え、データベースに新しいエントリを挿入します。ファイルが見つからない場合、データベース エントリはテーブルから削除されます。

// Stores the final result
// 0 = File wasnt uploaded and the row has been removed from table
// 1 = File was uploaded and the row has added to the table
$result = 0;
if (is_file("ImageFiles/" . $_FILES['fileImage']['name'])) {
    move_uploaded_file($_FILES["fileImage"]["tmp_name"], "ImageFiles/" . $_FILES["fileImage"]["name"]);

    $imagesql = "INSERT INTO Image (ImageFile) VALUES ('ImageFiles/".mysql_real_escape_string($_FILES['fileImage']['name'])."')";
    mysql_query($imagesql);

    // Mark result as 1 - we have added the file to teh folder and a entry to the table
    $result = 1;
} else {
    $imagecancelsql = "DELETE FROM Image WHERE ImageFile = 'ImageFiles/" . mysql_real_escape_string($_FILES['fileImage']['name'])."'";
    mysql_query($imagecancelsql);
}
于 2012-05-16T10:58:39.890 に答える