【问题标题】:PHP/SQL - Using a Select element to display/link to rows in a databasePHP/SQL - 使用 Select 元素显示/链接到数据库中的行
【发布时间】:2013-08-04 17:07:21
【问题描述】:

我正在使用 PHP 构建一个 CRUD 应用程序,我需要一些帮助来简化用户体验。基本上,用户使用预先分配的 ID 号创建一个新的“项目”。此 ID 号用作主键。提交表单后,会在我的数据库的“项目”表中创建一行。

项目创建后,我想使用另一种形式将存储事务添加到项目中(出于上下文目的,我正在跟踪仓库存储)。最初,打算让用户重新添加 ID 号(创建项目时输入的主键),但如果 ID 号输入错误,则有很多人为错误的机会。

当前任务:我想在我的表单上创建一个“选择”元素,列出所有已输入的 ID 号。然后,我可以从该下拉列表中选择一个项目并自动应用交易。我怎样才能做到这一点?

提前感谢您的帮助!

【问题讨论】:

  • 这里的代码有帮助吗?我当前的代码功能齐全。我只是不知道如何实施项目的下一阶段,我在这里尽可能准确地描述了这一点。我什至不知道我要粘贴什么代码,因为我已经写过的任何代码都无法帮助说明我的任务。

标签: php html mysql sql crud


【解决方案1】:

首先,您必须执行查询(使用 PHP)从该数据库中提取项目表中所有项目记录的列表。当您对此进行查询时,您将获得一个结果集,作为项目表中每个项目的数组,您可以使用循环遍历该数组以填充下拉框。

首先获取项目(假设您用于下拉选择的列名称为id):

<php $projects = mysqli_query($db, "SELECT id FROM PROJECTS_TABLE"); ?>

然后,显示下拉选择框:

<form name="formWhatever">
...
<select name="project_id">
<?php foreach ($projects as $project) { 
      $result = mysqli_fetch_array($projects, MYSQLI_ASSOC)?>
  <option value="<?php echo $result[id]; ?>">Project #<?php echo $result[id]; ?></option>
<?php } ?>
</select>
...
</form

我想我也喜欢@pajaja 的想法,即使用索引页面来消除长下拉框。

【讨论】:

  • 完美!谢谢你:)
【解决方案2】:

嗯,你需要做的就是你所描述的,所以我不确定我是否完全理解你的问题。在表单中创建一个选择菜单并用所有项目填充它。您需要先从数据库中获取所有项目 ID 及其名称,并为每个项目 ID 生成 HTML 选项。

 <select name="project_id">
   <option value="1">Project 1</option>
   <option value="2">Project 2</option>
   <option value="3">Project 3</option>
   <option value="4">Project 4</option>
   ...
   <option value="n">Project n</option>
 </select>

在 PHP 中,每个项目都会有类似的东西

echo "<option value='{$project['project_id']}'>{$project['name']}</option>";

然后使用$_POST['project_id'] 获取您要添加存储事务的项目的project_id


提示: 为什么要预先分配项目 ID?您如何确保不会两次发出相同的预分配密钥?您可以将数据库列设置为在每次插入时自动递增。此外,我认为最好先显示所有项目的列表,如索引页面,然后当用户单击所需项目时,您向他展示添加存储信息的选项(或您计划的任何其他内容)。有一个通用的表格,然后选择其中的项目是可行的,但如果有很多项目,可能会变得复杂,我真的看不出这种方法的优势。

【讨论】:

  • ID 由其他公司软件分配。但是,由于使用了其他软件,我不必担心意外使用同一个 ID 两次。另外,如果我尝试输入相同的 ID 两次,服务器将返回错误,现在允许创建记录,所以我不担心。为了澄清起见,我试图弄清楚如何在“新事务”页面上构建一个 Select 元素,一旦添加了“新项目”表单,它就会自动添加到新项目中,这样我就不必每次创建新项目时都将项目添加到选择元素中。
  • 另外,我在索引页面上被撕裂了。项目的数量不会很多,只要维护好列表,定期删除项目,Select元素就不会难管理,至少我不这么认为。不过,这是一个非常好的主意,我绝对会记住它。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2016-11-22
  • 2017-10-05
  • 2023-03-12
  • 2016-09-01
  • 2018-10-20
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
相关资源
最近更新 更多