0

我有一个带有选择下拉字段的表单。使用 jQuery,我允许用户通过克隆功能添加更多选择下拉菜单。但是,由于这种动态上下文,我如何正确编码通过 PHP 保存表单的逻辑?

HTML

<form action="process.php" method="post">
     <div class="row">
          <select name="items">
               <option value="box1">Box 1</option>
               <option value="box2">Box 2</option>
          </select>
          <input type="text" name="text" value="" />
     </div>
     <input type="submit" name="submit" value="submit" />
</form>
<a href="#" class="add">ADD</a>

JS

$( 'a.add' ).click( function() {
     var clone = $( 'form .row:first-child' ).clone( true );
     $( clone ).appendTo( 'form' );
} );

PHP

if ( isset( $_POST ) && $_POST['submit'] === 'submit' ) {
     $items = mysql_real_escape_string( $_POST['items'] );
     $text = mysql_real_escape_string( $_POST['text'] );

     if ( isset( $items ) )
          // do save db routine

     if ( isset( $text ) )
         // do save db routine
}

因此,如果您查看上面的 PHP 代码,它适用于在添加任何动态项之前的正常形式,并且工作正常……但是如果添加了动态元素,我只是不知道如何去改变它。

请注意,每个选择和输入必须属于一起。

感谢您的关注。

4

1 回答 1

0

好的,我解决这个问题的方法是使用数组作为字段名称,例如从上面的代码中。

<form action="process.php" method="post">
     <div class="row">
          <select name="items[]">
               <option value="box1">Box 1</option>
               <option value="box2">Box 2</option>
          </select>
          <input type="text" name="text[]" value="" />
     </div>
     <input type="submit" name="submit" value="submit" />
</form>
<a href="#" class="add">ADD</a>

因此,当 jQuery 克隆它时,这会解决重复的字段名称。在 PHP 中,我会计算其中一个字段提交了多少项目,并将其用作循环遍历表单项目的基础。

// get all data from db here
$count = count( $items );

for ( $i = 0; $i < $count; $i++ ) {
 // loop through form items here
}
于 2013-04-12T15:54:27.073 回答