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 [...]

Mark Rutte

Rutte bagatelizoval stiahnutie amerických vojsk z Rumunska

05.11.2025 23:23

Bukurešť minulý týždeň oznámila, že USA sťahujú časť svojich vojsk z krajiny.

Donald Trump

USA možno pracujú s Ruskom a Čínou na obmedzení jadrového arzenálu, naznačil Trump

05.11.2025 22:51

Minulý týždeň Trump pritom vzbudil rozruch oznámením, že nariadil ministerstvu obrany, aby obnovilo jadrové skúšky tak, ako to podľa neho robia ostatné jadrové mocnosti.

Soros

Bulharský parlament zriadil komisiu pre vyšetrovanie aktivít Georgea Sorosa

05.11.2025 22:33

Sorosova nadácia začala v krajine pôsobiť v roku 1990 po páde komunistického režimu.

raši

Raši prijal prezidenta Nawrockého. Poľsko označil za lídra v Európe

05.11.2025 20:46

Témou stretnutia bola silnejšia parlamentná, regionálna a európska spolupráca.

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ť: 8300x
Priemerná čítanosť článkov: 922x

Autor blogu

Kategórie