connect_error) { die("Connection failed: " . $conn->connect_error); } if (!$conn->set_charset("utf8mb4")) { throw new Exception("文字コード設定失敗: " . $conn->error); } // 検索クエリの構築 $sql = "SELECT * FROM projects WHERE is_public = 1"; $params = []; if (!empty($search_query)) { $sql .= " AND (project_name LIKE ? OR description LIKE ?)"; $search_param = "%$search_query%"; $params = array_merge($params, [$search_param, $search_param]); } // ソート方法 switch ($sort) { case 'stars': $sql .= " ORDER BY stars DESC"; break; case 'views': $sql .= " ORDER BY views DESC"; break; case 'custom': // カスタム数式 (例: stars * 2 + views) $sql .= " ORDER BY (stars * 2 + views) DESC"; break; default: // デフォルト (関連性スコア) if (!empty($search_query)) { $sql .= " ORDER BY (CASE WHEN project_name LIKE ? THEN 3 WHEN description LIKE ? THEN 2 ELSE 1 END) DESC"; $exact_param = "$search_query%"; $params = array_merge($params, [$exact_param, $exact_param]); } else { $sql .= " ORDER BY created_at DESC"; } } $stmt = $conn->prepare($sql); // パラメータをバインド if (!empty($params)) { $types = str_repeat('s', count($params)); $stmt->bind_param($types, ...$params); } $stmt->execute(); $result = $stmt->get_result(); $projects = $result->fetch_all(MYSQLI_ASSOC); $conn->close(); ?> プロジェクト検索 - Scratch School

プロジェクトを探す

関連順 星の数 閲覧数 おすすめ

プロジェクトが見つかりませんでした

...

by

👁️