여분필드 리스트페이지에서 검색 질문 드립니다.
본문
안녕하세요 질문좀 드리겠습니다.
지금 wr_8 셀렉트박스 내용 클릭시 해당 게시물만 나오게끔 되어있는 상태 입니다.
그런데 이거를
wr_1 wr_2 select 총 3개를 선택 후 검색 하게 하고 싶은데
방법좀 알려주시면 감사하겠습니다.
<form name="fsearch" method="get">
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
<input type="hidden" name="sca" value="<?php echo $sca ?>">
<input type="hidden" name="sop" value="and">
<input type="hidden" name="sfl" value="wr_8">
<select name="stx" onchange="this.form.submit()">
<option value="">시도</option>
<option value="EU">EU</option>
<option value="Resseller">Resseller</option>
</select>
</form>
답변 3
<form name="fsearch" method="get">
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
<input type="hidden" name="sca" value="<?php echo $sca ?>">
<input type="hidden" name="sop" value="and">
<input type="hidden" name="sfl" value="wr_8">
<select name="stx" onchange="this.form.submit()">
<option value="">시도</option>
<option value="EU" <?php echo ($_GET['stx'] == 'EU') ? 'selected' : ''; ?>>EU</option>
<option value="Reseller" <?php echo ($_GET['stx'] == 'Reseller') ? 'selected' : ''; ?>>Reseller</option>
</select>
<select name="wr_1" onchange="this.form.submit()">
<option value="">wr_1 선택</option>
<option value="Value1" <?php echo ($_GET['wr_1'] == 'Value1') ? 'selected' : ''; ?>>Value1</option>
<option value="Value2" <?php echo ($_GET['wr_1'] == 'Value2') ? 'selected' : ''; ?>>Value2</option>
</select>
<select name="wr_2" onchange="this.form.submit()">
<option value="">wr_2 선택</option>
<option value="Option1" <?php echo ($_GET['wr_2'] == 'Option1') ? 'selected' : ''; ?>>Option1</option>
<option value="Option2" <?php echo ($_GET['wr_2'] == 'Option2') ? 'selected' : ''; ?>>Option2</option>
</select>
*폼 수정: wr_1, wr_2, wr_8 각각의 값을 선택할 수 있도록 3개의 select 박스를 추가.
*서버로 전달 방식: get 방식으로 선택된 값들을 전달해야 하며, 각각의 필드 이름, 값을 구분
*백엔드 처리: 전달된 값들을 기준으로 AND 조건으로 조합하여 검색 쿼리를 작성.
HTML 폼의 수정 예제(search_form.html)
<form name="fsearch" method="get">
<!-- 기본 설정 -->
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
<input type="hidden" name="sca" value="<?php echo $sca ?>">
<input type="hidden" name="sop" value="and">
<!-- wr_1 선택 -->
<select name="wr_1">
<option value="">wr_1 선택</option>
<option value="value1">Value 1</option>
<option value="value2">Value 2</option>
</select>
<!-- wr_2 선택 -->
<select name="wr_2">
<option value="">wr_2 선택</option>
<option value="value1">Value 1</option>
<option value="value2">Value 2</option>
</select>
<!-- wr_8 선택 -->
<select name="wr_8">
<option value="">wr_8 선택</option>
<option value="EU">EU</option>
<option value="Resseller">Resseller</option>
</select>
<!-- 검색 버튼 -->
<button type="submit">검색</button>
</form>
<select name="wr_1">
<option value="">wr_1 선택</option>
<option value="value1">Value 1</option>
<option value="value2">Value 2</option>
</select>
wr_1, wr_2, wr_8 값이 각각 전달될 수 있도록 설계하였으므로, (서버에서의 처리)
PHP에서는 각 값이 있는지 확인하고, 조건을 조합하여 검색 쿼리를 작성
/bbs/search.php(그누보드 경우)
<?php
try {
// 데이터베이스 연결
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password', [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]);
// 조건 초기화
$fields = ['wr_1', 'wr_2', 'wr_8'];
$allowed_values = [
'wr_1' => ['value1', 'value2'],
'wr_2' => ['value1', 'value2'],
'wr_8' => ['EU', 'Resseller']
];
$conditions = [];
$params = [];
// 유효성 검사 및 조건 추가
foreach ($fields as $field) {
if (!empty($_GET[$field]) && in_array($_GET[$field], $allowed_values[$field])) {
$conditions[] = "{$field} = :{$field}";
$params[":{$field}"] = $_GET[$field];
}
}
// 조건 조합
$where_clause = $conditions ? "WHERE " . implode(" AND ", $conditions) : "";
// 쿼리 실행
$sql = "SELECT * FROM your_table {$where_clause}";
$stmt = $pdo->prepare($sql);
foreach ($params as $key => $value) {
$stmt->bindValue($key, $value);
}
$stmt->execute();
// 결과 출력
$results = $stmt->fetchAll();
if ($results) {
foreach ($results as $row) {
echo "<p>" . htmlspecialchars($row['wr_subject']) . "</p>";
}
} else {
echo "<p>검색 결과가 없습니다.</p>";
}
} catch (PDOException $e) {
echo "데이터베이스 오류: " . htmlspecialchars($e->getMessage());
}
?>
운영 환경에 적합한 데이터베이스 정보와 테이블 구조 확인 후 사용하셔야 합니다.
!-->!-->!-->