将多个HTML表单结果添加到mysql数据库

时间:2014-06-08 08:48:00

标签: javascript php html mysql

我有一个页面:

  1. 用户注册页面(存储在数据库中的所有数据)
  2. 他们使用用户名
  3. 登录

    当他们登录时,他们应该填写一个包含48个选择和5个输入字段的HTML表单。选择框如下面的示例所示。

    <td>Team 1</td> 
        <select class="combobox" id="m0">
           <option>Not chosen</option>
           <option>1</option>
           <option>X</option>
           <option>2</option>
        </select>
    <td>Team 2</td>
    
    <td>Team 3</td> 
        <select class="combobox" id="m1">
          <option>Not chosen</option>
          <option>1</option>
          <option>X</option>
          <option>2</option>
        </select>
    <td>Team 4</td>
    

    等。

    我今天所做的是当用户按下我调用的完成按钮时:

    onclick="getOptionValues()"
    

    我遍历所有选择并从输入字段中获取值,然后发送包含所有答案的邮件,但我想将所有这些数据保存到数据库中并将其连接到唯一的用户名,以便用户登录我可以填充之前选择的所有数据。我的数据库中有一个名为&#34;结果&#34;我已经为每个答案创建了列(现在有54列......),但是有更聪明的方法可以做到这一点,你如何在代码中将这些列插入数据库?所以我的问题是:

    1. 你如何以聪明的方式创建数据库,以便你可以添加48个复选框答案和5个输入字段(这是我的方式吗?)
    2. 我如何在代码中将它们添加到数据库中(是否可以进行循环?)?

2 个答案:

答案 0 :(得分:1)

实际上,您根本不需要JavaScript。

使用适当的<form> tags覆盖您的表单,确保正确添加method=action=属性。

提供所有输入,选择和textareas name=属性。如果您有重复和相关的输入,请将它们全部命名为somename[],它将在PHP中显示为可迭代数组。

从表单中删除JavaScript。你不需要它......但是(我们会到达那里)。

在PHP方面,请确保您的页面与表单的action=属性中的URL匹配,该页面接受表单的method=所指示的GET / POST请求。< / p>

在PHP中执行您想要的任何处理,包括验证,数据库操作和使用数据进行邮寄。您将在$_POST超全局中看到它。


您何时需要JavaScript?

  • 验证客户端的表单输入,以帮助用户。 这不应该是服务器端验证,而是另外!
  • 使用AJAX提交帖子而不离开页面。

答案 1 :(得分:0)

请原谅,因为我只是动态输入它但是如果您知道您的字段是静态的并且与数据库中的字段名称匹配,您可以使用类似于此的脚本动态构建MySQL查询:

<?PHP
if ($_POST) {
    $selections = array();
    for ($1 = 1; $i <= 48; $i++) {
        if (isset($_POST['m'.$i]) && !empty($_POST['m'.$i])) {
            $selections['m'.$i] = 1; // presumably "checked" so probably binary in the DB
        }
    }
    foreach ($selections as $key => $value) {
        $fieldNames  .= " ".$key.",";
        $fieldValues .= " '".$value."',";
    }
    if (isset($_POST['field1'] && !empty($_POST['field1'])) {
       $fieldNames  .= " field1,";
       $fieldValues .= " '".$_POST['field1']."',";
    }
    if (isset($_POST['field2'] && !empty($_POST['field2'])) {
       $fieldNames  .= " field2,";
       $fieldValues .= " '".$_POST['field2']."',";
    }
    if (isset($_POST['field3'] && !empty($_POST['field3'])) {
       $fieldNames  .= " field3,";
       $fieldValues .= " '".$_POST['field3']."',";
    }
    if (isset($_POST['field4'] && !empty($_POST['field4'])) {
       $fieldNames  .= " field4,";
       $fieldValues .= " '".$_POST['field4']."',";
    }
    if (isset($_POST['field5'] && !empty($_POST['field5'])) {
       $fieldNames  .= " field5,";
       $fieldValues .= " '".$_POST['field5']."',";
    }
    $fieldNames  = substr($fieldNames ,0,(strlen($fieldNames) -1)); // remove trailing commas
    $fieldValues = substr($fieldValues,0,(strlen($fieldValues)-1)); // remove trailing commas
    $query = "INSERT INTO table_name (";
    $query .= " ".$fieldNames." ";
    $query .= ") values (";
    $query .= " ".$fieldValues." ";
    $query .= ")";
    // Now you use your DB connection to execute the MySQL query.. 
    // Mind you, this changes a bit to be arrays if you're using PDO, but this can work.
}
?>