蓝极冰焰 2024-05-25 16:51 采纳率: 40.7%
浏览 6
已结题

关于PHP中POST获取数据的问题

下面这段代码,调取不到最后需要的数据,请各位帮我看看,怎么修改,使它可以在页面上获取到对应数据

<?php 
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require_once './connections/games.php';
session_start();

if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true && isset($_SESSION['username'])) {
    $username = $_SESSION['username'];

    $sql = "SELECT username,realname FROM judges WHERE username = ?";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$username]);
    $username_row = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($username_row) {
        $username = $username_row['username'];
        $realname =$username_row['realname'];

        $stationResults = array();
        $stmt = $pdo->prepare("SELECT DISTINCT station,name FROM m_date WHERE `now` = ? AND judge_jl = ? ");
        $stmt->execute(array('待开赛',$username));
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $stationResults[] = $row['station'];
        $station = $row['station'];
        $m_name = $row['name'];
        }

    } else {
        echo "没有找到匹配的用户信息。";
    }
} else {
    header("Location: login.php");
    exit;
}
// 根据station获取唯一的group值
if (isset($_POST['station'])) {
    $station = $_POST['station'];
    $groupResults = array();
    $stmt = $pdo->prepare("SELECT DISTINCT `group` FROM m_order WHERE station = ?");
    $stmt->execute(array($station));
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $groupResults[] = $row['group'];
    }
    echo json_encode($groupResults);
    exit;
}

// 根据group获取唯一的event值
if (isset($_POST['group'])) {
    $group = $_POST['group'];
    $eventResults = array();
    $stmt = $pdo->prepare("SELECT DISTINCT event FROM m_order WHERE `group` = ?");
    $stmt->execute(array($group));
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $eventResults[] = $row['event'];
    }
    echo json_encode($eventResults);
    exit;
}

// 根据event获取唯一的schedule值
if (isset($_POST['event'])) {
    $event = $_POST['event'];
    $eventResults = array();
    $stmt = $pdo->prepare("SELECT DISTINCT schedule FROM m_order WHERE `event` = ?");
    $stmt->execute(array($event));
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $scheduleResults[] = $row['schedule'];
    }
    echo json_encode($scheduleResults);
    exit;
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../css/j_center.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
    $(document).ready(function() {
        // 初始化stationSelect
        $('#stationSelect').append(
                '<option value="">选择站次</option>');
        <?php foreach ($stationResults as $station): ?>  
            $('#stationSelect').append(
                '<option value="<?php echo htmlspecialchars($station); ?>"><?php echo htmlspecialchars($station); ?></option>'); 
        <?php endforeach; ?>   

        // 当station下拉菜单改变时
        $('#stationSelect').change(function() {
            var station = $(this).val(); // 获取选中的station值
            if (station) {
                // 发送POST请求到PHP脚本获取group
                $.ajax({
                    url: 'jl-a.php', // PHP脚本的URL
                    type: 'POST',
                    data: { station: station }, // 发送的数据
                    dataType: 'json',
                    success: function(groupResults) {
                        // 假设#groupSelect是group下拉菜单的ID
                        $('#groupSelect').empty(); // 清空下拉菜单
                        $('#groupSelect').append('<option value="">选择组别</option>'); // 添加提示选项
                        $.each(groupResults, function(index, group) {
                            $('#groupSelect').append('<option value="' + group + '">' + group + '</option>');
                        });

                        // 触发group下拉菜单的change事件(如果需要初始化其他下拉菜单)
                        $('#groupSelect').trigger('change');
                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                        console.error("AJAX Error: " + textStatus + ' - ' + errorThrown);
                    }
                });
            } else {
                // 如果没有选中的station,清空group下拉菜单
                $('#groupSelect').empty().append('<option value="">选择组别</option>');
            }
        });

        // 当group下拉菜单改变时
        $('#groupSelect').change(function() {
            var group = $(this).val(); // 获取选中的group值
            if (group) {
                            // 发送POST请求到PHP脚本获取event或其他相关数据
                $.ajax({
                    url: 'jl-a.php', // PHP脚本的URL(确保这个URL可以处理group参数)
                    type: 'POST',
                    data: { group: group }, // 发送的数据
                    dataType: 'json',
                    success: function(eventResults) {
                        // 假设#eventSelect是event下拉菜单的ID
                        $('#eventSelect').empty(); // 清空下拉菜单
                        $('#eventSelect').append('<option value="">选择项目</option>'); // 添加提示选项
                        $.each(eventResults, function(index, event) {
                            $('#eventSelect').append('<option value="' + event + '">' + event + '</option>');
                        });
                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                        console.error("AJAX Error: " + textStatus + ' - ' + errorThrown);
                    }
                });
            } else {
                // 如果没有选中的group,清空event下拉菜单
                $('#eventSelect').empty().append('<option value="">选择项目</option>');
            }
        });

         // 当event下拉菜单改变时
         $('#eventSelect').change(function() {
            var event = $(this).val(); // 获取选中的event值
            if (event) {
                            // 发送POST请求到PHP脚本获取schedule或其他相关数据
                $.ajax({
                    url: 'jl-a.php', // PHP脚本的URL(确保这个URL可以处理group参数)
                    type: 'POST',
                    data: { event: event }, // 发送的数据
                    dataType: 'json',
                    success: function(scheduleResults) {
                        // 假设#scheduleSelect是schedule下拉菜单的ID
                        $('#scheduleSelect').empty(); // 清空下拉菜单
                        $('#scheduleSelect').append('<option value="">选择赛程</option>'); // 添加提示选项
                        $.each(scheduleResults, function(index, schedule) {
                            $('#scheduleSelect').append('<option value="' + schedule + '">' + schedule + '</option>');
                        });
                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                        console.error("AJAX Error: " + textStatus + ' - ' + errorThrown);
                    }
                });
            } else {
                // 如果没有选中的group,清空schedule下拉菜单
                $('#scheduleSelect').empty().append('<option value="">选择赛程</option>');
            }
        });

        // 当schedule下拉菜单改变时
        $('#scheduleSelect').change(function() {
            var stations = $('#stationSelect').val(); // 获取选中的station值
            var groups = $('#groupSelect').val(); // 获取选中的group值
            var events = $('#eventSelect').val(); // 获取选中的event值
            var schedules = $('#scheduleSelect').val(); // 获取选中的schedule值
            if (schedule) {
                            // 发送POST请求到PHP脚本获取schedule或其他相关数据
                $.ajax({
                    url: 'jl-a.php', // PHP脚本的URL(确保这个URL可以处理group参数)
                    type: 'POST',
                    data: { 
                        stations: $('#stationSelect').val(),
                        groups: $('#groupSelect').val(),
                        events: $('#eventSelect').val(),
                        schedules: $('#scheduleSelect').val() 
                    }, // 发送的数据
                    dataType: 'json',
                    success: function(response) {
                        // 处理PHP脚本返回的响应数据
                        console.log(response);
                        // 根据返回的数据更新页面上的内容或其他操作
                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                        console.error("AJAX Error: " + textStatus + ' - ' + errorThrown);
                    }
                });
            }
        });
    });
    </script>   
<title>检录裁判 | 检录操作 | 执裁操作中心</title>
</head>

<body>
<header style="background:#3d77b3;
        color:#FFF;
        height:60px;
        border-radius: 5px;
        display: flex;
        align-items: center;
        padding: 0 10px;">
    <h1>检录裁判 | 检录操作 | 执裁操作中心</h1>
</header>

    <a>【裁判员:<?php echo $realname;?> 】【<?php echo $m_name.$station;?></a><br>
    <a href="logout.php" style="color: inherit; text-decoration: none;">
    <span style="border-radius: 5px;"> ▶退出登录 </span>
    </a>&nbsp|&nbsp<a href="j_center.php" style="color: inherit; text-decoration: none;">
    <span style="border-radius: 5px;"> ▶返回中心 </span>
    </a><br>

    <div class="sl">
        <select id="stationSelect"></select>
        <select id="groupSelect"></select>
        <select id="eventSelect"></select>
        <select id="scheduleSelect"></select>
    </div>
    
    <?php
    $stations = $_POST['stations'] ?? null;
    $groups = $_POST['groups'] ?? null;
    $events = $_POST['events'] ?? null;
    $schedules = $_POST['schedules'] ?? null;
    if (!empty($schedule)) { echo "null";}

    $query = "SELECT * FROM m_order WHERE station = ? AND `group` = ? AND `event` = ? AND `schedule` = ?";
    $stmt = $pdo->prepare($query);
    $stmt->execute([$stations, $groups, $events, $schedules]);
    $order = $stmt->fetchAll(PDO::FETCH_ASSOC);
    ?>

    <div style="border-radius: 20px; background-color:#F8F8F8;">
        
    <table style="font-family: inherit;color:#555">
    <thead>
        <tr align="center" style="font-weight:bold;font-size:12px;">
         <th>顺序<br>Order</th>
         <th>编号<br>Bib</th>
         <th>姓名<br>Name</th>
         <th>代表队<br>Delegation</th>
         <th>备注<br>Remark</th>
         </tr>
    </thead>
    <tbody>
         <?php
        foreach ($order as $row):
        ?>
        <form method="post" action="jl-a.php" style="margin-bottom: 10px;">
         <tr align="center" style="font-weight:bold;font-size:10px;">
         <td><?php echo htmlspecialchars($row['order']);?></td>
         <td><?php echo htmlspecialchars($row['bib']); ?></td>
         <td><?php echo htmlspecialchars($row['name']); ?></td>
         <td><?php echo htmlspecialchars($row['Delegation']); ?></td>
         <td><?php echo htmlspecialchars($row['remark']); ?></td>
         </tr>
         </form>
         <?php
        endforeach;
        ?>
    </tbody>
    </table>
    </div>
</body>
</html>
  • 写回答

10条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-05-25 17:09
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题:这段代码调取不到最后需要的数据,请问如何修改? 回答:
    1. 检查连接数据库的代码和是否开启了PDO扩展。
    2. 检查session_start()函数是否正确运行。
    3. 检查SQL语句是否正确,是否在正确的表中查询数据。
    4. 检查fetch方法的使用是否正确,是否正确获取数据。
    5. 检查HTML部分的代码,确认是否正确引入CSS文件并使用了正确的标签结构。
    6. 检查POST请求相关的代码,确认是否正确获取POST数据、SQL语句是否正确执行、fetch方法是否正确使用并返回正确的结果。 以下是修改后的代码示例:
    <?php
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    require_once './connections/games.php';
    session_start();
    if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true && isset($_SESSION['username'])) {
        $username = $_SESSION['username'];
        $sql = "SELECT username,realname FROM judges WHERE username=?";
        $stmt = $pdo->prepare($sql);
        $stmt->execute([$username]);
        $username_row = $stmt->fetch(PDO::FETCH_ASSOC);
        if ($username_row) {
            $username = $username_row['username'];
            $realname = $username_row['realname'];
            $stationResults = array();
            $stmt = $pdo->prepare("SELECT DISTINCT station,name FROM m_date WHERE `now`=? AND judge_jl=?");
            $stmt->execute(array('待开赛', $username));
            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                $stationResults[] = $row['station'];
                $station = $row['station'];
                $m_name = $row['name'];
            }
        } else {
            echo "没有找到匹配的用户信息。";
        }
    } else {
        header("Location: login.php");
        exit;
    }
    // 根据station获取唯一的group值
    if (isset($_POST['station'])) {
        $station = $_POST['station'];
        $groupResults = array();
        $stmt = $pdo->prepare("SELECT DISTINCT `group` FROM m_order WHERE station=?");
        $stmt->execute(array($station));
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            $groupResults[] = $row['group'];
        }
        echo json_encode($groupResults);
        exit;
    }
    // 根据group获取唯一的event值
    if (isset($_POST['group'])) {
        $group = $_POST['group'];
        $eventResults = array();
        $stmt = $pdo->prepare("SELECT DISTINCT event FROM m_order WHERE `group`=?");
        $stmt->execute(array($group));
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            $eventResults[] = $row['event'];
        }
        echo json_encode($eventResults);
        exit;
    }
    // 根据event获取唯一的schedule值
    if (isset($_POST['event'])) {
        $event = $_POST['event'];
        $scheduleResults = array();
        $stmt = $pdo->prepare("SELECT DISTINCT schedule FROM m_order WHERE event=?");
        $stmt->execute(array($event));
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            $scheduleResults[] = $row['schedule'];
        }
        echo json_encode($scheduleResults);
        exit;
    }
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" type="text/css" href="../css/j_center.css">
        <title>检录裁判 | 检录操作 | 执裁操作中心</title>
    </head>
    <body>
        <!-- HTML页面的其它代码 -->
    </body>
    </html>
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月25日
  • 修改了问题 5月25日
  • 赞助了问题酬金15元 5月25日
  • 创建了问题 5月25日