使用PHP和AJAX对POST方法获取的医生列表进行A-Z排序

霞舞
发布: 2025-10-06 12:52:12
原创
731人浏览过

使用php和ajax对post方法获取的医生列表进行a-z排序

本文介绍如何在使用POST方法获取医生列表后,通过PHP和AJAX实现A-Z排序功能。首先,在search.php页面创建一个表单,保存用于重定向到该页面的POST数据。然后,使用PHP函数对医生数据进行排序,并通过AJAX将排序后的结果动态更新到页面上,从而实现无需刷新页面的排序体验。

1. 修改search.php页面

首先,我们需要在search.php页面添加一个表单和一个用于触发排序的按钮。同时,需要将当前的医生数据保存下来,以便进行排序。

<?php
include 'models/doctors.class.php';
// error_reporting(0);
$search = new doctors();
$doctors = []; // 初始化医生数组

if(isset($_POST['submit'])){
    $doctors = $search->filterDoctors($_POST); // 将结果赋值给 $doctors
}

?>
<!doctype html>
<html lang="en">
<head>
    <!-- 头部信息省略 -->
    <title>Healthcare</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
    <!-- 其他HTML代码省略 -->
    <section>
        <div class="container">
            <button id="sort-az" class="btn btn-primary">Sort A-Z</button>
            <div id="doctor-list">
                <?php
                if (!empty($doctors)) {
                    foreach($doctors as $row1){
                ?>
                    <a href="therapist.php?id=<?php echo $row1['User_ID']; ?>" class="text-decoration-none">
                        <div class="therapistCardOne mx-2 popins-font my-2">
                            <div class="row py-2">
                                <!-- 医生信息显示 -->
                                <div class="col-8 g-0 ps-2">
                                    <span class="span1"><?php echo $row1['full_name'];?></span>
                                    <span class="ps-2">
                                        <i class="bi bi-star-fill icon-ccc"></i>
                                        <i class="bi bi-star-fill icon-ccc"></i>
                                        <i class="bi bi-star-fill icon-ccc"></i>
                                        <i class="bi bi-star-fill icon-ccc"></i>
                                        <i class="bi bi-star icon-ccc"></i></span><br>
                                    <span class="span2">Location :
                                        <?php echo $row1['location'];?>
                                    </span> <br>
                                    <span class="span3"><i class="bi bi-clock icon-cc"></i> 12:00pm - 16:00pm</span> <span
                                        class="span4 ps-2"><i class="bi bi-geo-alt icon-cc"></i> Zurich New Clinic</span>
                                </div>
                            </div>
                        </div>
                    </a>
                <?php
                    }
                } else {
                    echo "<p>No doctors found.</p>";
                }
                ?>
            </div>
        </div>
    </section>

    <script>
        $(document).ready(function(){
            $("#sort-az").click(function(e){
                e.preventDefault();
                $.ajax({
                    url: "sort_doctors.php", // 创建一个新的PHP文件来处理排序
                    type: "POST",
                    data: <?php echo json_encode($_POST); ?>, // 发送原始的POST数据
                    success: function(data){
                        $("#doctor-list").html(data); // 更新医生列表
                    }
                });
            });
        });
    </script>
</body>
</html>
登录后复制

关键修改:

  • 使用一个$doctors数组来存储医生数据,方便后续排序。
  • 添加了一个id为sort-az的按钮,用于触发排序。
  • 添加了一个id为doctor-list的div,用于显示医生列表,并将在AJAX请求成功后更新其内容。
  • 使用jQuery的AJAX函数,当点击排序按钮时,向sort_doctors.php发送POST请求,并将原始的POST数据传递过去。

2. 创建 sort_doctors.php 文件

创建一个名为 sort_doctors.php 的文件,用于处理排序逻辑。

序列猴子开放平台
序列猴子开放平台

具有长序列、多模态、单模型、大数据等特点的超大规模语言模型

序列猴子开放平台 0
查看详情 序列猴子开放平台

立即学习PHP免费学习笔记(深入)”;

<?php
include 'models/doctors.class.php';
$search = new doctors();
$doctors = $search->filterDoctors($_POST);

// 排序函数
usort($doctors, function($a, $b) {
    return strcmp($a['full_name'], $b['full_name']);
});

// 生成HTML
$html = '';
foreach($doctors as $row1){
    $html .= '<a href="therapist.php?id=' . $row1['User_ID'] . '" class="text-decoration-none">';
    $html .= '<div class="therapistCardOne mx-2 popins-font my-2">';
    $html .= '<div class="row py-2">';
    // 医生信息显示
    $html .= '<div class="col-8 g-0 ps-2">';
    $html .= '<span class="span1">' . $row1['full_name'] . '</span>';
    $html .= '<span class="ps-2">';
    $html .= '<i class="bi bi-star-fill icon-ccc"></i>';
    $html .= '<i class="bi bi-star-fill icon-ccc"></i>';
    $html .= '<i class="bi bi-star-fill icon-ccc"></i>';
    $html .= '<i class="bi bi-star-fill icon-ccc"></i>';
    $html .= '<i class="bi bi-star icon-ccc"></i></span><br>';
    $html .= '<span class="span2">Location :';
    $html .= $row1['location'];
    $html .= '</span> <br>';
    $html .= '<span class="span3"><i class="bi bi-clock icon-cc"></i> 12:00pm - 16:00pm</span> <span class="span4 ps-2"><i class="bi bi-geo-alt icon-cc"></i> Zurich New Clinic</span>';
    $html .= '</div>';
    $html .= '</div>';
    $html .= '</div>';
    $html .= '</a>';
}

echo $html;
?>
登录后复制

关键步骤:

  • 接收POST数据,并调用filterDoctors函数获取医生数据。
  • 使用usort函数,并提供一个自定义的比较函数,按照full_name字段进行升序排序。
  • 循环排序后的医生数据,生成HTML代码,并将其输出。

3. 注意事项

  • 确保引入了jQuery库。
  • sort_doctors.php文件应该与search.php文件位于同一目录下,或者根据实际情况修改AJAX请求的URL。
  • 错误处理: 在实际应用中,应该添加错误处理机制,例如在AJAX请求失败时显示错误信息。
  • 安全性: 对POST数据进行验证和过滤,防止SQL注入等安全问题。

总结

通过以上步骤,我们成功实现了使用PHP和AJAX对POST方法获取的医生列表进行A-Z排序的功能。这种方法可以提供更好的用户体验,因为用户无需刷新页面即可看到排序后的结果。同时,这种方法也具有较高的灵活性,可以根据实际需求进行定制和扩展。

以上就是使用PHP和AJAX对POST方法获取的医生列表进行A-Z排序的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号