如果mysql中存在记录,如何构造php代码以填充表单中的280个字段
Posted
技术标签:
【中文标题】如果mysql中存在记录,如何构造php代码以填充表单中的280个字段【英文标题】:How to structure php code to populate 280 fields in a form if a record exists in mysql 【发布时间】:2018-01-12 20:58:34 【问题描述】:我有一个包含大约 280 个文本、收音机和选择下拉字段的 html 表单。我必须捕捉很多关于人们支出的信息。例如。他们的天然气和电力供应商是谁,他们支付了多少,费率,他们的银行账户,贷款账户,宽带等。字段列表听起来很庞大,但它以选项卡的形式排列,并不太压倒,人们不会反正不用全部填写。
我向新用户展示空白表单,然后在第一次提交时将每个字段值(无论是否为空白)发布到 mysql dbase。 问题是..我如何检索所有这些数据并在下次将其放入表单中?我无法使用优雅的解决方案,所以我想我会通过检索到的每个数据库记录执行一个 foreach 循环并将其保存到一个变量中,但是我必须使用语句将 280 个字段值插入到字段中每个字段的 value="xxx",例如:
<div class="form-group row">
<label for="loan1name" class="col-lg-5 control-label text-right">Loan Name</label>
<div class="col-lg-3">
<input type="text" class="form-control" name="loan1name" placeholder="Car loan" value=<?php echo htmlspecialchars($loan1name) ?>>
</div>
</div>
如果我有 10 个字段,那没关系,但是 280 是无法管理的。还有其他方法吗?我需要以完全不同的方式解决这个问题吗?复制表单并将一个用于执行 INSERT 的空白表单,然后将另一个用于 UPDATE 查询的预填充版本是否有意义?任何帮助将不胜感激。我只知道必须有更好的方法,但我在这里或其他任何地方都找不到任何答案。 这看起来并不简单,因为字段非常多样化,甚至是一组图片作为单选按钮序列(它是您前门上的锁类型的图片 - 用于您的家庭保险)。
【问题讨论】:
如果您有混合元素,如输入、收音机、复选框、选择,您可以在必须进行更新时填充它们,例如使用 ajax,具体取决于它们是什么,例如,您可以添加特定的类或数据属性在元素之间产生差异 现在真正的问题是 - 为什么在这个可爱的地球上有 280 个领域?你自己说过——如果你有 10 个——那就太好了。我在建模时闻到了一些可怕的决定。我们是程序员,这意味着我们很懒惰,我们正在制造这些可怜的愚蠢机器来为我们工作——是的,总有一种方法可以减少工作量,让计算机完成繁重的工作。这一切都源于您如何构建数据、如何提取数据以及如何命名所有内容。而这正是我们看不到的。 对我来说这听起来像是 XY Problem。 (同意@NB) 这是一个公平的问题。这些数据与人们的各种支出有关。例如,一堆字段是:银行账户名称 1,银行账户类型 1 - 储蓄,日常账户等,银行余额 1。贷款账户提供商 1,贷款余额 1 等,燃气和电力提供商,信用卡,列表继续。这就是为什么有 280 个字段。有大量的信息要捕获!不过,我可能咬得比我能咀嚼的还多。我知道的足以让自己陷入思考什么是可能的麻烦,但不足以制定出一个优雅的解决方案! @shmaxnow 如果这些对于每个用户都是动态的,为什么不将字段存储在单个数组(json 编码)中以存储在单个字段中,然后循环通过 $keys=>$values 来获取每个用户的所有信息?而不是拥有那么多领域。只需将数组键设置为字段名称,将值设置为每个用户的字段实际值。您甚至可以为每种类型的元素创建一个不同的字段,然后您就可以准确地知道要循环的内容。例如,一个名为“text-fields”的表头,带有一个 json 数组["Name":"Test","Bank":"Test2"]
【参考方案1】:
Mysql 通常返回一个关联数组。然后,您可以使用此数组中的键/值对来动态创建表单。
<?php foreach($fields AS $name => $value) ?>
<input type="text" name="<?= $name ?>" value="<?= $value ?>" /><br />
<?php ?>
注意:缺点是您仍然缺少每个输入的标签和占位符。而且,它们都是文本输入。
【讨论】:
以上是关于如果mysql中存在记录,如何构造php代码以填充表单中的280个字段的主要内容,如果未能解决你的问题,请参考以下文章
php - 如何生成 MySQL INSERT 语句以使用数组中的多行填充表