簡體   English   中英

如何使用 php 創建基於輸入創建更多表單字段的文件上傳表單?

[英]How to create a file upload form that creates more form fields based on input using php?

我的 SQL 表中有十列:id、imgid、urlid、image1、image2、image3、image4、image5 和評論。 Id、imgid 和 urlid 是 int 類型。 圖像[1-5] 是中等大小的類型。 Url 和注釋是文本類型。 Imgid 是上傳的圖片數量(最大應該是 5 個),urlid 是提交的 url 數量(現在應該是一個),url 持有 url,comment 持有用戶評論。

該表單首先詢問用戶他想要上傳多少張圖片(我的腳本中的最大數量是 5)。 例如,如果用戶選擇 3,則也應使用新的提交按鈕創建 3 個文件上傳字段。 一個名為 $imgid 的變量將存儲數字 3,即用戶想要上傳的文件數。 然后用戶選擇 3 張圖像並單擊新創建的提交按鈕,將這三張圖像提交到 SQL 表中的前三個圖像列中。 我的問題是,當我單擊單擊第一個按鈕后出現的第二個提交按鈕時,出現此錯誤:

Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in dbpform2.php on line 75

這是我到目前為止所做的:

<html>
<body>

<form action="dbpform2.php" method="POST">
How many images do you want to upload?<br>
<input type="text" name="imgid"  /><br />
<input type="submit" name="submit" value="submit" />
</form>

<?php 
mysql_connect ("","","") or die(mysql_error());
mysql_select_db ("") or die(mysql_error());


$imgid = $_POST['imgid'];

if (isset($_POST['submit']))
{
    echo"<form action='dbpform2.php' method='POST' enctype='multipart/form-data'>
";

    if ($imgid >= 5)
    {
        for ($i=1; $i<= 5; $i++)
        {

        ${'img' . $i} = "img".$i;
        echo "<input type='file' name='${'img' . $i}'  /> <br />";

        }

        echo"
        <input type='hidden' name='imgid' value='$imgid' />
        <input type='submit' name='submit2' value='submit2' />
        </form>";
    }

    if ($imgid <= 5)
    {
        for ($i=1; $i<=$imgid; $i++)
        {

        ${'img' . $i} = "img".$i;
        echo "<input type='file' name='${'img' . $i}'  /> <br />";

        }
        echo"

        <input type='hidden' name='imgid' value='$imgid' />
        <input type='submit' name='submit2' value='submit2' />
        </form>";
    }
}

?>

<?php

$imgid = $_POST['imgid'];

for ($i=1; $i <= $imgid; $i++)
{

${'img' . $i} = "img".$i;
${'file' . $i}  = $_FILES['${'.img.' . $i}']['tmp_name'];

}

    if (isset($_POST['submit2']))
    {

        for ($i=1; $i<=$imgid; $i++)
        {
            ${'img' . $i} = "img".$i;
            ${'file' . $i} = addslashes(file_get_contents ($_FILES['${'.img.' . $i}']['tmp_name']));

        }

        mysql_query ("INSERT INTO dbp VALUES ('','$imgid','$urlid','$url', '$file1', '$file2','$file3','$file4','$file5','$comment')"); 

    }
?>



</body>
</html>

$_FILES['${'.img.'. $i}']
替換為
$_FILES[${'img'. $i}]

使用 IDE 編輯腳本,以避免此類愚蠢的錯誤。 試試 NetBeans,PhpStorm。
並嘗試閱讀有關MVC的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM