在 PHP 中提交后保留下拉值

我有一个来自 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


陪伴而非守候
浏览 89回答 1
1回答

狐的传说

可能这一行只需要这样做:$selected = (!empty($_POST['fund']) &&&nbsp; $_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"/>&nbsp;一个提示:您应该将对该列表的获取封装在一个函数中(至少)并将其包含在顶部的页面中:/functions/fetchFundAccounts.php<?phpfunction fetchFundAccounts($conn){&nbsp; &nbsp; $stid = oci_parse($conn, 'SELECT Account_name ||\' - \'|| Fund_id as FUND, FUND_ID FROM FUND_ACCOUNTS');&nbsp;&nbsp; &nbsp; &nbsp;$success = oci_execute($stid);&nbsp; &nbsp; &nbsp;$results = [];&nbsp; &nbsp; &nbsp;while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS+OCI_ASSOC)) {&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$results[] = $row;&nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp;return $results;}使用方法:<?php include(__DIR__.'/functions/fetchFundAccounts.php') ?><form name= "fund" method="post" >&nbsp; &nbsp; <label id= "fund" for="fund">Fund:</label>&nbsp; &nbsp; <select&nbsp; name="fund" id="fund">&nbsp; &nbsp; &nbsp; &nbsp; <option value="--Select A Fund--">--Select a Fund--</option>&nbsp; &nbsp; &nbsp; &nbsp; <?php foreach(fetchFundAccounts($conn) as $row): ?>&nbsp; &nbsp; &nbsp; &nbsp; <option value="<?php echo $row['FUND'] ?>" <?php echo (!empty($_POST['fund']) &&&nbsp; $_POST['fund'] == $row['FUND']) ? 'selected' : '' ?>><?php echo $row['FUND'] ?></option>&nbsp; &nbsp; &nbsp; &nbsp; <?php endforeach ?>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; </select>&nbsp;&nbsp; &nbsp; <input type="submit" value="Show Current Fund Investors"/>&nbsp;</form>&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP