2013-03-22 2 views
1

Я пытаюсь отправить две формы: одну с enctype="multipart/form-data" для загрузки файлов, а другую без. моя проблема только в одном из них работает. кнопка отправки не отправит две формы.несколько форм в html с enctype = "multipart/form-data"

Что я пробовал:

<?php 
echo '<form method="post" action="' . $PHP_SELF . '">'; 

.... 

echo '<input type="submit" name="submit" value="Submit"><br>'; 
echo "</form>"; 

echo '<form action="' . $PHP_SELF . '" method="post" enctype="multipart/form-data"> 
     <label for="file">Filename:</label> 
     <input type="file" name="file" id="file"><br> 
     <input type="submit" name="submit" value="Submit"></form>'; 

if (isset($_FILES["file"]["name"])){ 
    $file_name = $_FILES['file']['name']; 

    if ($_FILES["file"]["error"] > 0) { 
     echo "Error: " . $_FILES["file"]["error"] . "<br>"; 
    } else { 
     echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
     echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
     echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
     echo "Stored in: " . $_FILES["file"]["tmp_name"]; 
     move_uploaded_file($_FILES['file']['tmp_name'], '../images/' . $file_name); 
    } 
} 
?> 
+0

Вы хотите представить две формы за один раз? –

+0

вы не можете отправить форму сразу, единственное решение - отправить всю информацию в одной форме, а затем обработать ее в php –

ответ

4

Вот как это работает в HTML. Вы можете отправлять только одну форму за раз. Единственным обходным решением является отправка всех ваших данных только одной формой.

+0

, но другие поля из первой формы пустые, я думаю, из-за «enctype =» multipart/form-data "' и без 'enctype =" multipart/form-data "' файл не будет загружен – teslasimus

+0

Он не имеет ничего общего с 'enctype =" multipart/form-data "', он полностью связан с двумя отдельными формы. – Quentin

+1

@teslasimus: Вы ошибаетесь. Прочтите ответ еще раз: вы можете отправить только одну форму. Enctype НЕ ВМЕШАЕТ здесь. На сервер будут отправляться только поля из одной формы. Вам нужно будет переместить поля из формы A в форму B. Извините, я не могу написать это более ясно. – fdreger

1

Просто попробуйте с нижеследующим:

<?php 
echo '<form method="post" action="' . $PHP_SELF . '">'; 

.... 

echo '<input type="submit" name="Submit_Button_One" value="Submit"><br>'; 
echo '</form>'; 

echo '<form action="' . $PHP_SELF . '" method="post" enctype="multipart/form-data"> 
     <label for="file">Filename:</label> 
     <input type="file" name="file" id="file"><br> 
     <input type="submit" name="Submit_Button_Two" value="Submit"></form>'; 

/*First Form Submit*/ 

if(isset($_POST['Submit_Button_One'])) 
{ 
$dataValue = $_POST['data'];  
} 

/*Second Form Submit*/ 

if(isset($_POST['Submit_Button_Two'])) 
{ 
    if(isset($_FILES["file"]["name"])){ 

    $file_name = $_FILES['file']['name']; 

    if($_FILES["file"]["error"] > 0) { 
     echo "Error: " . $_FILES["file"]["error"] . "<br>"; 
    } else { 
     echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
     echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
     echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
     echo "Stored in: " . $_FILES["file"]["tmp_name"]; 
     move_uploaded_file($_FILES['file']['tmp_name'], '../images/' . $file_name); 
    } 
    } 
} 

?> 

Я думаю, что это может помочь вам решить вашу проблему.

Примечание: Дайте другое название для кнопок отправки. Затем вы можете получить данные, как вы пожелаете, из обеих форм.

Смежные вопросы