$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(); } ?>