prepare("DELETE FROM $section WHERE id = ?")->execute([$id]); header("Location: manage.php?section=$section"); exit; } // SAVE / UPDATE $success = false; if ($_SERVER['REQUEST_METHOD'] === 'POST') { if ($section === 'config') { foreach ($_POST as $k => $v) { if ($k === 'admin_password' || $k === 'id') continue; $stmt = $db->prepare("INSERT OR REPLACE INTO config (key_name, value_text) VALUES (?, ?)"); $stmt->execute([$k, $v]); } // Handle Config Images foreach ($_FILES as $key => $file) { if ($file['error'] === UPLOAD_ERR_OK) { $ext = pathinfo($file['name'], PATHINFO_EXTENSION); $filename = "uploads/" . $key . "_" . time() . "." . $ext; if (move_uploaded_file($file['tmp_name'], "../" . $filename)) { $db->prepare("INSERT OR REPLACE INTO config (key_name, value_text) VALUES (?, ?)")->execute([$key, $filename]); } } } $success = true; } else { // Add or Edit Item $is_edit = isset($_POST['id']); $fields = []; $values = []; // Define fields based on section (same logic as before) $expected_fields = []; if($section=='stats') $expected_fields=['label','value','unit','sort_order']; if($section=='services') $expected_fields=['title','icon','description','sort_order']; if($section=='founders') $expected_fields=['name','role','image_path','sort_order']; if($section=='cases') $expected_fields=['title','stats_text','role_text','tags','image_path','sort_order']; if($section=='pricing') $expected_fields=['name','price','features','is_recommended','sort_order']; if($section=='faq') $expected_fields=['question','answer','sort_order']; if($section=='solutions') $expected_fields=['title','description','sort_order']; if($section=='goals') $expected_fields=['title','description','sort_order']; if($section=='roadmap') $expected_fields=['phase','detail','sort_order']; if($section=='bottom_stats') $expected_fields=['value','label','sort_order']; if($section=='about_gallery') $expected_fields=['image_path','sort_order']; foreach ($expected_fields as $f) { if (isset($_POST[$f])) { $fields[] = $f; $values[] = $_POST[$f]; } } // Handle File Upload for Item if (in_array('image_path', $expected_fields) && isset($_FILES['image_path']) && $_FILES['image_path']['error'] === UPLOAD_ERR_OK) { $ext = pathinfo($_FILES['image_path']['name'], PATHINFO_EXTENSION); $filename = "uploads/" . $section . "_" . time() . "." . $ext; if (move_uploaded_file($_FILES['image_path']['tmp_name'], "../" . $filename)) { if(!in_array('image_path', $fields)) { $fields[] = 'image_path'; $values[] = $filename; } else { $key = array_search('image_path', $fields); $values[$key] = $filename; } } } if ($is_edit) { $id = $_POST['id']; $set = []; foreach ($fields as $index => $field) { $set[] = "$field = ?"; } $sql = "UPDATE $section SET " . implode(', ', $set) . " WHERE id = ?"; $values[] = $id; $db->prepare($sql)->execute($values); } else { $placeholders = array_fill(0, count($fields), '?'); $sql = "INSERT INTO $section (" . implode(', ', $fields) . ") VALUES (" . implode(', ', $placeholders) . ")"; $db->prepare($sql)->execute($values); } } if ($section !== 'config') { header("Location: manage.php?section=$section"); exit; } } // FETCH DATA if ($section === 'config') { $items = []; try { $rows = $db->query("SELECT key_name, value_text FROM config")->fetchAll(PDO::FETCH_KEY_PAIR); $items = $rows; } catch (Exception $e) { die("Errore database config: " . $e->getMessage()); } } else { try { $items = $db->query("SELECT * FROM $section ORDER BY sort_order ASC")->fetchAll(); } catch (Exception $e) { die("Errore database $section: " . $e->getMessage()); } } ?>