Как создать форму загрузки файла, которая создает больше полей формы на основе ввода с использованием php? - PullRequest
1 голос
/ 05 июня 2011

В моей таблице SQL есть десять столбцов: id, imgid, urlid, image1, image2, image3, image4, image5 и комментарий. Id, imgid и urlid имеют тип int. Изображение [1-5] относится к типу медиумблога. URL и комментарий являются текстовыми. Imgid - это количество загруженных изображений (макс. Должно быть 5), urlid - количество отправленных URL-адресов (должно быть одно прямо сейчас), URL-адрес содержит URL-адрес, а комментарий - комментарии пользователя.

Форма начинается с того, что пользователь спрашивает, сколько изображений он хочет загрузить (в моем сценарии максимальное количество - 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>

1 Ответ

1 голос
/ 05 июня 2011

$_FILES['${'.img.' . $i}']
Заменить на
$_FILES[${'img' . $i}]

Используйте IDE для редактирования скриптов, чтобы избежать таких глупых ошибок. Попробуйте NetBeans, PhpStorm.
И попробуйте прочитать о MVC .

...