Создание поля скриптом, неотсылаются данные

N1k0laj_BY

Новичок
Создание поля скриптом, неотсылаются данные

Возникла следующая проблема:
JavaScript-ом создаю дополнительные поля для загрузки файлов.
PHP:
<script language=JavaScript><!--
    
var i=2;
function img_add()
{
    document.getElementById('new').innerHTML +='<br>'+i+'.<input name="fr'+i+'" type="file">';
    document.getElementById('nums').value=i;
    i++;
}
//--></SCRIPT>
HTML форма
PHP:
<form enctype="multipart/form-data" action="index.php" method="POST">
   <a href="#" onclick="img_add();">Еще</a>
   1.<input name="fr1" type="file">
   <div id='new'>
   </div>  <input type="submit" name="save" value="Создать"> 
  <INPUT type="hidden" name="num" id="nums" value="1">
  </form>
Скрипт index.php
PHP:
           $num = $_POST['num'];
    for ($i=1; $i<=$num;$i++)
    {
        $name = 'fr'.$i;
        move_uploaded_file($_FILES[$name]['tmp_name'], $img_path.$name.'.jpg');
    }
Проблема в том что созданные индексы(имена полей) неопределенны Undefined index: fr2.
 

Фанат

oncle terrible
Команда форума
ну, для начала, непонятно, нафига вообще извращаться с полем num

для тех, кто не в курсе, $_FILES - это массив.
для работы с массивами в пхп есть замечательные операторы
 

N1k0laj_BY

Новичок
Спорить не буду что конечно $_FILES удобней разбираться специальными фунциями для работы с массивами, дело не в этом. ПО началу работал с циклом foreach, но неполучлось реализовать, цикл то правильный, но данные не поступают.
После этого сделал как в данном случаи для проверки, но тоже не получилось.
Проблема в том что если <form enctype="multipart/form-data" action="test.php" method="POST"> </form>располагается внутри таблицы, то скрипт не работает.
Если вынести <form enctype="multipart/form-data" action="test.php" method="POST"> перед началом таблицы, то работает. В чем проблема?
Пример рабочего кода:
PHP:
<script language=JavaScript><!--
	
var i=2;
function img_add()
{
	document.getElementById('new').innerHTML +='<br>'+i+'.<input name="fr'+i+'" type="file">';
	i++;
}
//--></SCRIPT>

<form enctype="multipart/form-data" action="test.php" method="POST">

<table>
  <tr>
    <td>
      <a href="#" onclick="img_add();">Еще</a>
    </td>
    <td>
     1.<input name="fr1" type="file">
     <div id='new'></div> 
    </td>
    <td><input type="submit" name="save" value="Создать"> </td>
 </tr>
</form>

</table>
<!--#END_DOWN-->
Не рабочий код
PHP:
<script language=JavaScript><!--	
var i=2;
function img_add()
{
	document.getElementById('new').innerHTML +='<br>'+i+'.<input name="fr'+i+'" type="file">';
	i++;
}
//--></SCRIPT>
<table>
  <tr>

<form enctype="multipart/form-data" action="test.php" method="POST">

    <td>
      <a href="#" onclick="img_add();">Еще</a>
    </td>
    <td>
     1.<input name="fr1" type="file">
     <div id='new'></div> 
    </td>
    <td><input type="submit" name="save" value="Создать"> </td>
 </tr>
</form>

</table>
<!--#END_DOWN-->
Проблема только в FF.
Решено, проблема в верстке. Пришлось вставить дополнительную таблицу.
PHP:
<table>
<tr>
  <td>
     <form enctype="multipart/form-data" action="test.php" method="POST">
     <TABLE>
       <tr>
          <td>
           <a href="#" onclick="img_add();">Еще</a>
          </td>
          <td>
            1.<input name="fr1" type="file">
            <INPUT type="text" name="g2" value="ds">
             <div id='new'></div> 
          </td>
         <td>
             <input type="submit" name="save" value="Создать"> 
         </td> 
     </form> 
     </tr> 
   </TABLE>
   </td>
 </tr>
</table>
 
Сверху