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

Javascript 将多个HTML表单结果添加到mysql数据库,javascript,php,html,mysql,Javascript,Php,Html,Mysql,我有一个页面,其中: 用户注册到页面(存储在数据库中的所有数据) 他们用自己的用户名登录 当他们登录后,他们应该用48个选项和5个输入字段填写HTML表单。选择框如下面的示例所示 <td>Team 1</td> <select class="combobox" id="m0"> <option>Not chosen</option> <option>1</option>

我有一个页面,其中:

  • 用户注册到页面(存储在数据库中的所有数据)
  • 他们用自己的用户名登录
  • 当他们登录后,他们应该用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>
    
    我循环所有选择并从输入字段中获取值,然后发送一封包含所有答案的邮件,但我想将所有这些数据保存到数据库中,并将其连接到唯一的用户名,这样当用户登录时,我就可以填充他们之前选择的所有数据。我的数据库中有一个名为“results”的表,我已经为每个答案创建了列(现在有54列…),但是有没有更聪明的方法来做到这一点?在代码中如何将这些插入数据库?所以我的问题是:

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

  • 事实上,你根本不需要JavaScript

    在表单周围添加适当的属性,确保正确添加
    method=
    action=
    属性

    给出所有输入、选择和文本区域
    name=
    属性。如果您有重复和相关的输入,请将它们全部命名为
    somename[]
    ,它将在PHP中显示为一个iterable数组

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

    在PHP端,确保您的页面与表单的
    action=
    属性中的URL匹配,该属性接受表单的
    方法=
    指定的GET/POST请求

    在PHP中执行您想要的任何处理,包括验证、数据库操作和数据邮寄。您将在
    $\u POST
    superglobal中看到它


    什么时候需要JavaScript

    • 在客户端验证表单输入,以帮助用户这不应该代替服务器端验证,而是另外
    • 使用AJAX提交文章而不离开页面

    请原谅,我刚刚在运行中输入了这个,但是如果您知道您的字段是静态的,并且与数据库中的字段名相匹配,您可以使用类似于以下内容的脚本动态构建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.
    }
    ?>
    

    这些不是复选框,而是选择。有一点不同。我认为你可以用json类型存储这个问题和答案,并且你可以用简单的方式访问它们。@AmirHabibzadeh什么?为什么?请正常提交表格。@SecondRikudo是的,我已经更新了问题
    
    <?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.
    }
    ?>