0

リンクを追加するか、画像をアップロードして、画像を追加する必要があるフォームがあります。ページをロードすると、URLの入力テキストがあり、入力テキストのHTMLを入力ファイルのHTMLに変更するためにスクリプト化したボタンがあります。

これはうまく機能しますが、フォームを送信するときに問題が発生し、その動的アップロード入力の$_FILE配列が存在しません。

これは、入力を交換するためのjavascriptコードです。

function SwapImageMode()
{
    if(imageMode == 0)
    {
        imageMode = 1;
        $("#f_imagearea").html("<input type='file' name='addon_imgupld' id='f_upimgimput' name='addon_imgupld' style='margin-bottom:7px;' accept='image/*' onchange='inputFileChange();'/>");
    }
    else if(imageMode == 1)
    {
        imageMode = 0;
        $("#f_imagearea").html("<input type='text' name='addon_imgurl' class='styled_imput f_imgimput' onFocus=imgUrlImputFocus(); onBlur=imgUrlImputBlur(); />");  
    }
}

フォーム送信時のPHPコード:

if(isset($_POST["addon_imgurl"]) && !isset($_POST["addon_imgupld"]))
{
    $formImgMethod = 1; // link
}
else if(isset($_POST["addon_imgupld"]) && !isset($_POST["addon_imgurl"]))
{
    $formImgMethod = 2; // upload
}

if($formImgMethod == 2)
{
    echo($_FILES["addon_imgupld"]["name"]);
}

そしてこれはphpのエラーです:

Notice: Undefined index: addon_imgupld in
C:\xampp\htdocs\addexp\agregar\index.php on line 49
4

1 に答える 1

1

エラーは非常に簡単です。存在しない配列キーにアクセスしようとしているため、さまざまな種類のフォーム送信を確認する必要があります。

PHPフォームハンドラーに単純な条件を記述するだけです。

if( !empty($_FILES["addon_imgupld"]) ){
  //file input
} elseif( !empty($_REQUEST["addon_imgurl"]) ) {
  //text input
} else {
  //error?
}

$ _REQUESTを、行われた要求のタイプ($ _POST、私は推測します...)と交換する必要があります。

アップデート::

この条件は間違っています:

else if(isset($_POST["addon_imgupld"]) && !isset($_POST["addon_imgurl"]))

する必要があります:

else if(isset($_FILES["addon_imgupld"]) && !isset($_POST["addon_imgurl"]))

更新2::

フォームのエンコードタイプをマルチパートに設定しましたか?そうでない場合は、この属性をフォームタグに追加します。

enctype="multipart/form-data"
于 2012-10-22T23:55:10.550 に答える