136 lines
4.4 KiB
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();
|
|
}
|
|
?>
|