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']);
}