prepare('DELETE FROM projects WHERE id = ?')->execute([$id]);
$message = '
Project deleted.
';
} catch (Exception $e) {
$message = 'Error: ' . htmlspecialchars($e->getMessage()) . '
';
}
}
// Handle update
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['edit_id'])) {
$id = intval($_POST['edit_id']);
$title = $_POST['title'] ?? '';
$description = $_POST['description'] ?? '';
$long_description = $_POST['long_description'] ?? '';
$project_url = $_POST['project_url'] ?? '';
$tags = $_POST['tags'] ?? '';
$image_url = $_POST['image_url'] ?? '';
// Handle image upload
if (isset($_FILES['image_file']) && $_FILES['image_file']['error'] === UPLOAD_ERR_OK) {
$ext = pathinfo($_FILES['image_file']['name'], PATHINFO_EXTENSION);
$filename = uniqid('img_', true) . '.' . strtolower($ext);
$target = '/var/www/alvnx.xyz/public_html/assets/' . $filename;
if (move_uploaded_file($_FILES['image_file']['tmp_name'], $target)) {
$image_url = 'assets/' . $filename;
} else {
$message = 'Image upload failed.
';
}
}
if (!$message) {
try {
$pdo = get_pdo();
$stmt = $pdo->prepare('UPDATE projects SET title=?, description=?, long_description=?, image_url=?, project_url=?, tags=? WHERE id=?');
$stmt->execute([$title, $description, $long_description, $image_url, $project_url, $tags, $id]);
$message = 'Project updated.
';
} catch (Exception $e) {
$message = 'Error: ' . htmlspecialchars($e->getMessage()) . '
';
}
}
}
// Fetch all projects
try {
$pdo = get_pdo();
$projects = $pdo->query('SELECT * FROM projects ORDER BY created_at DESC')->fetchAll();
} catch (Exception $e) {
$projects = [];
$message = 'Error: ' . htmlspecialchars($e->getMessage()) . '
';
}
// If editing, fetch project
$edit_project = null;
if (isset($_GET['edit'])) {
$id = intval($_GET['edit']);
foreach ($projects as $p) {
if ($p['id'] == $id) {
$edit_project = $p;
break;
}
}
}
?>
Manage Projects
Back to Home
Manage Projects
Add, edit, and manage your portfolio projects
= $message ?? '' ?>
= htmlspecialchars($project['title']) ?>
= htmlspecialchars($project['description']) ?>
= htmlspecialchars(trim($tag)) ?>