如何根据数据库中的输出显示输入字段

时间:2017-09-15 11:08:33

标签: javascript php jquery html forms

我正在尝试显示输入字段,具体取决于数据库中的输出。请分享任何想法或逻辑。我有超过25个领域。

page1.php中

我在表单中有姓名(文字类型),电子邮件(电子邮件类型),性别(广播),国家(选择下拉列表),地址(文本区域)。用户将从表单中单击复选框,然后单击“提交”,然后单击“提交”,然后选择的字段值将存储在数据库中。

表单页面 enter image description here

使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();
?>

2 个答案:

答案 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>

我希望这会有所帮助。