90 lines
3.2 KiB
PHP
90 lines
3.2 KiB
PHP
<?php
|
|
require_once 'db/config.php';
|
|
|
|
$q = trim($_GET['q'] ?? '');
|
|
$category_id = $_GET['category'] ?? null;
|
|
|
|
$pageTitle = "Risultati della ricerca";
|
|
$pageDescription = "Servizi trovati per la tua ricerca.";
|
|
|
|
$results = [];
|
|
$error = null;
|
|
|
|
try {
|
|
$pdo = db();
|
|
$sql = "SELECT s.*, u.first_name, u.last_name, sc.name as category_name
|
|
FROM services s
|
|
JOIN users u ON s.provider_id = u.id
|
|
JOIN service_categories sc ON s.category_id = sc.id
|
|
WHERE u.user_type = 'provider'";
|
|
|
|
$params = [];
|
|
|
|
if (!empty($q)) {
|
|
$sql .= " AND (s.name LIKE ? OR s.description LIKE ?)";
|
|
$params[] = "%$q%";
|
|
$params[] = "%$q%";
|
|
}
|
|
|
|
if (!empty($category_id)) {
|
|
$sql .= " AND s.category_id = ?";
|
|
$params[] = $category_id;
|
|
}
|
|
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute($params);
|
|
$results = $stmt->fetchAll();
|
|
|
|
} catch (PDOException $e) {
|
|
$error = "Errore del database: " . $e->getMessage();
|
|
}
|
|
|
|
require_once '_header.php';
|
|
?>
|
|
<main class="container my-5">
|
|
<h1 class="mb-4">Ricerca servizi</h1>
|
|
|
|
<div class="card mb-4">
|
|
<div class="card-body">
|
|
<form action="search.php" method="GET" class="row g-3">
|
|
<div class="col-md-8">
|
|
<input type="text" class="form-control" name="q" placeholder="Cosa stai cercando?" value="<?= htmlspecialchars($q) ?>">
|
|
</div>
|
|
<div class="col-md-4">
|
|
<button type="submit" class="btn btn-primary w-100">Cerca di nuovo</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<?php if ($error): ?>
|
|
<div class="alert alert-danger"><?= htmlspecialchars($error) ?></div>
|
|
<?php elseif (empty($results)): ?>
|
|
<div class="alert alert-info">Nessun servizio trovato per la tua ricerca.</div>
|
|
<?php else: ?>
|
|
<p class="text-muted">Trovati <?= count($results) ?> risultati.</p>
|
|
<div class="row g-4">
|
|
<?php foreach ($results as $service): ?>
|
|
<div class="col-md-6 col-lg-4">
|
|
<div class="card h-100">
|
|
<div class="card-body d-flex flex-column">
|
|
<h5 class="card-title"><?= htmlspecialchars($service['name']) ?></h5>
|
|
<h6 class="card-subtitle mb-2 text-muted"><?= htmlspecialchars($service['category_name']) ?></h6>
|
|
<p class="card-text flex-grow-1"><?= nl2br(htmlspecialchars(substr($service['description'], 0, 100))) . (strlen($service['description']) > 100 ? '...' : '') ?></p>
|
|
<p class="fs-5 fw-bold text-end mb-3">€ <?= htmlspecialchars(number_format($service['price'], 2, ',', '.')) ?></p>
|
|
<div class="mt-auto">
|
|
<p class="mb-1"><small>Offerto da: <?= htmlspecialchars($service['first_name'] . ' ' . $service['last_name']) ?></small></p>
|
|
<a href="#" class="btn btn-primary w-100 disabled">Vedi Dettagli</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
</main>
|
|
<?php
|
|
require_once '_footer.php';
|
|
?>
|