셀렉트 할 때 다중값 입력하기

셀렉트 할 때 다중값 입력하기

QA

셀렉트 할 때 다중값 입력하기

본문

안녕하세요. 고수님들께 도움 좀 요청드립니다.

 

먼저 의도는 다음과 같습니다.

 

A(teacher)라는 게시판은 강사게시판입니다. 

강사의 이름과 전화번호, 거주지 등이 등록되어 있습니다.

 

B 게시판은 수업게시판입니다.

 

이 B 게시판에 수업을 등록하면서

여분필드1에 A 게시판에 등록된 강사의 이름

여분필드2에 A 게시판에 등록된 강사의 전화번호

여분필드3에 A 게시판에 등록된 강사의 거주지

를 자동으로 등록하고 싶습니다.

 

그래서 write.skin에 아래와 같이 작성하였습니다.

 


<?php 
    $write_table = "g5_write_teacher";
    $sql = "select wr_id, wr_subject, wr_4, wr_5 from {$write_table} order by wr_id desc ";
    $result = sql_query($sql);
?>
<select name="wr_1" id="wr_1" >
    <?php
        echo '<option value="">선택해주세요.</option>';
        while ($row = sql_fetch_array($result)) {
        echo '<option value="'.$row['wr_id'].'" '. ($write['wr_1'] == $row['wr_id'] ? 'selected=selected' : '') .'>'.$row['wr_subject'].'</option>';
        }
    ?>
</select>

위처럼 하니 A게시판의 강사의 이름(wr_subject)를 선택하면 wr_1에 wr_id 값이 잘 들어갑니다.

이때 wr_id 값과 함께 선택된 강사의 전번(wr_4)과 거주지(wr_5)를 동시에
wr_2, wr_3 에 넣고 싶습니다.


즉 정리해서 설명드리면

A게시판의 wr_id, wr_subject, wr_4, wr_5 의 값을 가져와서
B게시판의 wr_1, wr_2, wr_3, wr_4에 각각 넣고 싶습니다.

혹시나해서 아래 처럼 소스를 넣어 봤지만 입력되진 않았습니다.


<?php 
    $write_table = "g5_write_teacher";
    $sql = "select wr_id, wr_subject, wr_4, wr_5 from {$write_table} order by wr_id desc ";
    $result = sql_query($sql);
?>
<select name="wr_1" id="wr_1" >
    <?php
        echo '<option value="">선택해주세요.</option>';
        while ($row = sql_fetch_array($result)) {
        echo '<option value="'.$row['wr_id'].'" '. ($write['wr_1'] == $row['wr_id'] ? 'selected=selected' : '') .'>'.$row['wr_subject'].'</option>';
        echo '<input type="hidden" name="'.$write['wr_2'].'" value="'.$row['wr_subject'].'">';
        echo '<input type="hidden" name="'.$write['wr_3'].'" value="'.$row['wr_4'].'">';
        echo '<input type="hidden" name="'.$write['wr_4'].'" value="'.$row['wr_5'].'">';
        }
    ?>
</select>


위 소스를 어떻게 수정하면 될까요?

 

감사합니다~

이 질문에 댓글 쓰기 :

답변 3

하단에 고민한 소스는 기대한 작동이 되지 않는 코드입니다.

사용자가 셀렉트 박스에서 강사를 선택하기 전에는,

(선택예정인) 강사의 전화번호, 거주지 정보를 가져올 수 없어서 입니다.

전체적인 재검토가 필요합니다.

echo '<input type="hidden" name="'.$write['wr_2'].'" 도

echo '<input type="hidden" name="wr_2" 로 하는게 맞습니다.

 

로직은 크게 2가지 방향이 있습니다.

1) 셀렉트 박스에서 강사 선택시, chagne 이벤트에서 ajax 로 선택된 강사의 wr_subject, wr_4, wr_5 값을, 히든 필드 wr_2, wr_3, wr_4 에 동적으로 가져오기

 

2) 수업 등록폼에는 상단의 소스까지만 적용하고, 

write_update.head.skin.php 를 새로 만들어,

wr_2, wr_3, wr_4 를 wr_1 에 저장된 강사 wr_id 값으로 새로 sql 문 실행을 통해 저장

 

이 중 2)의 방법을 사용하면 대략 다음과 같습니다.

write.skin.php (상단의 소스 기반입니다.)


<?php 
    $write_table = "g5_write_teacher";
    $sql = "select wr_id, wr_subject, wr_4, wr_5 from {$write_table} order by wr_id desc ";
    $result = sql_query($sql);
?>
<select name="wr_1" id="wr_1" >
    <?php
        echo '<option value="">선택해주세요.</option>';
        while ($row = sql_fetch_array($result)) {
        echo '<option value="'.$row['wr_id'].'" '. ($write['wr_1'] == $row['wr_id'] ? 'selected=selected' : '') .'>'.$row['wr_subject'].'</option>';
        }
    ?>    
</select>
<input type="hidden" name="wr_2" value="<?php echo $wr_2 ?>">
<input type="hidden" name="wr_3" value="<?php echo $wr_3 ?>">
<input type="hidden" name="wr_4" value="<?php echo $wr_4 ?>">

 

write_update.head.skin.php

(DB 에 저장되기 직전, wr_1 에 저장된 강사의 wr_id 값을 활용하여 wr_2 ~ wr_4 값을 채웁니다.)


<?php
if (!defined('_GNUBOARD_')) exit;
$teacher_table = "g5_write_teacher";
$sql = "
    select wr_subject, wr_4, wr_5 
      from {$teacher_table}
     where wr_id = '{$wr_1}'
";
$row = sql_fetch($sql);
$wr_2 = $row['wr_subject']; // 강사의 이름
$wr_3 = $row['wr_4']; // 강사의 전화번호
$wr_4 = $row['wr_5']; // 강사의 거주지

ajax 로 처리한다면,


<script>
$(function() {
  $('#wr_1').on('change', function() {
    .post("ajax_get_teacher.php", wr_id : $(this).val(), function(data) {
        $('input[name=wr_2]').val(data);
    });
  });
});
</script>

ajax_get_teacher.php

echo "전화번호";


식입니다.

1) ajax 처리에 대한 부분 https://www.w3schools.com/jquery/ajax_post.asp

2) jquery select box change 에 대한 부분 https://m.blog.naver.com/PostView.nhn?blogId=chsmanager&logNo=220269409239&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

3) jquery 에서 input element 값 할당/변경에 대한 부분 https://stackoverflow.com/a/11847676

등에 대한 이해가 필요합니다.

복잡한 내용도 아닌데 질문을 쉽게 하기 위하여 A,B 게시판을 예로....

답변을 보아도 적용할 줄 모른다면 실제 사용할 내용으로 질문을 해야 쉽게 적용을 할 수 잇을텐데요

 

위처럼 하니 A게시판의 강사의 이름(wr_subject)를 선택하면 wr_1에 wr_id 값이 잘 들어갑니다. <--이렇게 질문하고서 영카트에 적용하겠다니 어불성설입니다

그리고 ajax 필요업습니다

저장할 때 추출해온 값을 바로 저장해버리면 되니까요

 

form 수정

<select name="wr_1" id="wr_1" >  수정

<select name="it_1">

 

echo '<option value="'.$row['wr_id'].'" '. ($write['wr_1'] == $row['wr_id'] ? 'selected=selected' : '') .'>'.$row['wr_subject'].'</option>';  수정

echo '<option value="'.$row['wr_id'].'" '. ($it['it_1'] == $row['wr_id'] ? 'selected=selected' : '') .'>'.$row['wr_subject'].'</option>';

///////////////////////////////////////////

상품등록은 itemformupdate.php에서 이루어지니 이 화일 상단 적당한 곳에

아래 코드를 넣으면 됩니다

 

$teacher_table = "g5_write_teacher";
$sql = "select wr_subject, wr_4, wr_5 from {$teacher_table} where wr_id = '{$it_1}' ";
$row = sql_fetch($sql);
$it_2 = $row['wr_subject']; // 강사의 이름
$it_3 = $row['wr_4']; // 강사의 전화번호
$it_4 = $row['wr_5']; // 강사의 거주지

감사합니다 균이님.
그대로 적용했더니 잘 동작합니다.

균이님께서 보기엔 제가 답답해 보이실 거에요.
그런데 저는 제가 얼마나 답답하겠습니까 ㅎㅎ
저거 가지고 4시간 넘게 헤맸습니다. 으흐흑.
질문할 때도, 뭐라고 질문해야 할지 제목을 뭐라고 해야할지 10분도 넘게 고민한 결과가 저겁미다 ㅠㅠ

PHP나 프로그램을 전혀 모르는 상태에서 공개된 소스 뜯어 붙이는 초보라서 그렇습니다.

덕분에 잘 적용했습니다.
감사합니다.

편한 저녁 되세요^^

초보인 제가 적용할 수 있는 소스는 아닌 것 같습니다 <----???

위 답변대로 하면 되는데 적용할 수 없다는 말은???

 

스킨폴더에 write_update.head.skin.php 화일을 만들어서 위 답변 소스를 복사해 넣으세요

질문 소스코드 첫번째 외에 다른 부분은 일체 추가할 필요없습니다

<?php
if (!defined('_GNUBOARD_')) exit;
$teacher_table = "g5_write_teacher";
$sql = "select wr_subject, wr_4, wr_5 from {$teacher_table} where wr_id = '{$wr_1}' ";
$row = sql_fetch($sql);
$wr_2 = $row['wr_subject']; // 강사의 이름
$wr_3 = $row['wr_4']; // 강사의 전화번호
$wr_4 = $row['wr_5']; // 강사의 거주지

?>

그런데 질문대로 하자면 아래 처럼 되겠습니다

 

여분필드1에 A 게시판에 등록된 강사의 이름---> $wr_1= 강사의 이름 <==> $row['wr_subject']; ???

여분필드2에 A 게시판에 등록된 강사의 전화번호 ---> $wr_2 = 강사의 전화번호 필드

여분필드3에 A 게시판에 등록된 강사의 거주지 --> $wr_3 = 강사의 거주지  필드

를 자동으로 등록하고 싶습니다.

안녕하세요 균이님.
제가 질문을 드릴 떄 이해하기 쉽게하려고 게시판 2개를 이용한다고 예를 들었는데
사실은 A게시판에 등록된 강사의 데이타값을
영카트의 상품등록페이지 (/adm/shop_admin/itemform.php) 파일에서 받아오려고 하다보니
write_update.head.skin.php 파일을 이용할 수가 없어서.... 적용할 수 없다....라고 말씀드렸습니다. ㅠ_ㅠ

결국 ajax방식으로 소스를 짜야 하는 것 같습니다만....아는게 없네요 으흐흑. ㅠ_ㅠ

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

회원로그인

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