0

PHPコードに問題があります。私が現在行っているのは、iframeを使用してjavascriptメッセージをpheスクリプトにリンクすることです。javascript関数stopImageUploadで、success = 2の場合、ファイルアップロードのキャンセルメッセージを表示すると述べました。

したがって、phpスクリプトで試したが失敗したのは、$ result = 2の場合(つまり、success = 2のメッセージがjavascriptに表示される場合)、データベースの行を削除することです。これはどのように行うことができますか?

以下はフォームコードです。

var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='return imageClickHandler(this);' class='imageuploadform' >" + 
  "Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><br/><label class='imagelbl'>" + 
  "<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" +     
  "</p><p class='imagef1_cancel' align='center'><label>" + 
  "<input type='button' name='imageCancel' class='imageCancel' value='Cancel' /></label>" +
  "<iframe class='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px;solid;#fff;'></iframe></form>");

以下は、ファイルのアップロードを開始し、キャンセルボタン関数が保存されるstartImageUpload()関数です。

  function startImageUpload(imageuploadform, imagefilename){
    $('.imagef1_cancel').eq(window.lastUploadImageIndex).find(".imageCancel").on("click", function(event) {
      return stopImageUpload(2);
      });     
    return true;
  }

以下は、成功と結果を使用してキャンセルメッセージを表示するstopImageUpload()関数です。

function stopImageUpload(success, imagefilename){
  var result = '';
  if (success == 2){
    result = '<span class="imagecemsg"> The file upload was canceled!</span><br/><br/>';
  } else {
    result = '<span class="imageemsg">There was an error during file upload!</span><br/><br/>';
  }         
  return true;   
}

最後に、iframeを使用してQandATable.php(上記のコードを含むスクリプト)にリンクされているimageupload.phpスクリプトを示します。これは、データベース行が挿入および削除される場所です。

    <?php
      session_start();
      ...//connected to DB
      $result = 0;

if( file_exists("ImageFiles/".$_FILES['fileImage']['name'])) {
    $result = 1;

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

    mysql_query($imagesql);

}
    else
      {

      $result = 1;

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

mysql_query($imagesql);

      }

      if ($result == 2) {
        $imagecancelsql = "DELETE FROM Image 
                           WHERE ImageFile = 'ImageFiles/".
                           mysql_real_escape_string($_FILES['fileImage']['name'])."'";
        mysql_query($imagecancelsql);
      }
      mysql_close();
    ?>
    <script language="javascript" type="text/javascript">window.top.stopImageUpload(<?php echo $result ? 'true' : 'false'; ?>, '<?php echo $_FILES['fileImage']['name'] ?>');</script>
4

1 に答える 1

0

コードには、対処する必要のある重大な問題があります。

1)

この行:

return stopImageUpload(2);

関数を呼び出しています:

function stopImageUpload(success, imagefilename){...}

ただし、stopImageUpload関数には2つのパラメーターが必要ですsuccessimagefilename


2)

この関数はtrueを返しますが、の内容を返す必要がありresultます。

function stopImageUpload(success, imagefilename){
  ...
  return true;   
}

3)

ここで$resultは、値を設定し、それを値?!?0と比較します。2

$result = 0;

if ($result == 2) {

4)

この関数は2つのパラメーターを受け入れますが、いずれも?!?内では使用されません。

function startImageUpload(imageuploadform, imagefilename){...}

また、戻ってきています

return stopImageUpload(2);

また

return true;

あなたはこの状況をコントロールしていますか?

注:この関数はどこで使用しますか?!?


5)

file_existsファイルまたはディレクトリが存在するかどうかをチェックするため、この検証は失敗する可能性があります。したがって、ファイルが存在しない場合は、必ずディレクトリが存在し、実行を継続します。

if( file_exists("ImageFiles/".$_FILES['fileImage']['name'])) {

ファイルが通常のファイルであるかどうかを示すis_fileを使用する必要があります。


6)

もう使用しないでください。MySQL開発者向けのPDOチュートリアルmysql_queryをお読みください。

mysql_query($imagesql)


このトピックを読んでください:なぜあなたはあなたの目標を達成するのに失敗しているのかを学ぶために

PHP変数

JavaScript変数

JavaScript関数

PHPファイルのアップロード例:1 | PHPファイルのアップロード例2 | PHPファイルのアップロード(例:3)


これが正しい軌道に乗って、現在のコードのいくつかの問題を修正するのに役立つことを願っています。

幸運を祈ります!

于 2012-05-16T00:21:38.727 に答える