TIF_NGANJUK_E41210577/admin/artikel/addartikel.php

136 lines
4.4 KiB
PHP

<?php
include '../auth.php';
include '../../koneksi.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$id_user = $_SESSION['user_id']; // Ambil dari sesi login
$judul = $_POST['judul'];
$konten = $_POST['konten'];
$kategori = $_POST['kategori'];
$meta_deskripsi = $_POST['meta_deskripsi'];
$meta_keyword = $_POST['meta_keyword'];
$tanggal = date("Y-m-d H:i:s");
$_SESSION['old_input'] = [
'judul' => $judul,
'konten' => $konten,
'kategori' => $kategori,
'meta_deskripsi' => $meta_deskripsi,
'meta_keyword' => $meta_keyword,
];
// Generate slug dari judul dengan memastikan unik
function generateUniqueSlug($conn, $judul) {
// Buat slug dasar dari judul
$slug = strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $judul), '-'));
$originalSlug = $slug;
$counter = 1;
// Cek apakah slug sudah ada di database
$sql = "SELECT COUNT(*) AS count FROM detail_artikel WHERE slug = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $slug);
while (true) {
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
// Jika slug sudah ada, tambahkan angka di belakangnya
if ($row['count'] > 0) {
$slug = $originalSlug . '-' . $counter;
$counter++;
} else {
break; // Keluar dari loop jika slug sudah unik
}
}
return $slug;
}
$slug = generateUniqueSlug($conn, $judul);
// **Upload Gambar**
$gambarNama = "";
if (!empty($_FILES['gambar']['name']) && $_FILES['gambar']['size'] > 0) {
$gambarTmp = $_FILES['gambar']['tmp_name'];
$gambarNama = time() . "_" . basename($_FILES['gambar']['name']);
$targetDir = "../../uploads/artikel/";
$targetFile = $targetDir . $gambarNama;
// Cek format gambar
$ext = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
$allowedExt = ['jpg', 'jpeg', 'png', 'gif'];
if (!in_array($ext, $allowedExt)) {
$_SESSION['error'] = "Format gambar tidak valid! Gunakan JPG, JPEG, PNG, atau GIF.";
header("Location: ../artikel/tambah.php");
exit();
}
// Pindahkan file
if (!move_uploaded_file($gambarTmp, $targetFile)) {
$_SESSION['error'] = "Gagal mengunggah gambar!";
header("Location: ../artikel");
exit();
}
}
// **Cek apakah artikel sudah ada untuk id_user**
$cekArtikel = "SELECT id_artikel FROM artikel WHERE id_user = ?";
$stmt = $conn->prepare($cekArtikel);
$stmt->bind_param("i", $id_user);
$stmt->execute();
$stmt->bind_result($id_artikel);
$stmt->fetch();
$stmt->close();
if (!$id_artikel) {
// **Buat artikel baru**
$sqlArtikel = "INSERT INTO artikel (id_user) VALUES (?)";
$stmt = $conn->prepare($sqlArtikel);
$stmt->bind_param("i", $id_user);
if ($stmt->execute()) {
$id_artikel = $stmt->insert_id;
} else {
$_SESSION['error'] = "Gagal menyimpan artikel!";
header("Location: ../artikel");
exit();
}
$stmt->close();
}
// **Buat SEO baru setiap kali artikel baru**
$sqlSeo = "INSERT INTO seo_artikel (katakunci_seo, deskripsi_seo) VALUES (?, ?)";
$stmt = $conn->prepare($sqlSeo);
$stmt->bind_param("ss", $meta_keyword, $meta_deskripsi);
if ($stmt->execute()) {
$id_seo_artikel = $stmt->insert_id;
} else {
$_SESSION['error'] = "Gagal menyimpan data SEO!";
header("Location: ../artikel");
exit();
}
$stmt->close();
// **Simpan ke tabel detail_artikel**
$sqlDetail = "INSERT INTO detail_artikel (id_artikel, id_seo_artikel, judul_artikel, deskripsi_artikel, gambar_artikel, kategori, tanggal, slug)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = $conn->prepare($sqlDetail);
$stmt->bind_param("iissssss", $id_artikel, $id_seo_artikel, $judul, $konten, $gambarNama, $kategori, $tanggal, $slug);
if ($stmt->execute()) {
$_SESSION['success'] = "Data Artikel berhasil ditambahkan!";
unset($_SESSION['old_input']);
} else {
$_SESSION['error'] = "Gagal menyimpan detail artikel!";
}
$stmt->close();
$conn->close();
header("Location: ../artikel");
exit();
}
?>