2015-05-04 2 views
2

Моя текущая форма включает в себя много строк (100), каждая из которых имеет несколько значений, которые пользователь может выбрать, и они нажимают кнопку submit для каждого. Я хотел бы вместо этого дать им возможность отправлять несколько строк за раз, используя флажок с одной кнопкой отправки.PHP как несколько строк формы с помощью флажков

Мой текущий код:

<tr> 
    <form id='form$y' action=".htmlspecialchars($_SERVER["PHP_SELF"])." method='post''/> 
    <input type='hidden' form='form$y' name='id' value='$id' /> 
    <td> 
     <input style='height:18px' form='form$y' type='date' name='date value='$date'/>                          
    </td> 
    <td>  
     <select name='status' form='form$y' required/> 
      <option>$status</option> 
      <option value='option1'>option1</option> 
      <option value='option2'>option2</option> 
     </select> 
    </td> 
    <td> 
     <input form='form$y' type='text' name='comment' value='$comment'/> 
    </td> 
    <td> 
     <input type='submit' value='Save' /> 
     </form> 
    </td>    
</tr>"; 

Как вы можете видеть, каждая строка является его собственная форма. Я полагаю, что я должен использовать только одну общую форму, если я использую флажки вместо отдельных сообщений? Куда я иду отсюда? Где принадлежит кнопка submit?

Я полагаю, я должен заменить submit колонку с чем-то вроде этого:

<td> 
    <input type='checkbox' name='check_list[]' value='value$y'> 
</td> 

Я был бы признателен, если кто-то может дать мне пример (на основе моего кода), как это должно работать. Я прочитал то, что уже существует на SO, но я не мог заставить ничего работать.

ответ

0

Используйте один вид -

HTML

<form method="post"> 
<tr> 
    <input type='hidden' name='id[]' value='$id' /> 
    <td><input type='checkbox' name='check_list[]' value='value$y'></td> 
    <td> 
     <input style='height:18px' ftype='date' name='date[]' value='$date'/>                          
    </td> 
    <td>  
     <select name='status[]' required/> 
      <option>$status</option> 
      <option value='option1'>option1</option> 
      <option value='option2'>option2</option> 
     </select> 
    </td> 
    <td> 
     <input type='text' name='comment[]' value='$comment'/> 
    </td> 
</tr> 
<tr>.......</tr> 
</form> 

PHP

if(!empty($_POST)) { 
    if(count($_POST['check_list']) > 0 && !empty($_POST['check_list'][0])) { 
     foreach($_POST['check_list'] as $key => $checked) { 
      $id = $_POST['id'][$key]; 
      // rest of the data and processings 
     } 
    } 
} 
+0

Спасибо, что делает работа, за исключением одной проблемы. У меня есть обязательная проверка на полях и потому что это вся одна форма, требующая информации для каждой строки. Раньше, поскольку каждая строка была собственной формой со своей собственной кнопкой отправки, проверка была необходима только при вводе данных для этой строки. – user2029890

+0

Вы должны изменить валидацию в этом случае. –

0

Держите кнопку Submit с формой

В PHP

if(!empty($_POST['check_list'])){ 
    // $_POST[check_list] will be an array with selected values only. 
    // Do whatever you want do with the $_POST[check_list] array. 
} 
Смежные вопросы