주문내역에서 회원 여분필드 mb_1 검색하면 한개만 나옵니다 다 나오게 부탁드립니다.
본문
지난번 질답으로 도움받아서
orderlist.php 주문내역 파일에 회원 여유필드 mb_1이 출력되도록 사용하고 있습니다.
이번에는 orderlist.php 주문내역에서 추가된 mb_1이 검색되도록 하고 싶습니다.
질문답변 검색해서 다른 회원님 글을 참조해서 닉네임 검사하는 소스를 변형해서 넣었습니다.
$sql_search = "";
if ($search != "") {
if ($sel_field != "") {
if ($sel_field == 'mb_1'){
$res = sql_fetch("select mb_id from {$g5['member_table']} where mb_1 like '%".$search."%'");
$where[] = " mb_id = '{$res['mb_id']}' ";
}else{
$where[] = " $sel_field like '%$search%' ";
}
}
if ($save_search != $search) {
$page = 1;
}
}
검색
<option value="mb_1" <?php echo get_selected($sel_field, 'mb_1'); ?>>친구</option>
이렇게 넣었는데... 검색하면
나오긴 나오는데 딱 1개만 나옵니다.
같은 값을 가진 회원이 수십명이 있는데 딱 한사람만 검색되어 나옵니다.
같은 값을 가진 회원이 검색창이 다 나올 수 있도록 봐 주셨으면 합니다.
감사합니다.
답변 2
$sql_common = " from {$g5['g5_shop_order_table']} $sql_search ";
을
$sql_common = " from {$g5['g5_shop_order_table']} T1 left join {$g5['member_table']} T2 on T1.mb_id= T2.mb_id $sql_search ";
로 수정하시고
<option value="T2.mb_1" <?php echo get_selected($sel_field, 'T2.mb_1'); ?>>친구</option>
이런식으로 하면 되지 않을까요?
$where이 결국 $sql로 묶어서 선언하셨겠죠?
그러면 아래와 같이 option을 for문으로 돌리셔야 배열이 나오겠죠.
<?php
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++) {
?>
<option value="mb_1" <?php echo get_selected($sel_field, 'mb_1'); ?>>친구</option>
<?php } ?>
질문하신 의도가 이게 맞는지 모르겠지만..
혹시 for문을 돌리셨는데도 그러하다면 $sql에 limit가 설정되어 있는지도 확인해보세요.
!-->