Tvorba grafov pomocou knižnice Chart. js a PHP

V tomto článku si ukážeme, ako vytvoriť dynamické grafy pomocou knižnice Chart.js a PHP. Chart.js je jednoduchá knižnica na tvorbu grafov v JavaScripte, ktorá umožňuje vizualizáciu údajov v rôznych formátoch, ako sú stĺpcové grafy, čiarové grafy, koláčové grafy a ďalšie. Síce samozrejmosť ale pre istotu: údaje sú uložené v MySQL databáze 🙂

Vytvoríme HTML stránku s plátnom (canvas) pre graf a odkazmi na potrebné knižnice.

<!DOCTYPE html>
<html>
<head>
    <title>Chart.js and PHP Example</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
    <div style="width: 75%; margin: auto;">
        <canvas id="myChart"></canvas>
    </div>
    <script>
        async function fetchData() {
            const response = await fetch('data.php');
            const data = await response.json();
            return data;
        }

        async function createChart() {
            const data = await fetchData();

            const ctx = document.getElementById('myChart').getContext('2d');
            const myChart = new Chart(ctx, {
                type: 'bar', // typ grafu
                data: {
                    labels: data.labels,
                    datasets: [{
                        label: 'Sample Data',
                        data: data.values,
                        backgroundColor: 'rgba(54, 162, 235, 0.2)',
                        borderColor: 'rgba(54, 162, 235, 1)',
                        borderWidth: 1
                    }]
                },
                options: {
                    scales: {
                        y: {
                            beginAtZero: true
                        }
                    }
                }
            });
        }

        createChart();
    </script>
</body>
</html>

Vytvoríme PHP skript data.php, ktorý bude poskytovať údaje pre náš graf. Tento skript bude získavať údaje z databázy a vráti ich vo formáte JSON.

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "chart_data";

// Vytvorenie pripojenia
$conn = new mysqli($servername, $username, $password, $dbname);

// Kontrola pripojenia
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Získanie údajov z databázy
$sql = "SELECT label, value FROM chart";
$result = $conn->query($sql);

$labels = [];
$values = [];

if ($result->num_rows > 0) {
    // Načítanie údajov z riadkov
    while($row = $result->fetch_assoc()) {
        $labels[] = $row['label'];
        $values[] = $row['value'];
    }
} else {
    echo "0 results";
}

$conn->close();

// Vrátenie údajov vo formáte JSON
echo json_encode(['labels' => $labels, 'values' => $values]);
?>

Naše údaje budú uložené v MySQL databáze. Vytvoríme databázu a tabuľku pre naše údaje.

CREATE DATABASE chart_data;

USE chart_data;

CREATE TABLE chart (
    id INT AUTO_INCREMENT PRIMARY KEY,
    label VARCHAR(255) NOT NULL,
    value INT NOT NULL
);

INSERT INTO chart (label, value) VALUES
('January', 10),
('February', 20),
('March', 30),
('April', 40),
('May', 50),
('June', 60),
('July', 70);

Kompletný PHP skript data.php pre získanie údajov z databázy a ich vrátenie vo formáte JSON

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "chart_data";

// Vytvorenie pripojenia
$conn = new mysqli($servername, $username, $password, $dbname);

// Kontrola pripojenia
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Získanie údajov z databázy
$sql = "SELECT label, value FROM chart";
$result = $conn->query($sql);

$labels = [];
$values = [];

if ($result->num_rows > 0) {
    // Načítanie údajov z riadkov
    while($row = $result->fetch_assoc()) {
        $labels[] = $row['label'];
        $values[] = $row['value'];
    }
} else {
    echo "0 results";
}

$conn->close();

// Vrátenie údajov vo formáte JSON
echo json_encode(['labels' => $labels, 'values' => $values]);
?>

Fulltextové vyhľadávanie v PHP a MySQL

31.08.2024

Fulltextové vyhľadávanie v MySQL umožňuje efektívne prehľadávanie veľkých textových dát. Základný script ktorý potrebujeme a ktorý si môžete prispôsobiť podľa svojich potrieb, napríklad pridať ďalšie polia na vyhľadávanie alebo upraviť vzhľad výsledkov je tento: Vysvetlenie kódu Konfigurácia databázy a pripojenie: Nastavenie parametrov pripojenia k databáze. [...]

Implementácia živých kasínových hier pomocou WebSocketov v PHP a Laraveli

30.08.2024

Implementácia živých kasínových hier predstavuje moderný a atraktívny spôsob, ako zaujať hráčov a poskytnúť im autentický zážitok z hry. Použitie WebSocketov umožňuje real-time komunikáciu medzi serverom a klientom, čím sa dosahuje plynulé a rýchle reagovanie na herné udalosti. V tomto článku si ukážeme, ako vytvoriť živé kasínové hry pomocou PHP a Laravelu, [...]

Kompletný skript pre odosielanie e-mailov pomocou PHPMailer vrátane konfigurácie SMTP

19.08.2024

Vysvetlenie kódu: Autoloader: Použitím Composeru načítame potrebné triedy z PHPMaileru. SMTP konfigurácia: Nastavíme pripojenie k SMTP serveru vrátane hostiteľa, portu, používateľského mena a hesla. Nastavenie príjemcov: Pridáme odosielateľa, príjemcu a voliteľnú adresu pre odpovede. Nastavenie obsahu e-mailu: Definujeme predmet, telo e-mailu vo formáte HTML a alternatívny [...]

Syria / Syrian Army / Border Clashes /

Izrael udrel na viacero miest na juhu Libanonu, uvádzajú médiá

06.11.2025 17:02

Medzi Izraelom a Libanonom už rok platí prímerie, napriek tomu však izraelská armáda podniká časté údery.

SR ÚMS Vallo Hattas MS Susko Bezpečnosť BAX

Rezort spravodlivosti kritizuje návrh SaS na nový trest prevýchovy, považuje ho za nezmyselný

06.11.2025 16:45

MS argumentuje, že problematika „horalkových krádeží“ nie je len problémom trestného práva.

2010-snapshots-album

Pakistan napriek prímeriu zaútočil na Afganistan

06.11.2025 16:03

Pakistan použil ľahké a ťažké zbrane a zaútočil na civilné oblasti.

Havária na diaľnici D1, kamión

Tragédia na diaľnici D1: na úseku medzi Piešťanmi a Trnavou hlásia smrteľnú nehodu

06.11.2025 15:35, aktualizované: 16:20

Na mieste sa tvoria kolóny.

janvarga

Blog o mojej práci a vášni zároveň. Programujem v PHP a ako najčastejšie cms používam wordpress ako nedokonalú ale modernejšiu náhradu za drupal a typo3. A tom sú moje články.

Štatistiky blogu

Počet článkov: 9
Celková čítanosť: 8309x
Priemerná čítanosť článkov: 923x

Autor blogu

Kategórie