2012-06-22 76 views
0

我有一个表单,其中单击添加更多按钮时出现新的字段。我如何将它们存储到php变量中,然后放入mysql数据库中。 我有PHP和MySQL的工作知识。 我的HTML和JavaScript代码如下:在阵列如何为动态生成的输入字段添加记录

$_POST

<script type="text/javascript"> 
    function($) { 

$.fn.relCopy = function(options) { 
    var settings = jQuery.extend({ 
     excludeSelector: ".exclude", 
     emptySelector: ".empty", 
     copyClass: "copy", 
     append: '', 
     clearInputs: true, 
     limit: 0 // 0 = unlimited 
    }, options); 

    settings.limit = parseInt(settings.limit); 

    // loop each element 
    this.each(function() { 

     // set click action 
     $(this).click(function(){ 
      var rel = $(this).attr('rel'); // rel in jquery selector format    
      var counter = $(rel).length; 

      // stop limit 
      if (settings.limit != 0 && counter >= settings.limit){ 
       return false; 
      }; 

      var master = $(rel+":first"); 
      var parent = $(master).parent();       
      var clone = $(master).clone(true).addClass(settings.copyClass+counter).append(settings.append); 

      //Remove Elements with excludeSelector 
      if (settings.excludeSelector){ 
       $(clone).find(settings.excludeSelector).remove(); 
      }; 

      //Empty Elements with emptySelector 
      if (settings.emptySelector){ 
       $(clone).find(settings.emptySelector).empty(); 
      };        

      // Increment Clone IDs 
      if ($(clone).attr('id')){ 
       var newid = $(clone).attr('id') + (counter +1); 
       $(clone).attr('id', newid); 
      }; 

      // Increment Clone Children IDs 
      $(clone).find('[id]').each(function(){ 
       var newid = $(this).attr('id') + (counter +1); 
       $(this).attr('id', newid); 
      }); 

      //Clear Inputs/Textarea 
      if (settings.clearInputs){ 
       $(clone).find(':input').each(function(){ 
        var type = $(this).attr('type'); 
        switch(type) 
        { 
         case "button": 
          break; 
         case "reset": 
          break; 
         case "submit": 
          break; 
         case "checkbox": 
          $(this).attr('checked', ''); 
          break; 
         default: 
          $(this).val(""); 
        }      
       });     
      }; 

      $(parent).find(rel+':last').after(clone); 

      return false; 

     }); // end click action 

    }); //end each loop 

    return this; // return to jQuery 
}; 

    })(jQuery); 

    </script> 

    <script type="text/javascript"> 
    $(function(){ 
    var removeLink = ' <a class="remove" href="#" onclick="$(this).parent().slideUp(function(){ $(this).remove() }); 
return false">remove</a>'; 
$('a.add').relCopy({ append: removeLink}); 
}); 
    </script> 
    <style type="text/css"> 
    body{ font-family:Arial, Helvetica, sans-serif; font-size:13px; } 
    .remove {color:#cc0000} 
    .input{ border: solid 1px #006699; padding:3px} 

    </style> 
    </head> 

    <body> 
    <form method="post" action=""> 
    <table width="580" border="1" class="clone" rules="groups" align="center"> 
    <tr> 
    <td width="129" height="29" align="right"><strong>Child Name :</strong></td> 
    <td width="435"><input name="petname[]" type="text" class="txt_box" id="petname" /> 
    </td> 
    </tr> 
    <tr> 
    <td align="right" height="29"><strong>Pet Image :</strong></td> 
    <td><input name="petimage[]" type="file" class="txt_box" id="petimage" /></td> 
    </tr> 

    </table> 
    <p style=" margin-left:60px;"><a href="#" class="add" rel=".clone">Add More</a></p> 
    </form> 
    </body> 
    </html> 
+0

你尝试过这么远吗?顺便说一句。这可能会变得相当复杂(我曾经沿着这些线写过),所以确保你有一个坚实的数据库(确保你的ERD是正确的等) – Bono

+0

@Bono DB没有问题,我只是想知道如何让他们在PHP中,即以数组的形式,或者如果有别的东西。 – user995426

回答

0

一旦表单被提交,你可以使用get发布数据的值。

然后,您将需要迭代要插入到数据库中的数组。

一个例子:

<?php 
    $con = mysql_connect("localhost","username","password"); 
    if (!$con) 
     { 
     die('Could not connect: ' . mysql_error()); 
     } 

    mysql_select_db("my_db", $con); 

    mysql_query("INSERT INTO tablename(FirstName, LastName, Age) 
    VALUES ('test', 'name',25)"); 
    mysql_close($con); 
?> 
+0

我知道$ _POST是一个数组,我想知道如何从输入字段获取值并添加到数据库中 – user995426

+0

只需打印$ _POST数组并检查结果。 如果动态生成的输入字段本身是一组输入字段,也就是它本身是一个数组,那么您可以使用$ _POST ['values']获取值,然后使用上面的语句 – Vimalnath

+0

@vimalnath插入数据库,然后$ _post变成数组阵列,请您指出这种情况来描述答案.. – harry