我正在尝试显示输入字段,具体取决于数据库中的输出。请分享任何想法或逻辑。我有超过25个领域。
page1.php中
我在表单中有姓名(文字类型),电子邮件(电子邮件类型),性别(广播),国家(选择下拉列表),地址(文本区域)。用户将从表单中单击复选框,然后单击“提交”,然后单击“提交”,然后选择的字段值将存储在数据库中。
使page2.php
这里我显示的是从Page1.php中选择的字段,但我还需要与数据库中的字段相关的输入类型。
例如:在page1中我选择姓名,电子邮件,国家并提交表单然后在第2页我必须显示输出<input type="text" name="Name">,<input type="text" name="Name">,<select></select>.
我需要知道我必须使用它的逻辑。任何人都可以帮我写剧本吗?
表单代码
<form action="" method="post">
<input type="checkbox" name="check-fields[]" value="Name">
<label>Name(Text type)</label>
<input type="checkbox" name="check-fields[]" value="Email">
<label>Email(Email type)</label>
<input type="checkbox" name="check-fields[]" value="Gender">
<label>Gender(Radio type)</label>
<input type="checkbox" name="check-fields[]" value="Select">
<label>Country(Drop down)</label>
<input type="checkbox" name="check-fields[]" value="textarea">
<label>Address(Textare)</label>
<input type="submit" name="submit" value="submit">
</form>
将值存储在数据库中
if (isset($_POST['submit'])) {
// prepare and bind
$a=$_POST['check-fields'];
$elements= implode(',',$a);
$sql_elements="INSERT INTO test (elements) VALUES (?)";
$stmt = $conn->prepare($sql_elements);
$stmt->bind_param("s", $elements);
$stmt->execute();
echo "New records created successfully";
$stmt->close();
$conn->close();
}
第2页
我正在输出但是如何设置输入字段?
$sql_fields="SELECT elements FROM test WHERE id=3";
if ($stmt = $conn->prepare($sql_fields)) {
$stmt->execute();
$stmt->bind_result($elements);
while ($stmt->fetch()) {
$arr=explode(",", $elements);
echo "<pre>";
print_r($arr);
echo "</pre>";
}
}
$stmt->close();
$conn->close();
?>
答案 0 :(得分:0)
如果我正确的话,您正尝试为不同的用户创建个性化表单,这意味着您将允许用户根据用户可以选择的字段选择生成表单。
您需要做的是创建一个名为“forminputtypes”的表,您可以在其中为您可以想到的每个不同输入字段创建一行,并希望将用户作为选择。你的桌子会像这样说:
Id | FieldName | Type | etc ->
-------------------------------
1 | Name | text | ...
2 | Email | email | ...
3 | Gender | radio | ...
您可以在表格中添加更多列来存储更多信息(考虑无线电输入或下拉列表中的可能值)。
现在在Page1.php中,您可以从此表中选择所有输入类型,并像您现在一样显示它们。但是,这些复选框的值将是数据库中记录的相应Id
值,如下所示:
<input type="checkbox" name="check-fields[]" value="3">
现在当有人选择性别字段时,您可以在Page2.php中看到用户通过将他的选择“3”与数据库中的记录相匹配来这样做。如果要保存此信息,可以创建另一个名为UserFormInputFields
的表,该表将用作用户表和FormInputTypes
表之间的几个表。
如果要在Page2.php中显示表单,只需从Id
表中的FormInputTypes
选择,即可获得用户选择的所有输入字段。由于您知道每个输入字段的类型(因为它是表中的列),因此您可以正确显示它们。
答案 1 :(得分:0)
如果你只想在核心PHP中这样做。只要把它放在html标签周围。如果值来自数据库那么你就显示特定的标签。您可以修改第2页代码,如。
<?php
$sql_fields="SELECT elements FROM test WHERE id=3";
if ($stmt = $conn->prepare($sql_fields)) {
$stmt->execute();
$stmt->bind_result($elements);
while ($stmt->fetch()) {
$arr=explode(",", $elements);
echo "<pre>";
print_r($arr);
echo "</pre>";
}
}
$stmt->close();
$conn->close();
?>
<form action="" method="post">
<?php if(in_array("Name",$arr)) { ?>
<input type="text" name="name" >
<label>Name</label>
<?php } ?>
<?php if(in_array("Email",$arr)) { ?>
<input type="email" name="email">
<label>Email</label>
<?php } ?>
<?php if(in_array("Gender",$arr)) { ?>
<input type="radio" name="gender" value="Male">
<input type="radio" name="geneer" value="Female">
<label>Gender(Radio type)</label>
<?php } ?>
//.............write other fiels like this.
<input type="submit" name="submit" value="submit">
</form>
我希望这会有所帮助。