Files
TUGAS-SIG/api/search.php
T
superbia-17 2b42e822eb first commit
2026-06-06 23:34:20 +07:00

44 lines
1.6 KiB
PHP

<?php
// ============================================================
// api/search.php
// GET ?q=keyword → cari di locations, roads, kavlings
// ============================================================
require_once __DIR__ . '/config.php';
if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
http_response_code(405);
echo json_encode(['error' => 'Method tidak diizinkan']);
exit;
}
$q = trim($_GET['q'] ?? '');
if ($q === '') {
echo json_encode(['success' => true, 'data' => ['points'=>[],'roads'=>[],'kavlings'=>[]]]);
exit;
}
$pdo = getDB();
$like = '%' . $q . '%';
// Points
$stmt = $pdo->prepare("SELECT * FROM locations WHERE name LIKE :q OR phone LIKE :q2 ORDER BY name LIMIT 10");
$stmt->execute([':q' => $like, ':q2' => $like]);
$points = $stmt->fetchAll();
foreach ($points as &$r) { $r['lat']=(float)$r['lat']; $r['lng']=(float)$r['lng']; $r['is24h']=(int)$r['is24h']; }
// Roads
$stmt = $pdo->prepare("SELECT id,name,status,length_m,created_at FROM roads WHERE name LIKE :q OR status LIKE :q2 ORDER BY name LIMIT 8");
$stmt->execute([':q' => $like, ':q2' => $like]);
$roads = $stmt->fetchAll();
foreach ($roads as &$r) { $r['length_m']=(int)$r['length_m']; }
// Kavlings
$stmt = $pdo->prepare("SELECT id,name,status,area_m2,created_at FROM kavlings WHERE name LIKE :q OR status LIKE :q2 ORDER BY name LIMIT 8");
$stmt->execute([':q' => $like, ':q2' => $like]);
$kavlings = $stmt->fetchAll();
foreach ($kavlings as &$r) { $r['area_m2']=(int)$r['area_m2']; }
echo json_encode([
'success' => true,
'data' => ['points' => $points, 'roads' => $roads, 'kavlings' => $kavlings]
]);