我正在尝试创建一个表单构建器,使用户能够生成调查表单/页面。
生成表单后,表单属性将存储在表中。
问题1:我可以在哪里存储表单属性,完全知道用户可能在表单中添加的字段数是未知的。
问题2:例如,当某人完成调查表单时,我将在哪里以及如何存储通过生成的表单提交的数据。
我应该为每个表单属性动态创建新表吗?如果是,如果创建了超过一百万个形式,这意味着一百万个表,该怎么办。
这就是多租户发挥作用的地方吗?
请根据最佳实践提供答案。
我想我明白你的要求,但为什么不创建一个包含 100 列的表,标记为 1-100。设置用户可以创建的字段数量限制(限制 100)。然后,发布字段并添加 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
}
}
?>