【问题标题】:Dynamic Form Submission to database动态表单提交到数据库
【发布时间】:2013-06-03 07:28:52
【问题描述】:

我有一个 HTML 表单,其中包含一些静态字段和一些使用 javascript 动态添加的字段。好像是这样的

<html>
<script type="text/javascript">

        window.onload = function()
        {
            var select = document.getElementById("select");
            var texts = document.getElementById("texts");
            select.onchange = function()
            {
                var val = select.options[select.selectedIndex].value;
                texts.innerHTML = "";
                for(i=0; i < val; i++)
                {
                    //texts.innerHTML += '<div><input type="text" name="t_' + i + '" value="select_' + i + '" /></div>';
                    texts.innerHTML += i + '<div><input type="text" name="t_' + i + '" /></div>';
                }
            }
        }

    </script>
<body>
    <form method="POST" action="connection.php">
Question:<br>
<textarea name="question" cols="35" rows="5"></textarea><br>
<select id="select" size="1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<div id="texts"></div>
<input type="submit" name="Submit" value="Submit" >
</form>
</body>
</html> 

当用户单击它时,它会添加一个文本框字段。数据如何存储到数据库中。请建议我知道用于执行此操作的资源是什么。提前谢谢

【问题讨论】:

  • 现在有什么问题?提交表单时connection.php中print_r($_POST)的结果是什么?

标签: php javascript json forms


【解决方案1】:

沙沙克早安

为了将表单的数据提交到数据库中,无论表单的 javascript 是什么,都应在您的情况下使用 POST 方法将数据传递给脚本“connection.php”。

此脚本应包含连接到数据库的方法,然后是验证数据的逻辑,最后如果验证成功,则数据库查询会将数据插入到数据库中。


您对 PHP 或任何其他服务器端脚本语言和数据库的理解程度如何? - 如果我知道您所知道的,我将能够为您提供更多信息。

【讨论】:

  • 我是 php 的新手,我有一个想法,我们不能将所有数据存储在 json 字符串中然后存储到数据库中吗?有可能吗?如果不是,在插入之前应该进行哪些验证数据库请给我建议。谢谢
  • 好的,您通过表单提交的数据将通过服务器上的 POST 请求发送。这些数据存储在 $_POST[] 全局变量中。在您的情况下,这将是两个变量,一个来自您的选择,一个来自您的输入。这些可以像 $var1 = $_POST['question']; $i = $_POST['t_1']; // 这是一个示例变量。验证与之后您想要检查的内容有关,例如 JS。我建议你阅读w3schools.com/php/default.asp
  • 我的想法是将详细信息存储在 json 字符串中,然后存储到数据库中,这是正确的想法吗?
  • MongoDB 可能会更容易让您使用,因为它存储这样的数据。
  • 假设有两个字段,一个是问题,另一个是选项,其中选项由下拉列表创建的动态文本框组成,在这种情况下它的 0 到 9。在我的数据库中,我只有三列 id,问题和选项。如果用户输入两个选项。数据如何存储在该单列中的数据库中。请建议我 Dimitris。
【解决方案2】:

我认为,与其给文本框命名格式为 t_1 , t_2 ,不如将其作为数组提供,如下所示

    <html>
   <script type="text/javascript">

    window.onload = function()
    {
        var select = document.getElementById("select");
        var texts = document.getElementById("texts");
        select.onchange = function()
        {
            var val = select.options[select.selectedIndex].value;
            texts.innerHTML = "";
            for(i=0; i < val; i++)
            {
                //texts.innerHTML += '<div><input type="text" name="t_' + i + '" value="select_' + i + '" /></div>';
                texts.innerHTML += i + '<div><input type="text" name="txt_name[]" /></div>';
            }
        }
    }

</script>
 <body>
 <form method="POST" action="connection.php">
  Question:<br>
     <textarea name="question" cols="35" rows="5"></textarea><br>
    <select id="select" size="1">
 <option value="1">1</option>
 <option value="2">2</option>
 <option value="3">3</option>
 <option value="4">4</option>
 <option value="5">5</option>
 <option value="6">6</option>
 <option value="7">7</option>
 <option value="8">8</option>
 <option value="9">9</option>
 </select>
<div id="texts"></div>
<input type="submit" name="Submit" value="Submit" >
 </form>
 </body>
 </html> 

【讨论】:

    【解决方案3】:

    PHP

    它将像这样发布数据: 假设您选择选项 2。

    $inputs = $_REQUEST['t']; // change the name like this name[]
    $textarea = $_REQUEST['textarea'];
    $selectbox = $_REQUEST['select']; // you should define the name of the select box as i used 'select'
    

    插入mysql

    $conn = mysql_connect('localhost', 'db user', 'db password');
    mysql_select_db('database name');
    
    for($i=0; i<count($inputs); $i++) {
        $sql = "insert into <table name> (textarea, inputs) values ($inputs[$i], $textarea)";
        mysql_query($sql);
    }
    

    它将根据您选择的输入文本框存储每一行​​。

    注意:根据您的要求修改查询。

    【讨论】:

    • 我在数据库中只定义一列,如何一次存储 2 个值?
    • 你可以通过对选择框的值使用for循环来做到这一点
    • 对不起@skparwal 我没明白你可以把它存储在 json 中吗?然后到数据库
    • 是的,你可以做到。您需要使用 encode_json() php 函数转换为 json。供参考网站:php.net/manual/en/function.json-encode.php
    • $spkarwal:在这种情况下,当用户单击提交按钮然后它连接到连接时,我无法编写 for 循环条件。 php我应该在哪里包含for循环请帮助我
    猜你喜欢
    • 1970-01-01
    • 2021-12-14
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    相关资源
    最近更新 更多