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

ukrajina

VIDEO: V ukrajinskom meste vypukli potýčky kvôli odvodom do armády. Polícia použila plyn i zatýkala

02.08.2025 19:04

Demonštrujúce ženy požadovali prepustenie svojich príbuzných.

pride praha

Na pražský Pride prišli aj po roku tisíce ľudí, v dave tiež vlajky Slovenska. Témou aj Gaza

02.08.2025 17:38

Na pochodujúcich v uliciach čakalo aj niekoľko odporcov sprievodu, avšak obe skupiny od seba oddelila polícia.

gaza

Hamas: Dokým nebude zriadený palestínsky štát, zbrane nezložíme

02.08.2025 16:47

V posledných dňoch zároveň pribúda západných štátov, ktoré ohlasujú zámer uznať existenciu Štátu Palestína.

Trump

Putin mlčí. Rusov netrápi, že Trump presunul jadrové ponorky bližšie k nim. Kto a ako mu odpovedal z Moskvy?

02.08.2025 16:30

Stojí za zmienku, že kým Dmitrij Peskov iba poznamenal, že berie na vedomie Trumpovo ultimátum, naopak, Dmitrij Medvedev bol ako pes odtrhnutý z reťaze.

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

Autor blogu

Kategórie