将多个记录保存到具有多个表行的数据库中

时间:2014-02-15 13:54:37

标签: php jquery html

我有一个行数未知的表,你可以添加行和删除行和 当我使用带有php的javascript添加多行时,如何将所有表行数据保存到数据库中。

以下是表格行的示例: HTML:

<form action="#" method="post" id="myForm">   
    <div class="row clearfix">
    <div class="col-md-12 column">
      <table class="table table-bordered table-hover" id="tab_logic">
        <thead>
          <tr >
            <th class="text-center">
              #
            </th>
            <th class="text-center">
              First Name
            </th>
            <th class="text-center">
              Last Name
            </th>                                               
          </tr>
        </thead>
        <tbody>
          <tr id='addr0'>
            <td>1</td>
              <td><input type="text" name='fn'  placeholder='First Name' tabindex="1" /></td>
              <td><input type="text" name='ln' placeholder='Last Name' tabindex="2"/></td>
          </tr>
          <tr id='addr1'></tr>
        </tbody>
      </table>
    </div>
  </div>
    <input type="button" id="add_row" class="pull-left" value="add row"/><input type="button" id='delete_row' class="pull-right" value="delete row"/><br/>
    <input type="submit" class="btn" value="Submit" tabindex="5" name="addName" id="sub"/>
  </form>

这是添加和删除行的代码 JQUERY:

$(document).ready(function(){
var i=1;
$("#add_row").click(function(){
$('#addr'+i).html("<td>"+ (i+1) +"</td><td><input name='fn' type='text' placeholder='First Name"+i+"' class='form-control'></td><td><input  name='ln' type='text' placeholder='Last Name"+i+"'  class='form-control input-md'></td>");

$('#tab_logic').append('<tr id="addr'+(i+1)+'"></tr>');
  i++; 
});
  $("#delete_row").click(function(){
  f(i>1){
   $("#addr"+(i-1)).html('');
     i--;
  }
});
});

PHP:

if(isset($_POST['addName'])){
    $userid = $database->getUserID();
    if(isset($_POST['fn']) && isset($_POST['ln'])){
        $firstname = $_POST['fn'];
        $lastname = $_POST['fn'];
        if(empty($_POST['fn'])){
            $session->Error() = '*'
        } else if(empty($_POST['ln'])){
            $session->Error() = '*'
        } else {
            $database->AddUser = ('$userid', '$firstname', '$lastname');
        }
    }       
}

JSFIDDLE

1 个答案:

答案 0 :(得分:1)

你走在正确的轨道上。要将数组作为POST数据发送,您需要将[]添加到元素名称。由于您还试图保持数组键匹配(名字和姓氏),因此您需要将i放在数组名称中。然后在PHP中使用foreach()循环数组。

所以而不是

name='fn' and name='ln'

使用

name='fn["+i+"]' and name='ln["+i+"]'

在PHP中:

if(isset($_POST['addName'])){
$userid = $database->getUserID();    
if(isset($_POST['fn']) && isset($_POST['ln'])){
        foreach ($_POST['fn'] AS $key=>$firstname){
            $lastname = $_POST['ln'][$key];
            if(empty($firstname)){
                $session->Error() = '*'
            } else if(empty($lastname)){
                $session->Error() = '*'
            } else {
                $database->AddUser = ('$userid', '$firstname', '$lastname');
            }
        }
    }      
}

了解如何使用fnforeach()数组上循环,然后将数组值与$key匹配?如果此代码不起作用,请确保您的表单正在使用print_r($_POST)正确发布数据,您应该看到两个数组,一个用于fn,另一个用于ln,且数组键匹配。< / p>