Передача аргументов функции PHP для манипулирования результатами, возвращаемыми на сайте WordPress, используя функции и Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Передача аргументов функции PHP для манипулирования результатами, возвращаемыми на сайте WordPress, используя функции и

Сообщение Anonymous »

У меня есть функция PHP, которая отображает совет лидеров всех игроков и статистику из моей базы данных, которая работает как предполагалось. Теперь я, однако, хочу изменить функцию, чтобы я мог передавать данные, чтобы ограничить возвращаемые данные.function display_singles_ladder() {
global $wpdb;

$ranking_table = $wpdb->prefix . 'player_rankings';
$players_table = $wpdb->prefix . 'players';
$match_players_table = $wpdb->prefix . 'match_players';
$matches_table = $wpdb->prefix . 'matches';
$results_table = $wpdb->prefix . 'match_results';
$game_scores_table = $wpdb->prefix . 'match_games';

// Get all singles-ranked players
$players = $wpdb->get_results("
SELECT
r.player_id,
r.player_rank,
CONCAT(p.first_name, ' ', p.last_name) AS player_name,
(
SELECT COUNT(*) FROM {$wpdb->prefix}challenges c
WHERE c.challenged_id = p.player_id
AND c.match_type_id = 1
AND c.status = 'pending'
) AS pending_challenges
FROM $ranking_table r
JOIN $players_table p ON r.player_id = p.player_id
WHERE r.match_type_id = 1
ORDER BY r.player_rank ASC
", ARRAY_A);

if (empty($players)) {
return "
No ladder data available for singles.
";
}

ob_start();

echo "";
echo "

Rank
Player
Matches Played
Match Wins
Match Losses
Game Wins
Game Losses
Win Streak
Challenges

";

foreach ($players as $player) {
$player_id = (int)$player['player_id'];

// Matches won/lost
$match_stats = $wpdb->get_row($wpdb->prepare("
SELECT
COUNT(*) AS matches_played,
SUM(CASE
WHEN mp.team_number = 1 AND r.team1_score > r.team2_score THEN 1
WHEN mp.team_number = 2 AND r.team2_score > r.team1_score THEN 1
ELSE 0
END) AS wins,
SUM(CASE
WHEN mp.team_number = 1 AND r.team1_score < r.team2_score THEN 1
WHEN mp.team_number = 2 AND r.team2_score < r.team1_score THEN 1
ELSE 0
END) AS losses
FROM $match_players_table mp
JOIN $matches_table m ON mp.match_id = m.match_id
JOIN $results_table r ON r.match_id = m.match_id
WHERE mp.player_id = %d
AND m.match_type_id = 1
", $player_id), ARRAY_A);

$wins = $match_stats['wins'] ?? 0;
$losses = $match_stats['losses'] ?? 0;
$matches_played = $match_stats['matches_played'] ?? 0;

// Game wins/losses
$game_stats = $wpdb->get_row($wpdb->prepare("
SELECT
SUM(CASE
WHEN mp.team_number = 1 AND gs.team1_score > gs.team2_score THEN 1
WHEN mp.team_number = 2 AND gs.team2_score > gs.team1_score THEN 1
ELSE 0
END) AS games_won,
SUM(CASE
WHEN mp.team_number = 1 AND gs.team1_score < gs.team2_score THEN 1
WHEN mp.team_number = 2 AND gs.team2_score < gs.team1_score THEN 1
ELSE 0
END) AS games_lost
FROM $match_players_table mp
JOIN $matches_table m ON mp.match_id = m.match_id
JOIN $game_scores_table gs ON gs.match_id = m.match_id
WHERE mp.player_id = %d
AND m.match_type_id = 1
", $player_id), ARRAY_A);

$games_won = $game_stats['games_won'] ?? 0;
$games_lost = $game_stats['games_lost'] ?? 0;

// Win Streak
$win_streak = get_player_win_streak($player_id);?>













⚔️ pending






Подробнее здесь: https://stackoverflow.com/questions/797 ... -on-a-word
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»