php - 在 PHP 中获取一组行的程序具有相同的代码结构,但在另一行上没有结果

标签 php html mysql if-statement

美好的一天。因此,我有一个程序,它将根据我在 HTML 中的选择选项中单击的选择选项从 MySql 获取一组行,并将其显示到 HTML 中的容器中。该代码适用于第一个,但不知何故在第二个上它没有获取我请求的行。我已经检查了列名称是否正确以及选择选项的值是否与我的 PHP 代码中的“if 语句”匹配。

在第一段代码中,它工作正常,

if($_POST["FilterDoc"]=="document_type")
        {
        $result=mysqli_query($conn,"SELECT * FROM records ORDER BY document_type ASC");
        $data = "";
        while($rows = mysqli_fetch_assoc($result)){
            $document_type = $rows['document_type'];
            $date_received = $rows['date_received'];
            $application_no = $rows['application_no'];
            $hei = $rows['hei'];
            $school_name = $rows['school_name'];
            $from_co = $rows['from_co'];
            $other_govt = $rows['other_govt'];
            $contact_person = $rows['contact_person'];
            $comment = $rows['comment'];
            $program = $rows['program'];
            $year_level = $rows['year_level'];
            $academic_year = $rows['academic_year'];
            $transaction_no = $rows['transaction_no'];

            $output =  "<table><tr><td>$document_type</td><td>$date_received</td><td>$application_no</td><td>$hei</td><td>$school_name</td><td>$from_co</td><td>$other_govt</td><td>$contact_person</td><td>$comment</td><td>$program</td><td>$year_level</td><td>$academic_year</td><td>$transaction_no</td></tr></table><br>";
           $data .=  '<a href = "editdoc.php?v='.$transaction_no.'" name="documents">'.$output.'</a>';
          }
        echo $data ;

        }

但是在第二个代码上,即使它具有相同的代码结构,也无法像我希望的那样工作,

else if($_POST["FilterDoc"]=="other")
        {

        $result=mysqli_query($conn,"SELECT * FROM records ORDER BY other_govt ASC");
        while($data = mysql_fetch_assoc($result))
        $data = "";
        while($rows = mysqli_fetch_assoc($result)){
            $document_type = $rows['document_type'];
            $date_received = $rows['date_received'];
            $application_no = $rows['application_no'];
            $hei = $rows['hei'];
            $school_name = $rows['school_name'];
            $from_co = $rows['from_co'];
            $other_govt = $rows['other_govt'];
            $contact_person = $rows['contact_person'];
            $comment = $rows['comment'];
            $program = $rows['program'];
            $year_level = $rows['year_level'];
            $academic_year = $rows['academic_year'];
            $transaction_no = $rows['transaction_no'];

            $output =  "<table><tr><td>$other_govt</td><td>$document_type</td><td>$date_received</td><td>$application_no </td><td>$hei</td><td>$school_name</td><td>$from_co</td><td>$contact_person</td><td>$comment</td><td>$program</td><td>$year_level</td><td>$academic_year</td><td>$transaction_no</td></tr></table><br>";
           $data .=  '<a href = "editdoc.php?v='.$transaction_no.'" name="documents">'.$output.'</a>';
          }
        echo $data;             
        }

这是我选择选项的 HTML 代码,

<select name = "FilterDoc" onchange = "filterby(this);">
      <option selected disabled>Filter By</option>
      <option value="document_type">Document Type</option>
      <option value="date">Date</option>
      <option value="hei">HEI</option>
      <option value="other">Other Govt.</option>
      <option value="person">Person</option></select>

我的数据库中的列名称 other_govt 不是主键并且具有重复值。我将衷心感谢您的帮助。谢谢你!

最佳答案

运行查询SELECT * FROM records ORDER BY other_govt ASC从 MySQL CLI 或 PHPMyAdmin 以确保其正常工作。检查错误代码 mysqli_query() .

此循环会静默删除所有结果行:

while($data = mysql_fetch_assoc($result))
    $data = "";

所以这是一个错误。

您可能会发现使用 extract() 更容易函数拉取所有 $row值到局部变量中。或者使用mysqli_fetch_ojbect($result)然后使用 ...<td>{$rows->document}</td>...生成输出。

使用 htmlspecialchars() 将输出到 HTML 的字符串转义通常也是一个好主意。 。假设关联数组:

您的代码将为每一行生成一个表,这可能不是您想要的。把<table>循环外的标签,<tr>在每行的循环内,然后您可以迭代列值:

foreach ($rows as $col => $val) {
    $output .= '<td>'.htmlspecialchars($val).'</td>';
}

您可以通过在 SELECT 中指定列来按表所需的顺序获取列。而不是使用SELECT * .

关于php - 在 PHP 中获取一组行的程序具有相同的代码结构,但在另一行上没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50501002/

相关文章:

php - Cakephp 表单未在 POST 方法中发布所有字段值

php - SQL在将主键与where子句中的另一个值组合时返回空行

javascript - 使用phonegap的HTML5应用程序(服务器或客户端)

mysql - 如何使用 Propel 生成 SQL,在添加所有表后添加约束

MySQL:关于 INDEX 使用的 LIKE 123 和 = 123 之间的区别

PHP:如何在 Linux 上唯一标识一个进程?

php - 在子主题 WP 中添加自定义 php 文件

jquery - 如何在我的 jquery 中的 <p> 标记中添加新行?

javascript - 在由 innerHTML 生成的标签上触发 jQuery 事件

php - 从下表结构中查找可用房间数