fsk33 2023-05-02 00:39 采纳率: 73.5%
浏览 56
已结题

PHP下拉框选择筛选项目,筛选数据显示

用PHP做了一个患者信息显示的网页,因为需要对患者信息进行筛选显示,比如:已提交和未报告筛选显示,患者不同医院筛选显示。
数据库状况:mysql,里面的dengji表的“标识”字段初始值为2,代表未报告,当提交后则存为0。里面的hospital表的“name”字段存有所有合作医院的名称。
以下是根据百度提供的资料修改,按下面方法,选择列表后页面没变化无响应。

<script language="javascript">
$('select').on('change',function(){
var url = "http://127.0.0.1/listc.php?";
var shaixuan = '&shaixuan='+$("[name='shaixuan']").val();
var shaixuan1 = '&shaixuan1='+$("[name='shaixuan']").val();
url += shaixuan + shaixuan1;
$('form').attr('action',url).submit();
})
</script>

以下是选择框情况的代码:

<td>筛选1:
<select name="shaixuan" id="shaixuan">
<option value=0>--报告状态--</option>
<option value="0" >已提交</option>
<option value="2" >未报告</option>
</select>
</td>
<td>
筛选2:
<select name="shaixuan2" id="shaixuan2">
<option value=0>--医疗机构--</option>
<?php
$sql= "select name from hospital";
$result = mysql_query($sql, $db_conn);
while($row = mysql_fetch_array($result)){
$name = $row['name'];
$template = $row['name'];
echo "<option value='$template' data-name='$name'>$template</option>";
}?>
</td>

以下是数据库的连接代码(因为要做筛选,所以创建了两个筛选变量$condition、$condition2,分别用来筛选不同的报告状态(已提交、未报告)、不同的医院):


$condition = " 'ack'='ack'";//注意,前面有个空格
if(isset($_GET['shaixuan'])){
if($_GET['shaixuan']!='all')
$condition.=" AND shaixuan='".$_GET['shaixuan']."'";}
$condition2 = " 'ack2'='ack2'";//注意,前面有个空格
if(isset($_GET['shaixuan2'])){
if($_GET['shaixuan2']!='all')
$condition2.=" AND shaixuan2='".$_GET['shaixuan2']."'";}

$query_rsdb = "SELECT * FROM dengji where 检查日期='$today' and $condition2";

请问如何修改代码?或用其它更好的方式,谢谢。

  • 写回答

3条回答 默认 最新

  • CF2301_77400554X 2023-05-02 10:11
    关注

    引用chatgpt部分指引作答:
    根据您提供的代码和描述,您可能需要进行以下几个步骤来实现筛选功能:

    1 修改HTML代码
    需要将第二个筛选框的名称从“shaixuan2”改为“shaixuan1”,这样才能与JavaScript中的变量名相对应。同时,为了方便使用JavaScript,可以将筛选按钮放到一个表单中,使用GET方法提交数据。

    以下是修改后的HTML代码:

    <form id="filter-form" action="listc.php" method="GET">
        <td>筛选1:
            <select name="shaixuan" id="shaixuan">
                <option value="0">--报告状态--</option>
                <option value="0">已提交</option>
                <option value="2">未报告</option>
            </select>
        </td>
        <td>筛选2:
            <select name="shaixuan1" id="shaixuan1">
                <option value="0">--医疗机构--</option>
                <?php
                $sql= "SELECT name FROM hospital";
                $result = mysql_query($sql, $db_conn);
                while($row = mysql_fetch_array($result)){
                    $name = $row['name'];
                    $template = $row['name'];
                    echo "<option value='$template' data-name='$name'>$template</option>";
                }?>
            </select>
        </td>
        <td><input type="submit" value="筛选"></td>
    </form>
    
    

    2 修改JavaScript代码
    修改JavaScript代码,确保它能够正确获取两个筛选框的值,并将它们作为GET参数传递到“listc.php”页面。以下是修改后的代码:

    <script language="javascript">
        $('#filter-form').on('submit',function(event){
            event.preventDefault();
            var url = "http://127.0.0.1/listc.php?";
            var shaixuan = 'shaixuan='+$('#shaixuan').val();
            var shaixuan1 = 'shaixuan1='+$('#shaixuan1').val();
            url += shaixuan + '&' + shaixuan1;
            window.location.href = url;
        });
    </script>
    

    在上面的代码中,我们使用jQuery库来处理表单提交事件。首先,我们使用“event.preventDefault()”来防止表单直接提交。然后,我们从两个选择框中获取值,并将它们作为GET参数添加到URL中。最后,我们使用“window.location.href”将页面重定向到新的URL。

    3 修改数据库查询代码
    最后,我们需要修改“listc.php”页面的代码,以根据筛选条件从数据库中获取符合条件的记录。以下是修改后的代码:

    $condition = " 1=1 ";//注意,前面有个空格
    if(isset($_GET['shaixuan'])){
        if($_GET['shaixuan']!='0')
            $condition.=" AND 标识='".$_GET['shaixuan']."'";
    }
    $condition2 = " 1=1 ";//注意,前面有个空格
    if(isset($_GET['shaixuan1'])){
        if($_GET['shaixuan1']!='0')
            $condition2.=" AND 医院='".$_GET['shaixuan2'] . "'";
    }
    }
    $query_rsdb = "SELECT * FROM dengji WHERE 检查日期='$today' AND $condition2";
    

    这样,如果用户选择了医院筛选条件,$condition2变量会被更新并添加上"AND 医院='所选医院'"的筛选条件,从而在查询时只显示符合条件的记录。

    需要注意的是,这里的医院名称是根据用户选择的下拉列表项的value属性进行筛选的,因此需要确保下拉列表中每个选项的value属性值与数据库中存储的医院名称完全一致,否则会出现匹配不到任何记录的情况。另外,您也需要确保在数据库中存在匹配的记录才能正确显示结果。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月2日
  • 已采纳回答 5月2日
  • 创建了问题 5月2日