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

Edit Project

No image

Separate tags with commas

Cancel