【问题标题】:PHP - HTML form, connecting with select box optionsPHP - HTML 表单,与选择框选项连接
【发布时间】:2017-09-06 04:24:02
【问题描述】:

对于这个项目,我有一个上传页面供用户上传一个 CSV 文件,该文件将插入到单个临时表中的数据库中。从那里,一些东西被拆分并插入到单独的表中。每个 CSV 有 2 到 8 行,每行有 228 个字段,所以我的 staging table 中有 228 列。

上传后,用户可以转到页面 (userSelect.php) 并使用下拉菜单帮助选择工单以查看它将在多个表格中的显示位置。

上传/插入效果很好,下拉列表中的元素从数据库中正确填充,但我似乎无法将选择连接到表格页面。

例如,如果用户选择“工单包”下拉菜单并选择“二月区 B1”,我希望它显示与数据库中具有此工单包名称的任何记录的链接。然后,一旦他们选择了他们想要的记录,我希望 display.php 页面使用我假设的 id 使用该特定记录中的 228 个元素填充所有表。

我有下面这两个页面的代码。 userSelect 页面目前也没有任何用于将数据库记录显示为链接的代码,因此我希望弄清楚如何显示这些记录,然后使用用户选择的那个来填充显示页面上的表格。

userSelect.php

<form method="post" action="display.php" enctype="multipart/form-data">
 <input type="submit" name="submit" value="Confirm" >
</form>
<?php
$server = "localhost";
$user = "root";
$pw = "root";
$db = "uwsTest";

$connect = mysqli_connect($server, $user, $pw, $db);
if ($connect->connect_error) {
die("Connection failed: " . $conn->connect_error);
}else{
    echo'success!';
}
?>

<label>Select Work Order Packet:</label>
<select name="workOrderPacket">
<?php

$sql = mysqli_query($connect, "SELECT workOrderPacket FROM staging;");
while($row = $sql->fetch_assoc()){
    echo "<option >" . $row['workOrderPacket'] . "</option>";
}
?>
</select>
<label>Select Work Order ID:</label>
<select name="WorkOrderNumber">

<?php

$sql2 = mysqli_query($connect, "SELECT workOrderNum FROM staging;");
while($row2 = $sql2->fetch_assoc()){
    echo "<option>" . $row2['workOrderNum'] . "</option>";
}
?>  
</select>

display.php

<?php
if(isset($_POST['submit']))
{
while($row = mysqli_fetch_array($result1)){
?>
<!--Qa Table-->
<table>
<tr>
<th colspan="2">Qa/Qc CheckList</th>
</tr>
<tr>
<td>Service Address Correct</td>
<td><? echo $row['serviceAddress'];?>&nbsp;</td>
</tr>
<tr>
<td>Service Loc Correct</td>
<td><? echo $row['serviceLoc'];?>&nbsp;</td>
</tr>
<tr>
<td>Meter Number Correct</td>
<td><? echo $row['meterNumber'];?>&nbsp;</td>
</tr>
<tr>
<td>Meter Manufacturer Changed</td>
<td><? echo $row['meterManufacturer'];?>&nbsp;</td>
</tr>
<tr>
<td>Meter Type Changed</td>
<td><? echo $row['meterType'];?>&nbsp;</td>
</tr>
<tr>
<td>Meter Model Changed</td>
<td><? echo $row['meterModel'];?>&nbsp;</td>
</tr>
<tr>
<td>Low Register Correct</td>
<td><? echo $row['registerCorrect'];?>&nbsp;</td>
</tr>
<tr>
<td>High Register Correct</td>
<td><? echo $row['registerCorrect'];?>&nbsp;</td>
</tr>
</table>

更新 - display.php 的未完成 SQL 查询:

$query1 = "SELECT * FROM staging WHERE StageID = ;";
$result1 = mysqli_query($connect,$query1);

【问题讨论】:

  • 请将
    移到 PHP 代码上方
  • 抱歉不是这样。只需将表单开始标记单独移动到顶部并将剩余的 2 行保留在底部本身
  • 按照上面的说明移动并检查它是否有效
  • 哦,我明白了。这实际上并没有什么不同。提交按钮打开 display.php 页面没有任何问题。这是我需要帮助的数据库端,以便表格显示用户从下拉列表中选择的选项。目前它只是填满了数据库表中的最新条目
  • 哦,好的。是否要根据 WorkOrderPacket 下拉菜单中的选择更改 WorkOrderNumber 下拉菜单?

标签: php html sql forms submit


【解决方案1】:

您需要更新您的 SQL 语句来过滤相关的结果。

SELECT workOrderNum FROM staging WHERE workOrderPacket = '.$_REQUEST["workOrderPacket"] ';

【讨论】:

  • 我的第一个SQL语句现在的方式,对于workOrderPacket,它把所有的工单包号放在选择框中,这就是我想要的。但是为了过滤 workOrderNum 结果,您的意思是我需要更改第二条 SQL 语句吗?所以它只显示该数据包中的工作订单号?
  • 是的,如果您想过滤 workOrderNum 结果,您需要更改第二条语句。 $sql2 = mysqli_query($connect, "SELECT workOrderNum FROM staging WHERE workOrderPacket = '"$workOrderPacket"';");
  • 啊,我明白了,我刚刚尝试成功了,谢谢!关于在提交后制作下一页(display.php)用与选择对应的记录中的值填充表格,您有什么想法吗?换句话说,如果用户选择 workOrderNum 779870,它会使用数据库记录中的 228 个值填充 display.php 上的表,其中 779870 作为工单号?
  • 您需要从下拉列表中添加已发布的数据,以在 display.php 文件中过滤您的结果。这意味着您的 SQL 语句将包含表单中的数据。 SELECT workOrderNum FROM staging WHERE workOrderPacket = '.$_REQUEST["workOrderPacket"] ';
  • SELECT workOrderNum FROM staging WHERE workOrderPacket = '.$_REQUEST["workOrderPacket"] ' AND serialNumber = '$_REQUEST["serialNumber"]' AND workOrderNumber = '$_REQUEST["workOrderNumber]'; 您只需要在 SQL 语句中添加更多条件以相应地过滤结果。 $_REQUEST[""] 函数将从提交的表单中获取数据
猜你喜欢
  • 1970-01-01
  • 2015-06-20
  • 2010-09-27
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-06
  • 2015-06-23
相关资源
最近更新 更多