2025. április 9., szerda

REST API PHP

 Procedurális módszerrel:

<?php

// Adatbázis kapcsolat beállításai

$host = 'localhost';

$user = 'root';

$password = '';

$dbname = 'norway_info';

 

// Kapcsolat létrehozása

$conn = new mysqli($host, $user, $password, $dbname);

 

// Kapcsolat ellenőrzése

if ($conn->connect_error) {

    die("Sikertelen kapcsolat: " . $conn->connect_error);

}

 

// Karakterkódolás beállítása

$conn->set_charset("utf8mb4");

header('Content-Type: application/json; charset=utf-8');

 

$method = $_SERVER['REQUEST_METHOD'];

$id = isset($_GET['id']) ? intval($_GET['id']) : null;

 

// JSON input feldolgozása

$inputJSON = file_get_contents('php://input');

$input = json_decode($inputJSON, true);

 

// fallback ha nem JSON jött

if (!is_array($input)) {

    $input = $_POST;

}

 

switch ($method) {

    case 'GET':

        if ($id) {

            $stmt = mysqli_prepare($conn, "SELECT * FROM contents WHERE id = ?");

            mysqli_stmt_bind_param($stmt, "i", $id);

            mysqli_stmt_execute($stmt);

            $result = mysqli_stmt_get_result($stmt);

            $data = mysqli_fetch_assoc($result);

        } else {

            $result = mysqli_query($conn, "SELECT * FROM contents");

            $data = mysqli_fetch_all($result, MYSQLI_ASSOC);

        }

        echo json_encode($data, JSON_UNESCAPED_UNICODE);

        break;

 

    case 'POST':

        if (!isset($input['title']) || !isset($input['body'])) {

            http_response_code(400);

            echo json_encode(['error' => 'title és body mező kötelező']);

            exit;

        }

        $title = $input['title'];

        $body = $input['body'];

        $img = isset($input['img']) ? $input['img'] : '';

 

        $stmt = mysqli_prepare($conn, "INSERT INTO contents (title, body, img) VALUES (?, ?, ?)");

        mysqli_stmt_bind_param($stmt, "sss", $title, $body, $img);

        mysqli_stmt_execute($stmt);

        echo json_encode(['id' => mysqli_insert_id($conn)]);

        break;

 

    case 'PUT':

        if (!$id) {

            http_response_code(400);

            echo json_encode(['error' => 'ID szükséges']);

            exit;

        }

        if (!isset($input['title']) || !isset($input['body'])) {

            http_response_code(400);

            echo json_encode(['error' => 'title és body mező kötelező']);

            exit;

        }

        $title = $input['title'];

        $body = $input['body'];

        $img = isset($input['img']) ? $input['img'] : '';

 

        $stmt = mysqli_prepare($conn, "UPDATE contents SET title=?, body=?, img=? WHERE id=?");

        mysqli_stmt_bind_param($stmt, "sssi", $title, $body, $img, $id);

        mysqli_stmt_execute($stmt);

        echo json_encode(['updated' => mysqli_stmt_affected_rows($stmt)]);

        break;

 

    case 'DELETE':

        if (!$id) {

            http_response_code(400);

            echo json_encode(['error' => 'ID szükséges']);

            exit;

        }

 

        $stmt = mysqli_prepare($conn, "DELETE FROM contents WHERE id=?");

        mysqli_stmt_bind_param($stmt, "i", $id);

        mysqli_stmt_execute($stmt);

        echo json_encode(['deleted' => mysqli_stmt_affected_rows($stmt)]);

        break;

 

    default:

        http_response_code(405);

        echo json_encode(['error' => 'Nem támogatott HTTP metódus']);

}

Egy másik megoldással:

$method = $_SERVER['REQUEST_METHOD'];

 

// PUT és DELETE esetén a nyers input feldolgozása

parse_str(file_get_contents("php://input"), $input);

 

$id = $_GET['id'] ?? null;

 

switch ($method) {

    case 'GET':

        if ($id) {

            $stmt = $conn->prepare("SELECT * FROM contents WHERE id = ?");

            $stmt->bind_param("i", $id);

        } else {

            $stmt = $conn->prepare("SELECT * FROM contents");

        }

        $stmt->execute();

        $result = $stmt->get_result();

        $data = $id ? $result->fetch_assoc() : $result->fetch_all(MYSQLI_ASSOC);

        echo json_encode($data, JSON_UNESCAPED_UNICODE);

        break;

 

    case 'POST':

        $title = $_POST['title'] ?? '';

        $body = $_POST['body'] ?? '';

        $img = $_POST['img'] ?? '';

        $stmt = $conn->prepare("INSERT INTO contents (title, body, img) VALUES (?, ?, ?)");

        $stmt->bind_param("sss", $title, $body, $img);

        $stmt->execute();

        echo json_encode(['id' => $stmt->insert_id]);

        break;

 

    case 'PUT':

        if (!$id) {

            http_response_code(400);

            echo json_encode(['error' => 'ID szükséges']);

            exit;

        }

        $title = $input['title'] ?? '';

        $body = $input['body'] ?? '';

        $img = $input['img'] ?? '';

        $stmt = $conn->prepare("UPDATE contents SET title=?, body=?, img=? WHERE id=?");

        $stmt->bind_param("sssi", $title, $body, $img, $id);

        $stmt->execute();

        echo json_encode(['updated' => $stmt->affected_rows]);

        break;

 

    case 'DELETE':

        if (!$id) {

            http_response_code(400);

            echo json_encode(['error' => 'ID szükséges']);

            exit;

        }

        $stmt = $conn->prepare("DELETE FROM contents WHERE id=?");

        $stmt->bind_param("i", $id);

        $stmt->execute();

        echo json_encode(['deleted' => $stmt->affected_rows]);

        break;

 

    default:

        http_response_code(405);

        echo json_encode(['error' => 'Nem támogatott metódus']);

}

Nincsenek megjegyzések:

Megjegyzés küldése

Tanfolyami jelentkezés – HTML űrlap készítése, adatok feldolgozása PHP-val, validációval és formázással

  HTML űrlap (jelentkezes.html) Készíts egy HTML oldalt, amely egy tanfolyamra történő jelentkezési űrlapot jelenít meg. Az űrlap legyen ...