44 lines
1.6 KiB
PHP
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]
|
|
]); |