여분필드를 한번에 불러오는 방법

여분필드를 한번에 불러오는 방법

QA

여분필드를 한번에 불러오는 방법

본문

게시판 예시로 

옵션 선택창1 - 옵션 선택창 2

 

이렇게 2개의 선택창이 있습니다.

 

옵션 선택창 1 에는 회원에 등록되어있는 모든  mb_1를 불러오도록 하고싶고

 

옵션 선택창 2에는 옵션1에서 선택한 항목에 따라 mb_2를 불러오게 하고싶습니다.


예시로 

회원1 mb_1= 사과 mb_2=나무

회원2 mb_1= 사과 mb_2=꽃

회원3 mb_1= 오렌지 mb_2=돌

이런식으로 되어있으면 

옵션선택창1  
사과
오렌지

 

여기서 사과를 선택하면 

옵션선택창2
나무

 

옵션선택창1 에서 오렌지를 선택하면

 

옵션선택창2

 

이렇게 출력되도록 하고싶은데 방법 없을까요?

 

이 질문에 댓글 쓰기 :

답변 2

다음 코드가 도움이 될지 모르겠습니다.


<?php
$opt_1 = '';
$sql = " SELECT DISTINCT mb_1 opt_1 FROM {$g5['member_table']} ";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
    $opt_1 .= '<option value="' . $row['opt_1'] . '">' . $row['opt_1'] . '</option>';
}
$opt_1 = '<select name="opt_1">' . $opt_1 . '</select>';
 
$opt_1_selected = empty($_REQUEST['opt_1']) == false ? $_REQUEST['opt_1'] : '';
if (empty($opt_1_selected) == false) {
    $opt_2 = '';
    $sql = " SELECT DISTINCT mb_2 opt_2 FROM {$g5['member_table']} WHERE mb_1 = {$opt_1_selected} ";
    $result = sql_query($sql);
    while ($row = sql_fetch_array($result)) {
        $opt_2 .= '<option value="' . $row['opt_2'] . '">' . $row['opt_2'] . '</option>';
    }
    $opt_2 = '<select name="opt_2">' . $opt_2 . '</select>';
}
?>

옵션1에서 선택한 값에 따라 옵션2의 값이 변경되어야하는 부분인걸로 생각됩니다.

마치 예전에 주소록 보시면 구를 선택하면 동을 선택하듯이 말이죠..

이런경우 javascript ajax 를 활용하여 적용하시면될꺼 같습니다.

아래 예제 코드를 한번 안내드리오니 참고 하셔서 응용적용을 해보시길 바라겠습니다.

 

// 옵션 선택 예시


<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>옵션 선택 예시</title>
</head>
<body>
  <form>
    <label for="option1">옵션 선택창 1:</label>
    <select id="option1" name="option1">
      <option value="">선택하세요</option>
      <!-- 옵션1 데이터가 여기 로드됨 -->
    </select>
    <label for="option2">옵션 선택창 2:</label>
    <select id="option2" name="option2">
      <option value="">옵션1을 먼저 선택하세요</option>
      <!-- 옵션2 데이터가 여기 로드됨 -->
    </select>
  </form>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  <script>
    $(document).ready(function() {
      // 페이지 로드 시 옵션1 데이터를 불러오기
      $.ajax({
        url: 'get_options.php',
        type: 'GET',
        dataType: 'json',
        success: function(data) {
          const option1 = $('#option1');
          data.option1.forEach(function(item) {
            option1.append(new Option(item, item));
          });
        }
      });
      // 옵션1 선택 변경 시 옵션2 데이터 불러오기
      $('#option1').change(function() {
        const selectedOption1 = $(this).val();
        $.ajax({
          url: 'get_options.php',
          type: 'GET',
          dataType: 'json',
          data: { option1: selectedOption1 },
          success: function(data) {
            const option2 = $('#option2');
            option2.empty();
            if (data.option2.length > 0) {
              data.option2.forEach(function(item) {
                option2.append(new Option(item, item));
              });
            } else {
              option2.append(new Option('해당 옵션에 대한 결과가 없습니다', ''));
            }
          }
        });
      });
    });
  </script>
</body>
</html>

 

// PHP 쪽 파일 부분


<?php
try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $option1 = isset($_GET['option1']) ? $_GET['option1'] : '';
    if ($option1 === '') {
        // 옵션1 데이터를 불러오기
        $stmt = $pdo->query("SELECT DISTINCT mb_1 FROM members");
        $option1_data = $stmt->fetchAll(PDO::FETCH_COLUMN);
        echo json_encode(['option1' => $option1_data]);
    } else {
        // 옵션2 데이터를 불러오기
        $stmt = $pdo->prepare("SELECT mb_2 FROM members WHERE mb_1 = :option1");
        $stmt->execute(['option1' => $option1]);
        $option2_data = $stmt->fetchAll(PDO::FETCH_COLUMN);
        echo json_encode(['option2' => $option2_data]);
    }
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
 

 

위에 소스코드는 참고용이오니...이부분을 참고 하셔서 적용하시면 도움이 되실겁니다.

해보시다 안되시면 쪽지주시면 도움드리겠습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 61,328
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT