微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用PHP根据下拉菜单中的选择从数据库中获取数据?

如何解决如何使用PHP根据下拉菜单中的选择从数据库中获取数据?

我正在尝试获取另一页下拉菜单中所选人员的详细信息。

这是我的代码

<form class="cmxform" action ='functions/processform.PHP' id="Form1" method="post">
           <legend> Faculty Transaction Form</legend>
            <label for="addname">Please Select School</label>
           <select class="form-control" name="school" id="school">
                <?PHP
                $nameslist = $getschool->getSchool();
                oci_execute($nameslist,OCI_DEFAULT);
                while ($row = oci_fetch_array($nameslist,OCI_ASSOC+OCI_RETURN_NULLS)) {
                    echo '<option value="' . $row['SCHOOLPROPERNAME'] . '">' . $row['SCHOOLPROPERNAME']. '</option>';
                }
                ?>
           </select>
            <label for="names">Please Select Name</label>
          <select class="form-control" name="names" id="names1234">
               <option value='0' >Select Name</option>

        </select>
            <label for="names">Recall FTF in progress</label>
          <select class="form-control" name="ftf" id="ftf">
               <option value='0' >Select Name</option>

        </select>
            <p>Paid/Unpaid/Terminated:</p>
            <div>
            <input type="radio" id="paid" name="paid" value="paid" >
            <label for="paid">Paid</label>
            </div>
            <div>
            <input type="radio" id="unpaid" name="unpaid" value="unpaid" >
            <label for="unpaid">Un-Paid</label>
            </div>
            <div>
            <input type="radio" id="terminated" name="terminated" value="terminated" >
            <label for="terminated">Terminated</label>
            </div>
        </form>
          <?PHP
         $report = $getschool->getftf();
        if (count($report) === 0) {
            echo "<tr>No Reports</tr>";
       } else {
            
            for ($i = 0; $i < count($report); $i++) {
               
                echo

                "
                    <a class=btn href='createftf.PHP?id=".$report[$i]['ID']. "'id='recallFTF'>Create FTF</a>
                        </tr>";
                ";
                
            }
       }
        
   
    
        ?>

queries.PHP

class Queries {
 public static function getftf() {   
    $dbUser = "xxxx";
    $dbPass = "xxxx";
    $dbConn = "(DESCRIPTION = (ADDRESS = (PROTOCOL=TCP)(HOST=xxxx)(PORT=1521))(CONNECT_DATA=(SID=xxxx)))";
    $conn = oci_connect($dbUser,$dbPass,$dbConn);
    $sql = oci_parse($conn,"SELECT * from tblFTF_Archive_Page1 ");
    if (oci_execute($sql,OCI_DEFAULT)){
     $result =   oci_fetch_array($sql,OCI_ASSOC+OCI_RETURN_NULLS);
     return $result;
   } else {
       return false;
    }  
}
 
}
       
 }

我正在尝试获取第二个或第三个下拉列表中所选人的ID,然后我将获取同一人的更多详细信息。使用上面的代码,我得到一个错误提示:“ PHP警告:count():参数必须是实现Countable的数组或对象”。 我在这里提到了一些类似的问题,但是没有一个问题能回答我的问题。任何帮助,将不胜感激。 TIA

解决方法

如果您查看文档,oci_parse函数将返回“成功的语句句柄,或错误的错误句柄”

如果您编写了代码count(false);,则会收到描述的警告。

有很多方法可以解决您遇到的问题。您需要知道函数可能返回什么并对此进行说明。情况总是如此!

因此,您可以执行以下示例。

<?php
$report = $getschool->getftf();
if ($report === false || count($report) === 0) {
  echo "<tr>No Reports</tr>";
} else { 
...

这样,您检查返回的值不是布尔值false(可能要检查错误或查看出了什么问题)。然后,您假设返回的值是资源,并且为countable,因此您将继续使用count

相反,您可以明确测试它是否符合您的期望。参见is_resource

更新: 现在看到您缺少代码...您需要在准备的语句上使用oci_executefetch

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。