0

写真の複数アップロードフォームである必要があります

Upload-Form の HTML コードを取得します。

<form action="upload.php" method="post" id="uploadform" name="uploadform" enctype="multipart/form-data">  
        <label id="filelabel" for="fileselect">Choose the Pictures</label>
        <input type="file" id="fileselect" class="fileuplaod" name="uploads[]" multiple />
        <span class="text">Exist Album</span><br />
        <select id="existAlbum" name="existAlbum" size="1">
            <option value="noAlbum">SELECT ALBUM</option>       
        </select>
        <span class="text">OR</span>
        <span class="text">New Album</span><br />
        <input id="newAlbum" name="newAlbum" type="text" maxlength="20" placeholder="ALBUM NAME"/>
        <input type="submit">
    </form> 

Uploaded.php へのフォーム リンク。しかし、私は得る:

Notice: Undefined index: existAlbum in E:\xampp\htdocs\fotokurs\upload\upload.php on line 11

Notice: Undefined index: newAlbum in E:\xampp\htdocs\fotokurs\upload\upload.php on line 12

これがupload.phpです:

<?PHP  
$allowedExtensions = array('png', 'jpg', 'jpeg'); 

$maxSize = 20971520;  

$i = 0;  

$first = 0;

$exist_album = $_POST['existAlbum']; 
$new_album = $_POST['newAlbum'];

私のせいはどこですか?見つからない...

編集 私のコードに以下を追加します:

if( isset( $_POST['existAlbum'] ) or isset( $_POST['newAlbum'] ) ){
    $exist_album = $_POST['existAlbum']; 
    $new_album = $_POST['newAlbum'];
}else{
    echo 'no album <br />';
}
print_r($_POST);

新しい出力:

no album 
Array ( ) 
Notice: Undefined variable: new_album in E:\xampp\htdocs\fotokurs\upload\upload.php on line 20

Notice: Undefined variable: exist_album in E:\xampp\htdocs\fotokurs\upload\upload.php on line 21

Notice: Undefined variable: new_album in E:\xampp\htdocs\fotokurs\upload\upload.php on line 22

Notice: Undefined variable: exist_album in E:\xampp\htdocs\fotokurs\upload\upload.php on line 23
4

5 に答える 5

2

問題の 1 つは、existAlbum実際の値が関連付けられていないことです。

<option>Select Album</option>オプション要素に関連付けられた値がないものがあります。値が関連付けられていない場合、select 要素はサーバーにポストされません。次のように変更する必要があります。

<option value="">Select Album</option>

編集

ユーザーはどちらかを指定するだけでよいため、次のように変数を設定する必要があります。

$existsAlbum = (isset($_POST['existAlbum']) && !empty($_POST['existAlbum'])) ? $_POST['existAlbum'] : 'defaultValue';
$newAlbum = (isset($_POST['newAlbum']) && !empty($_POST['newAlbum'])) ? $_POST['newAlbum'] : 'defaultValue';

注意すべき重要な点の 1 つは、Internet Explorer がプレースホルダー属性をサポートしていないことです

編集2

test.php が動作する簡単なテスト ページを次に示します。

  <form action="upload.php" method="post" id="uploadform" name="uploadform" enctype="multipart/form-data">  
    <label id="filelabel" for="fileselect">Choose the Pictures</label>
    <input type="file" id="fileselect" class="fileuplaod" name="uploads[]" multiple />
    <span class="text">Exist Album</span><br />
    <select id="existAlbum" name="existAlbum" size="1">
      <option value="noAlbum">SELECT ALBUM</option>       
    </select>
    <span class="text">OR</span>
    <span class="text">New Album</span><br />
    <input id="newAlbum" name="newAlbum" type="text" maxlength="20" placeholder="ALBUM NAME"/>
    <input type="submit" value="Submit">
  </form> 

アップロード.php

    <pre>
<?php print_r($_POST); ?>
<?php print_r($_FILES); ?>
    </pre>

結果

Array
(
    [existAlbum] => noAlbum
    [newAlbum] => 
)
Array
(
    [uploads] => Array
        (
            //Contents here
        )
)
于 2012-11-28T15:48:15.957 に答える
0

select が選択されていない場合、まったく取得されません (空であると予想されますが、そうではありません)。最初に確認する必要があります

$exist_album = isset($_POST['existAlbum']) ? $_POST['existAlbum'] : '<DEFAULT VALUE>';

チェックボックスも同じです。

newAlbumテキスト入力は常にそこにあるので、これは機能するはずです。見る

print_r($_POST);

実際に何が入っているかを確認するには、私の場合は-「空の」送信で次のようになります。

Array
(
    [existAlbum] => SELECT ALBUM
    [newAlbum] => 
)

ところで:<?phpではなく使用する必要があります<?PHP

于 2012-11-28T15:44:57.467 に答える
0

オプションを使用するつもりがない場合でも、アルバムを選択するオプションには値がありません。0 などの値を指定すると、常に POST 変数に設定されます。

<option value="0">SELECT ALBUM</option>
<option value="some album">Some Album</option>
...
于 2012-11-28T15:50:51.157 に答える
0

何も選択されていない場合は値が返されないため、existAlbum の値が設定されているかどうかを試してください。existAlbum ピッカーに default='1' などを指定できます。

 if isset($_POST['existAlbum']){
        echo 'yes';
 }
 else{
      echo 'no';
 }

enctype="multipart/form-data" というルールに何か問題があると思います。これを削除してみてください。ブラウザによって自動的に設定されます。

于 2012-11-28T15:46:29.513 に答える
0

print $_POST Array usingprint_r($_POST);フォームのアクションが正しいことを確認してください

<form action="upload.php" method="post" id="uploadform" name="uploadform" enctype="multipart/form-data">
于 2012-11-28T15:51:59.307 に答える