首页 > 解决方案 > PHP在mysql SELECT中获取URL值

问题描述

在我当前的项目中,我想使用 chart.js 在饼图中显示统计信息,但是对于我页面上的每个团队来说,它们都是不同的。

我试图通过 URL 在playerOne.php中的 Select 中给出WHERE值,但它似乎不起作用,因为这个 PHP 文件是由 JS 函数触发的。我已经通过 isset get 在 URL 上传递了 team_id,但这似乎不起作用。

如何将 URL 上的 team_id 值传递给查询?

playerOne.php

    if(isset($_GET['team_id'])) {

        $team_id = $_GET['team_id'];
    }

    $query = "SELECT * FROM user WHERE team_id = 7 LIMIT 1";
    $select_team = mysqli_query($connection, $query);

    $row = mysqli_fetch_assoc($select_team);

    $user_id = $row['user_id'];

    $query = "SELECT SUM(game_stats.match_stats_kills) AS Kills, SUM(game_stats.match_stats_deaths) AS Deaths FROM game_stats WHERE game_stats.user_id = $user_id";
    $select_kd = mysqli_query($connection, $query);

    $data = array();
    foreach($select_kd as $row) {
        $data[] = $row;
    }

    mysqli_close($connection);

    echo json_encode($data);

stats.js

$(document).ready(function() {
    showData();
});

function showData() {
{
    ($.post("includes/stats/playerOne.php",
    function(data) {

        var kills = [];
        var deaths = [];

        for(var i in data) {
            kills.push(data[i].Kills)
            deaths.push(data[i].Deaths);
        }

        var pieChartData = {
            labels: [
                'Kills', 'Deaths'
            ],
            datasets: [
                {
                    backgroundColor: ['#f56954', '#00c0ef'],
                    data: [kills, deaths]
                }
            ]
        };

        var pieChartTarget = $('#playerKD').get(0).getContext('2d');

        var pieChart = new Chart(pieChartTarget, {
            type: 'pie',
            data: pieChartData
        });
    }));
}
}

网址

http://localhost/r6team/team/team.php?team=stats&team_id=7

标签: javascriptphpmysql

解决方案


在您的 JS 中,您需要发送一个 GET 请求并为 ID 留出动态空间。 stats.js应该如下所示:

$(document).ready(function() {
    showData(7);
});

function showData(teamId) {
{
    ($.get("includes/stats/playerOne.php?team_id=" + teamId,
    function(data) {

        var kills = [];
        var deaths = [];

        for(var i in data) {
            kills.push(data[i].Kills)
            deaths.push(data[i].Deaths);
        }

        var pieChartData = {
            labels: [
                'Kills', 'Deaths'
            ],
            datasets: [
                {
                    backgroundColor: ['#f56954', '#00c0ef'],
                    data: [kills, deaths]
                }
            ]
        };

        var pieChartTarget = $('#playerKD').get(0).getContext('2d');

        var pieChart = new Chart(pieChartTarget, {
            type: 'pie',
            data: pieChartData
        });
    }));
  }
}

playerOne.php应如下所示:

    $team_id = 0;//initialize team ID
    if(isset($_GET['team_id'])) {

        $team_id = $_GET['team_id'];
    }

    //double quotes are important so the $team_id variable will be interpreted to the value it holds
    $query = "SELECT * FROM user WHERE team_id = $team_id LIMIT 1";
    $select_team = mysqli_query($connection, $query);

    $row = mysqli_fetch_assoc($select_team);

    $user_id = $row['user_id'];

    $query = "SELECT SUM(game_stats.match_stats_kills) AS Kills, SUM(game_stats.match_stats_deaths) AS Deaths FROM game_stats WHERE game_stats.user_id = $user_id";
    $select_kd = mysqli_query($connection, $query);

    $data = array();
    foreach($select_kd as $row) {
        $data[] = $row;
    }

    mysqli_close($connection);

    echo json_encode($data);

推荐阅读