0

应该是图片的多重上传表单

我得到了上传表单的 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> 

upload.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

您的问题之一是existAlbum没有与之关联的实际值。

您有<option>Select Album</option>which 没有与 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';

需要注意的重要一点是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

尝试是否设置了值 existsAlbum,因为如果您没有选择任何内容,它不会返回任何值。你可以给 existsAlbum 选择器一个 default='1' 或其他东西:

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

我认为规则 enctype="multipart/form-data" 有问题。尝试删除它,它应该由您的浏览器自动设置。

于 2012-11-28T15:46:29.513 回答
0

您对选项选择专辑没有任何价值,即使您不打算使用该选项,也可以给它一个值,例如 0,以便始终在 POST 变量中设置它。

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

print_r($_POST);使用确保您的表单操作正确打印 $_POST 数组

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