728x90
<select>를 사용하면서 원했던 것은 대분류에 맞는 소분류 옵션들이 나타나는 것이었는데 문제가 있었다.
1. 하나의 페이지 안에서 php를 다시 실행시킬 방법이 없다.
(이미 한번 php로 대분류 목록을 뽑아왔는데 그 결과를 갖고 다시 php를 실행시킬 방법이 없었다.)
2. 그렇다면 javascript가 중간에서 징검다리가 되어줄 수 없는지
하지만 또 찾아보니 같은 페이지 내에서 javascript에서 php 결과를 이용할 방법이 없었다.
그래서 사용한 방법이 결국은 2번이지만 쿠키를 사용하는 것.
📌 생각한 순서는 이렇다.
1. php가 데이터 베이스에서 대분류 목록을 가져온다
2. javascript로 쿠키에 대분류 이름을 저장한다. 그리고 현재페이지를 새로고침 한다.
3. 저장된 대분류 이름 쿠키를 사용해서 php가 소분류 목록을 가져온다.
이렇게 했을 때 만약 쿠키설정이 첨부터 안되어있으면 소분류가 안나오는 문제가 있었는데,
홈에서 접근했을 때 쿠키에 초기화할 대분류 이름을 저장해놓도록 설정하여 해결하였다.
(search.php)
1. PHP
<form method="post" action="search_result.php">
대분류:
<?php
echo "<select name=\"cloth_large\" onchange=\"setCookie(this.value);\">";
$sql = "대분류를 database에서 가져오는 select문";
$res = mysqli_query($mysqli, $sql);
while($row = mysqli_fetch_array($res))
{
if($row['large_category']==$_COOKIE['large_category']){
echo "<option selected value=" .$row['large_category']. ">" . $row['large_category'] . "</option>";
}else{
echo "<option value=" .$row['large_category']. ">" . $row['large_category'] . "</option>";
}
}
echo "</select>";
?>
2. Javascript
<script>
function setCookie(value){
document.cookie=`large_category=${value}`; //쿠키 설정
window.location.assign('search.php'); // 새로고침
}
</script>
3. PHP
소분류:
<?php
echo "<select name=\"cloth_small\">";
$compare = $_COOKIE["large_category"];
$sql = "대분류에 맞는 소분류 가져오는 select문";
echo $sql;
$res = mysqli_query($mysqli, $sql);
while($row = mysqli_fetch_array($res))
{
echo "<option value=" .$row['small_category']. ">" . $row['small_category'] . "</option>";
}
mysqli_close($mysqli);
echo "</select>"
?>
</form>
대분류 선택에 따라 소분류가 달라지는 모습.
'project' 카테고리의 다른 글
[Knock/Knock] 검색 성능 개선 (0) | 2022.04.04 |
---|---|
[Gymt] react-native와 Firebase 연결 (0) | 2022.01.06 |
[감정인식 챗봇 스피커 '버디' 프로젝트] 데이터 전처리와 KoBert (0) | 2021.11.14 |
[패션 정보 웹] 쇼핑몰 크롤링 (0) | 2021.11.11 |
[Gymt] (react-native) 내 정보 (feat. 터치 차단 & 리스트 중 Select) (0) | 2021.08.04 |