如何将表单构建器中的数据存储在数据库中

时间:2016-02-06 20:27:29

标签: php html database forms

我正在尝试创建一个表单构建器,使用户能够生成调查表单/页面。

生成表单后,表单属性存储在表格中。

问题1: 我在哪里可以存储表单属性,完全知道用户可能在表单中添加的字段数是未知的。

问题2: 当某些人通过例如完成调查表格时,我在何处以及如何存储通过生成的表单提交的数据。

我应该为每个表单属性动态创建新表吗?如果是的话,如果创建了超过一百万的格式,那就转化为一百万个表格。

这是多租户发挥作用的地方。

请根据最佳做法提供答案。

1 个答案:

答案 0 :(得分:0)

我想我得到了你要问的内容,但为什么不创建一个包含100列的表,标记为1-100。设置用户可以创建的字段数量限制(限制100)。 然后,POST字段并添加一个sql查询来存储值...?

评论回答 如果用户已经登录填写此表单,我将亲自在同一页面上执行POST请求。

<?php if (isset($_POST['field1'])){

    $valueforField1 = $_POST['field1'];
    $valueforField2 = $_POST['field2'];
    $valueforField3 = $_POST['field3'];
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 

    $sql = "INSERT INTO Survey (field1, field2, field3) // I guess you would `have to add 100 fields here to accommodate the fields in your DB Also, you can set a default value in MySQL that way if field 56-100 is not set it has a value like 0 or add the value in this php file` 
    VALUES ('$valueforField1', '$valueforField2', '$valueforField3')";

    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close(); ?>

评论答案或者如果您想等待用户登录,您可以将所有值存储在SESSION变量中。

<?php
session_start();
if (isset($_POST['field1'];)){
if (!(isset($_SESSION['email']))){
$_SESSION['field1'] = $_POST['field1'];
// You would have to do 100 of these
}
}
?>