如何使用动态文本字段在我的数据库中插入多个文本框值

时间:2014-03-19 10:20:16

标签: javascript php

我使用动态文本框构建表单,如果单击按钮"添加",它会显示一个新文本框,我使用php和javascript。

但我可以将第一个文本框中的值添加到我的数据库中。

如何在数据库中插入多个值?

<html>
   <head>
      <title></title>
   </head>
   <body>
      <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
      <script type="text/javascript"><!--
         $(document).ready(function(){

         var counter = 2;
         $("#add").click(function () {
         if(counter==11){
             alert("Too many boxes");
             return false;
         }   
             $("#textBoxes").append("<div id='d"+counter+"' ><label for='t2'> Textbox "+counter+"</label><input     type='textbox' id='t"+counter+"' > </div>\n");
             ++counter;
         });

         $("#remove").click(function () {
         if(counter==1){
             alert("No boxes");
             return false;
         }   
             --counter;
             $("#d"+counter).remove();
         });
         });
         // --></script>
      </head>
      <body>


            <form method="POST">
        <div id='textBoxes'>
            <label for="t1"> Textbox 1</label>
            <input name="nome" type='textbox' id='t1' ></div>
         </div>

         <input type='button' value='add' id='add'>
         <input type='button' value='remove' id='remove'>
         <input type='submit' name="adicionar" value='adicionar'>
         </form>
         <?php
            $dbHost = 'localhost';
                       $dbUsername = 'hr';
                       $dbPassword = '';
                       $dbDatabase = 'r_inserir';

                       $db = mysql_connect($dbHost, $dbUsername, $dbPassword) or die ("Unable to connect to Database Server.");
                       mysql_select_db ($dbDatabase, $db) or die ("Could not select database.");

            if(isSet($_POST['adicionar']))
            {

            $nome=mysql_real_escape_string($_POST['nome']);

            $sql=  mysql_query("INSERT INTO registos(nome) values ('".$nome."')");
            }
            ?>
   </body>
</html>

3 个答案:

答案 0 :(得分:1)

在html中创建如下名称:

<input name="nome[]" type='textbox' id='t1' ></div>

然后在你javascript:

$("#textBoxes").append("<div id='d"+counter+"' ><label for='t2'> Textbox "+counter+"</label><input name='nome[]' type='textbox' id='t"+counter+"' > </div>\n");

这些代码将数组数据返回到您的php文件中。然后将其插入您的数据库。

if(isset($_POST['adicionar']))
        {

        //$nome=mysql_real_escape_string($_POST['nome']);
        foreach($_POST['nome'] as $nome){
              mysql_query("INSERT INTO registos(nome) values ('".mysql_real_escape_string($nome)."')");
        }

        //$sql=  mysql_query("INSERT INTO registos(nome) values ('".$nome."')");
        }

重要:

自PHP 5.5.0起,此扩展程序已弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。

答案 1 :(得分:0)

首先,你必须为输入字段和id提供动态名称,然后循环遍历从post获取的所有输入值,然后保存它。

e.g:

<input type='textbox' id='t"+counter+"' name='name"+counter+"' >

然后使用$ _POST ['name'],$ _POST ['name1']等将它存储在数据库中。

答案 2 :(得分:0)

不是最佳解决方案,但您可以让表单将文本字段作为数组发送:

<input type="text" name="nome[]" ... />

然后您可以使用以下方法在PHP中访问此数组:

<?php
    $_POST['nome'] //array containing all the values
?>

最后,您可以将此数组序列化存储在数据库中。看看http://www.php.net/manual/en/function.serialize.php

<?php
//when you store the data
$nome=mysql_real_escape_string( serialize ($_POST['nome']) );
//....

//when you retrieve the data
$nomes = unserialize($row['nome']); //(for example, returns array with all names)
?>

重要:使用序列化内容时,您可能会将MySQL字段类型更改为TEXT而不是VARCHAR,因为它可能是一个非常长的字符串。

附录:您还应该使用 mysqli 而不是 mysql