테스트 사이트 - 개발 중인 베타 버전입니다

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

마징가루 1년 전 조회 27,983

게시판 예시로  옵션 선택창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개

복스리
1년 전

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

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

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

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

 

// 옵션 선택 예시

</p>

<p><!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></p>

<p>    <label for="option2">옵션 선택창 2:</label>

    <select id="option2" name="option2">

      <option value="">옵션1을 먼저 선택하세요</option>

      <!-- 옵션2 데이터가 여기 로드됨 -->

    </select>

  </form></p>

<p>  <script src="<a href="https://code.jquery.com/jquery-3.6.0.min.js"></script>" target="_blank" rel="noopener noreferrer">https://code.jquery.com/jquery-3.6.0.min.js"></script></a>

  <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));

          });

        }

      });</p>

<p>      // 옵션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></p>

<p>

 

// PHP 쪽 파일 부분

</p>

<p><?php

try {

    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);

    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);</p>

<p>    $option1 = isset($_GET['option1']) ? $_GET['option1'] : '';</p>

<p>    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();

}

 </p>

<p>

 

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

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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

1년 전

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

</p>

<p><?php</p>

<p>$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>';</p>

<p> </p>

<p>$opt_1_selected = empty($_REQUEST['opt_1']) == false ? $_REQUEST['opt_1'] : '';</p>

<p>if (empty($opt_1_selected) == false) {</p>

<p>    $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>';</p>

<p>}</p>

<p>?></p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인