这个php项目显示背身拿球成功率?

wen PHP项目 7

本文目录导读:

这个php项目显示背身拿球成功率?

  1. 实现背身拿球成功率的显示
  2. 如果项目已有数据结构

我理解你想要了解PHP项目中如何显示“背身拿球成功率”这一数据,由于我是一个AI助手,我无法直接查看你本地的项目文件,但我可以为你提供实现思路和示例代码。

实现背身拿球成功率的显示

数据库设计(假设)

-- 球员背身拿球数据表
CREATE TABLE player_back_to_goal_stats (
    id INT PRIMARY KEY AUTO_INCREMENT,
    player_id INT NOT NULL,
    match_id INT NOT NULL,
    back_to_goal_attempts INT DEFAULT 0,  -- 背身拿球次数
    back_to_goal_success INT DEFAULT 0,   -- 成功次数
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (player_id) REFERENCES players(id),
    FOREIGN KEY (match_id) REFERENCES matches(id)
);

PHP后端代码

<?php
// 获取球员背身拿球成功率
function getBackToGoalSuccessRate($playerId, $connection) {
    $query = "SELECT 
                SUM(back_to_goal_attempts) AS total_attempts,
                SUM(back_to_goal_success) AS total_success
              FROM player_back_to_goal_stats
              WHERE player_id = ?";
    $stmt = $connection->prepare($query);
    $stmt->bind_param("i", $playerId);
    $stmt->execute();
    $result = $stmt->get_result();
    $data = $result->fetch_assoc();
    $attempts = $data['total_attempts'] ?? 0;
    $success = $data['total_success'] ?? 0;
    // 计算成功率
    $successRate = ($attempts > 0) ? round(($success / $attempts) * 100, 1) : 0;
    return [
        'attempts' => $attempts,
        'success' => $success,
        'success_rate' => $successRate
    ];
}
// 连接数据库
$connection = new mysqli('localhost', 'username', 'password', 'database_name');
// 获取球员ID(示例)
$playerId = isset($_GET['player_id']) ? intval($_GET['player_id']) : 1;
$stats = getBackToGoalSuccessRate($playerId, $connection);
?>

HTML显示部分

<!-- 球员背身拿球成功率展示 -->
<div class="stat-card">
    <h3>背身拿球成功率</h3>
    <?php if ($stats['attempts'] > 0): ?>
        <div class="stat-value">
            <span class="percentage"><?php echo $stats['success_rate']; ?>%</span>
        </div>
        <div class="stat-details">
            <p>成功: <?php echo $stats['success']; ?> 次</p>
            <p>总尝试: <?php echo $stats['attempts']; ?> 次</p>
        </div>
        <!-- 进度条显示 -->
        <div class="progress-bar">
            <div class="progress" style="width: <?php echo $stats['success_rate']; ?>%"></div>
        </div>
    <?php else: ?>
        <p class="no-data">暂无数据</p>
    <?php endif; ?>
</div>
<style>
    .stat-card {
        background: #fff;
        padding: 20px;
        border-radius: 8px;
        box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    }
    .stat-value {
        font-size: 2em;
        font-weight: bold;
        color: #333;
    }
    .progress-bar {
        background: #eee;
        height: 20px;
        border-radius: 10px;
        margin-top: 10px;
    }
    .progress {
        background: #4CAF50;
        height: 100%;
        border-radius: 10px;
        transition: width 0.5s ease;
    }
</style>

图表展示(使用Chart.js)

<?php
// 获取多场数据展示趋势
$query = "SELECT 
            match_date,
            SUM(back_to_goal_attempts) as attempts,
            SUM(back_to_goal_success) as success
          FROM player_back_to_goal_stats
          JOIN matches ON player_back_to_goal_stats.match_id = matches.id
          WHERE player_id = ?
          GROUP BY match_date
          ORDER BY match_date DESC
          LIMIT 10";
$stmt = $connection->prepare($query);
$stmt->bind_param("i", $playerId);
$stmt->execute();
$result = $stmt->get_result();
$chartData = [];
while ($row = $result->fetch_assoc()) {
    $rate = $row['attempts'] > 0 ? 
            round(($row['success'] / $row['attempts']) * 100, 1) : 0;
    $chartData[] = [
        'date' => $row['match_date'],
        'rate' => $rate
    ];
}
?>
<!-- 趋势图 -->
<canvas id="trendChart"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
    const ctx = document.getElementById('trendChart');
    const chartData = <?php echo json_encode($chartData); ?>;
    new Chart(ctx, {
        type: 'line',
        data: {
            labels: chartData.map(d => d.date),
            datasets: [{
                label: '背身拿球成功率',
                data: chartData.map(d => d.rate),
                borderColor: 'rgb(75, 192, 192)',
                backgroundColor: 'rgba(75, 192, 192, 0.2)',
                tension: 0.1
            }]
        },
        options: {
            scales: {
                y: {
                    beginAtZero: true,
                    max: 100,
                    ticks: {
                        callback: (value) => value + '%'
                    }
                }
            }
        }
    });
</script>

数据输入接口

<?php
// 记录背身拿球数据
function recordBackToGoalStats($playerId, $matchId, $success, $attempts, $connection) {
    $query = "INSERT INTO player_back_to_goal_stats 
              (player_id, match_id, back_to_goal_attempts, back_to_goal_success) 
              VALUES (?, ?, ?, ?)";
    $stmt = $connection->prepare($query);
    $stmt->bind_param("iiii", $playerId, $matchId, $attempts, $success);
    return $stmt->execute();
}
?>

如果项目已有数据结构

如果你的项目已经有不同的数据结构,请告诉我:

  1. 数据库结构 - 相关的表名和字段
  2. 现有代码 - 你是如何获取球员数据的
  3. 展示需求 - 需要显示在哪个页面(球员列表、球员详情等)

我可以帮你调整代码来适配你的项目结构,你能否分享一些项目文件的相关信息?

抱歉,评论功能暂时关闭!