Enhance competitor data fetching by ensuring JSON response and improving data handling in the frontend; refactor variable names for consistency

This commit is contained in:
vista-man
2025-03-26 13:51:59 +01:00
parent 54df59d3a8
commit 7d9ce536fc
5 changed files with 375 additions and 37 deletions

View File

@@ -2,3 +2,315 @@ Executing query: SELECT user_id, COUNT(pokemon_id) AS pokemon_count
FROM user_pokemon FROM user_pokemon
GROUP BY user_id GROUP BY user_id
ORDER BY pokemon_count DESC ORDER BY pokemon_count DESC
Executing query: INSERT INTO pokemon (id, name, height, weight, base_experience, species_url, image_url)
VALUES (1, '1', 1, 1, 1, '1', '1')
Executing query: SELECT user_id, COUNT(pokemon_id) AS pokemon_count
FROM user_pokemon
GROUP BY user_id
ORDER BY pokemon_count DESC
Executing query: INSERT INTO pokemon (id, name, height, weight, base_experience, species_url, image_url)
VALUES (1, '1', 1, 1, 1, '1', '1')
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id
Executing query: SELECT user_id, COUNT(pokemon_id) AS pokemon_count
FROM user_pokemon
GROUP BY user_id
ORDER BY pokemon_count DESC
Executing query: SELECT p.*, s.flavor_text, GROUP_CONCAT(t.name) AS types, GROUP_CONCAT(a.name) AS abilities, st.hp, st.attack, st.defense, st.sp_attack, st.sp_defense, st.speed
FROM pokemon p
LEFT JOIN species s ON p.id = s.pokemon_id
LEFT JOIN pokemon_types pt ON p.id = pt.pokemon_id
LEFT JOIN types t ON pt.type_id = t.id
LEFT JOIN pokemon_abilities pa ON p.id = pa.pokemon_id
LEFT JOIN abilities a ON pa.ability_id = a.id
LEFT JOIN stats st ON p.id = st.pokemon_id
WHERE p.id = 1 AND p.deleted = 0
GROUP BY p.id

View File

@@ -21,6 +21,7 @@ if ($conn->connect_error) {
} }
header("Cache-Control: max-age=86400"); // Cache for 24 hours header("Cache-Control: max-age=86400"); // Cache for 24 hours
header("Content-Type: application/json"); // Ensure JSON response
// Fetch competitors data // Fetch competitors data
$sql = "SELECT user_id, COUNT(pokemon_id) AS pokemon_count $sql = "SELECT user_id, COUNT(pokemon_id) AS pokemon_count
@@ -30,12 +31,17 @@ $sql = "SELECT user_id, COUNT(pokemon_id) AS pokemon_count
logMessage("Executing query: $sql"); logMessage("Executing query: $sql");
$result = $conn->query($sql); $result = $conn->query($sql);
$competitors = []; if ($result) {
while ($row = $result->fetch_assoc()) { $competitors = [];
$competitors[] = $row; while ($row = $result->fetch_assoc()) {
$competitors[] = $row;
}
logMessage("Query result: " . json_encode($competitors));
echo json_encode($competitors);
} else {
logMessage("Error executing query: " . $conn->error);
echo json_encode(["error" => "Error fetching competitors data"]);
} }
logMessage("Query result: " . json_encode($competitors));
echo json_encode($competitors);
$conn->close(); $conn->close();
?> ?>

View File

@@ -21,6 +21,7 @@ if ($conn->connect_error) {
} }
header("Cache-Control: max-age=86400"); // Cache for 24 hours header("Cache-Control: max-age=86400"); // Cache for 24 hours
header("Content-Type: application/json"); // Ensure JSON response
if (isset($_GET['id'])) { if (isset($_GET['id'])) {
$id = intval($_GET['id']); $id = intval($_GET['id']);
@@ -37,27 +38,37 @@ if (isset($_GET['id'])) {
logMessage("Executing query: $sql"); logMessage("Executing query: $sql");
$result = $conn->query($sql); $result = $conn->query($sql);
if ($result->num_rows > 0) { if ($result) {
$pokemon = $result->fetch_assoc(); if ($result->num_rows > 0) {
$pokemon['types'] = explode(',', $pokemon['types']); $pokemon = $result->fetch_assoc();
$pokemon['abilities'] = explode(',', $pokemon['abilities']); $pokemon['types'] = explode(',', $pokemon['types']);
logMessage("Query result: " . json_encode($pokemon)); $pokemon['abilities'] = explode(',', $pokemon['abilities']);
echo json_encode($pokemon); logMessage("Query result: " . json_encode($pokemon));
echo json_encode($pokemon);
} else {
logMessage("No Pokémon found for ID: $id");
echo json_encode(["error" => "No Pokémon found"]);
}
} else { } else {
logMessage("No Pokémon found for ID: $id"); logMessage("Error executing query: " . $conn->error);
echo json_encode(["error" => "No Pokémon found"]); echo json_encode(["error" => "Error fetching Pokémon data"]);
} }
} else { } else {
$sql = "SELECT * FROM pokemon WHERE deleted = 0"; $sql = "SELECT * FROM pokemon WHERE deleted = 0";
logMessage("Executing query: $sql"); logMessage("Executing query: $sql");
$result = $conn->query($sql); $result = $conn->query($sql);
$pokemons = []; if ($result) {
while ($row = $result->fetch_assoc()) { $pokemons = [];
$pokemons[] = $row; while ($row = $result->fetch_assoc()) {
$pokemons[] = $row;
}
logMessage("Query result: " . json_encode($pokemons));
echo json_encode($pokemons);
} else {
logMessage("Error executing query: " . $conn->error);
echo json_encode(["error" => "Error fetching Pokémon data"]);
} }
logMessage("Query result: " . json_encode($pokemons));
echo json_encode($pokemons);
} }
$conn->close(); $conn->close();

View File

@@ -33,17 +33,21 @@ function fetchPokemons() {
.then((response) => response.text()) .then((response) => response.text())
.then((text) => { .then((text) => {
console.log("Server response:", text); console.log("Server response:", text);
const data = JSON.parse(text); try {
if (Array.isArray(data)) { const data = JSON.parse(text);
allPokemons = data; if (Array.isArray(data)) {
localStorage.setItem("pokemons", JSON.stringify(allPokemons)); allPokemons = data;
localStorage.setItem("pokemons_timestamp", Date.now().toString()); localStorage.setItem("pokemons", JSON.stringify(allPokemons));
console.log("Fetched and cached Pokémon data:", allPokemons); localStorage.setItem("pokemons_timestamp", Date.now().toString());
filteredPokemons = allPokemons.filter(pokemon => !pokemon.deleted); console.log("Fetched and cached Pokémon data:", allPokemons);
displayPokemons(filteredPokemons); filteredPokemons = allPokemons.filter(pokemon => !pokemon.deleted);
fetchCompetitors(); displayPokemons(filteredPokemons);
} else { fetchCompetitors();
console.error("Unexpected response format:", data); } else {
console.error("Unexpected response format:", data);
}
} catch (error) {
console.error("Error parsing JSON:", error);
} }
}) })
.catch((error) => { .catch((error) => {
@@ -208,10 +212,15 @@ function clearSearch() {
function fetchCompetitors() { function fetchCompetitors() {
console.log("Fetching competitors data from server..."); console.log("Fetching competitors data from server...");
fetch(`./get-competitors.php`) fetch(`./get-competitors.php`)
.then((response) => response.json()) .then((response) => response.text())
.then((data) => { .then((text) => {
console.log("Competitors data:", data); console.log("Competitors data:", text);
displayCompetitors(data); try {
const data = JSON.parse(text);
displayCompetitors(data);
} catch (error) {
console.error("Error parsing JSON:", error);
}
}) })
.catch((error) => { .catch((error) => {
console.error("Error fetching competitors data:", error); console.error("Error fetching competitors data:", error);

View File

@@ -1,12 +1,12 @@
const inputElement = document.querySelector("#search-input"); const inputElement = document.querySelector("#search-input");
const search_icon = document.querySelector("#search-close-icon"); const searchIcon = document.querySelector("#search-close-icon");
const sort_wrapper = document.querySelector(".sort-wrapper"); const sortWrapper = document.querySelector(".sort-wrapper");
inputElement.addEventListener("input", () => { inputElement.addEventListener("input", () => {
handleInputChange(inputElement); handleInputChange(inputElement);
}); });
search_icon.addEventListener("click", handleSearchCloseOnClick); searchIcon.addEventListener("click", handleSearchCloseOnClick);
sort_wrapper.addEventListener("click", handleSortIconOnClick); sortWrapper.addEventListener("click", handleSortIconOnClick);
function handleInputChange(inputElement) { function handleInputChange(inputElement) {
const inputValue = inputElement.value; const inputValue = inputElement.value;