为了账号安全,请及时绑定邮箱和手机立即绑定

在 PHP 中提交后保留下拉值

在 PHP 中提交后保留下拉值

PHP
陪伴而非守候 2023-11-03 16:57:57
我有一个来自 Oracle 数据库的下拉菜单。当我选择一个下拉值并单击“显示详细信息”按钮时,会显示详细信息,但下拉列表默认返回列表中的第一个。我需要它保持所选值。我正在 PHP 中执行此操作我已经尝试过,但它无法识别<form name= "fund" method="post" > <label id= "fund" for="fund">Fund:</label> <Select  name="fund" id="fund"><option value="--Select A Fund--">--Select a Fund--</option> <?php  $sql = 'SELECT Account_name ||\' - \'|| Fund_id as FUND, FUND_ID FROM FUND_ACCOUNTS';      $stid = oci_parse($conn, $sql);      $success = oci_execute($stid);      while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS+OCI_ASSOC))       {           $selected = (!empty($_POST['fund']) &&  $_POST['fund'] == $row['FUND']) ? 'selected' : '';      echo '<option value="' . $row['FUND'] . '" ' . $selected . '>' . $row['FUND'] . '</option>';     }              ?>         </select>          <input type="submit" name="fund"                    value="Show Current Fund Investors"/>         </form>             <BR>        <?php     echo 1 . $row['FUND'];      echo 1 . $_POST['fund'];             ?>但 $selected 从未被填充。不知道从这里去哪里,而且我不是网络开发人员。有什么想法我哪里出错了吗?最终回显的输出是11Show Current Fund Investors
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

可能这一行只需要这样做:


$selected = (!empty($_POST['fund']) &&  $_POST['fund'] == $row['FUND'])) ? 'selected' : '';

您所拥有的是将默认选项与您实际从下拉列表中选择的选项相匹配 || ($row['FUND'] == '--Select A Fund--'),并且可能还添加到该默认选项中。selected在浏览器中查看页面源代码,该selected属性可能有两个选项。


默认情况下,如果未选择任何内容,它只会显示下拉列表中的第一项--Select A Fund--。


另外,您可能应该在$selected变量之前和引号之后有一个空格:


echo '<option value="' . $row['FUND'] . '" ' . $selected . '>' . $row['FUND'] . '</option>';

应该出来:


<option value="whatever" selected>Whatever</option>

编辑


根据您的编辑,您需要从提交按钮中删除名称属性,或对其进行重命名。这和你的select名字有冲突。


<input type="submit" value="Show Current Fund Investors"/> 

一个提示:


您应该将对该列表的获取封装在一个函数中(至少)并将其包含在顶部的页面中:


/functions/fetchFundAccounts.php


<?php

function fetchFundAccounts($conn)

{

    $stid = oci_parse($conn, 'SELECT Account_name ||\' - \'|| Fund_id as FUND, FUND_ID FROM FUND_ACCOUNTS'); 


     $success = oci_execute($stid);

     $results = [];

     while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS+OCI_ASSOC)) {  

         $results[] = $row;

     }

     return $results;

}

使用方法:


<?php include(__DIR__.'/functions/fetchFundAccounts.php') ?>


<form name= "fund" method="post" >

    <label id= "fund" for="fund">Fund:</label>

    <select  name="fund" id="fund">

        <option value="--Select A Fund--">--Select a Fund--</option>

        <?php foreach(fetchFundAccounts($conn) as $row): ?>


        <option value="<?php echo $row['FUND'] ?>" <?php echo (!empty($_POST['fund']) &&  $_POST['fund'] == $row['FUND']) ? 'selected' : '' ?>><?php echo $row['FUND'] ?></option>


        <?php endforeach ?> 

    

    </select> 

    <input type="submit" value="Show Current Fund Investors"/> 

</form> 


查看完整回答
反对 回复 2023-11-03
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信