exec(" CREATE TABLE IF NOT EXISTS faqs ( id INT AUTO_INCREMENT PRIMARY KEY, question_en VARCHAR(255) NOT NULL, answer_en TEXT NOT NULL, question_ar VARCHAR(255) DEFAULT NULL, answer_ar TEXT DEFAULT NULL, sort_order INT DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; "); if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['add_faq'])) { $questionEn = trim($_POST['question_en'] ?? ''); $answerEn = trim($_POST['answer_en'] ?? ''); $questionAr = trim($_POST['question_ar'] ?? ''); $answerAr = trim($_POST['answer_ar'] ?? ''); $sortOrder = (int)($_POST['sort_order'] ?? 0); if ($questionEn === '' || $answerEn === '') { $errors[] = 'Question and Answer (English) are required.'; } else { try { $stmt = db()->prepare("INSERT INTO faqs (question_en, answer_en, question_ar, answer_ar, sort_order) VALUES (?, ?, ?, ?, ?)"); $stmt->execute([ $questionEn, $answerEn, $questionAr !== '' ? $questionAr : null, $answerAr !== '' ? $answerAr : null, $sortOrder ]); $flash = 'FAQ added successfully.'; } catch (Throwable $e) { $errors[] = 'Failed to add FAQ: ' . $e->getMessage(); } } } elseif (isset($_POST['update_faq'])) { $faqId = (int)($_POST['faq_id'] ?? 0); $questionEn = trim($_POST['question_en'] ?? ''); $answerEn = trim($_POST['answer_en'] ?? ''); $questionAr = trim($_POST['question_ar'] ?? ''); $answerAr = trim($_POST['answer_ar'] ?? ''); $sortOrder = (int)($_POST['sort_order'] ?? 0); if ($faqId <= 0 || $questionEn === '' || $answerEn === '') { $errors[] = 'FAQ ID, Question, and Answer (English) are required.'; } else { try { $stmt = db()->prepare("UPDATE faqs SET question_en = ?, answer_en = ?, question_ar = ?, answer_ar = ?, sort_order = ? WHERE id = ?"); $stmt->execute([ $questionEn, $answerEn, $questionAr !== '' ? $questionAr : null, $answerAr !== '' ? $answerAr : null, $sortOrder, $faqId ]); $flash = 'FAQ updated successfully.'; $editFaqId = 0; } catch (Throwable $e) { $errors[] = 'Failed to update FAQ: ' . $e->getMessage(); } } } elseif (isset($_POST['delete_faq'])) { $faqId = (int)($_POST['faq_id'] ?? 0); if ($faqId <= 0) { $errors[] = 'Invalid FAQ selected.'; } else { try { $stmt = db()->prepare("DELETE FROM faqs WHERE id = ?"); $stmt->execute([$faqId]); $flash = 'FAQ deleted successfully.'; $editFaqId = 0; } catch (Throwable $e) { $errors[] = 'Failed to delete FAQ: ' . $e->getMessage(); } } } } $faqs = db()->query("SELECT * FROM faqs ORDER BY sort_order ASC, id DESC")->fetchAll(); $editingFaq = null; if ($editFaqId > 0) { foreach ($faqs as $faq) { if ((int)$faq['id'] === $editFaqId) { $editingFaq = $faq; break; } } } render_header('Manage FAQs', 'admin', true); ?>
Manage the Q&A list displayed on the public FAQ page.