PHP 관련 질문 드립니다.
본문
https://ystest.homweb.co.kr/page/page05_02_04.php
현제 여기서 보면 전체 검색을 하게 되면 차수 회의명 일자가 중복되서 출력이 되는데요 혹시 이거 어떻게 해결을 하면 좋을까요
혹시 몰라서 소스 올려 드립니다.
중복으로 출력 되는것만 해결을 하면 좋을텐데 제가 PHP에 너무 약하다 보니 본이 아니게 도움을 요청 하게 되었습니다.
답변 주시면 정말 감사 드리겠습니다.
혹시나 FTP정보가 필요하시면 말씀 주시면 드리겠습니다.
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$ROOT_DIR = "../";
if(empty($daesu) || $daesu == ""){$daesu = $now_daesu;}
include_once(G5_THEME_PATH.'/head.php');
?>
<link rel="stylesheet" href="<?=G5_THEME_URL?>/pages/style.css">
<h4>상세검색</h4>
<div id="form_skin">
<form name="searchform" action="?_csrf=3837c18d-bfc2-4cf2-b8b8-99d360d1ab61" onsubmit="return speakerchk(this);">
<input type="hidden" name="mode" value="sch" />
<fieldset>
<legend>색인어 검색</legend>
<ul class="con_box">
<li class="con">
<p class="title"><label for="daesu">대수구분</label></p>
<p class="details">
<select name="daesu" id="daesu" onchange="change( this.value);" >
<option value="0" title="전체" selected>전체</option>
<?php for($ii=$now_daesu; $ii>0; $ii--) {
if( $ii== $daesu) $checked='selected'; else $checked='';
echo '<option value="',$ii,'" ',$checked,' >',$ii,'대</option>';
} ?>
</select>
</p>
</li>
<li class="con">
<p class="title"><label for="session">회기</label></p>
<p class="details">
<input type="text" name="session" id="session" title="회기" placeholder="숫자만 입력" value="<?=$session?>" />
</p>
</li>
<li class="con">
<p class="title"><label for="committeeCode">회의구분</label></p>
<p class="details">
<select name="fcode" id="committeeCode">
<option value="%" <?=($fcode == "%")?"selected='selected'":""?> title="전체" >전 체</option>
<option value="A" <?=($fcode == "A")?"selected='selected'":""?> title="본회의">본회의</option>
<option value="C" <?=($fcode == "C")?"selected='selected'":""?> title="상임위원회">상임위원회</option>
<option value="E" <?=($fcode == "E")?"selected='selected'":""?> title="예산결산특별위원회">예산결산특별위원회</option>
<option value="G" <?=($fcode == "G")?"selected='selected'":""?> title="특별위원회" >특별위원회</option>
<option value="H" <?=($fcode == "H")?"selected='selected'":""?>title="행정사무감사" >행정사무감사</option>
</select>
</p>
</li>
<?/*
<li class="con">
<p class="title"><label for="startDay">기간</label></p>
<p class="details">
<input type="text" name="startDay" value="<?=$startDay?>" id="startDay" class="datepicker" title="첫번째 날자입력 2021.01.01" placeholder="20211201">부터
<input type="text" name="endDay" value="<?=$endDay?>" id="endDay" class="datepicker" title="두번쨰 날자입력" placeholder="20211231">까지
</p>
</li>
*/?>
<li class="con">
<p class="title"><label for="councilor">의원명</label></p>
<p class="details">
<select name="fmcode" id="councilor" title="의원선택">
<option value="x">++ 의원명(<?=$daesu;?>대)을 선택하세요 ++</option>
<?php
$sql = "select f_name, f_code from tbl_member where f_daesu = '{$daesu}' order by f_name asc ";
$res = sql_query($sql);
while($row = sql_fetch_array($res)) {
?>
<option value="<?=$row[f_code]?>-<?=$row[f_name]?>" <?=$fmcode==$row['f_code']."-".$row['f_name']? "selected=\"selected\"":""?> title="<?=$row[f_name]?>"><?=$row[f_name]?></option>
<? } ?>
</select>
</p>
</li>
<li class="con">
<p class="title"><label for="keyword">검색어</label></p>
<p class="details"><input type="text" name="keyword" value="<?=$keyword?>" id="keyword" title="검색어를 입력하세요" placeholder=" 검색어 입력"/></p>
</li>
</ul>
<!-- //검색폼종료 -->
<p class="btns">
<button type="submit" class="btn orange">검색</button>
<button type="reset" class="btn">취소</button>
</p>
</fieldset>
</form>
</div>
<!-- 검색결과 -->
<?php if( $mode=='sch') { ?>
<div id="search_result">
<p class="title">검색결과</p>
<div class="table_wrap">
<p class="table_info">※ 모바일환경에서는 좌우로 이동하여 내용(표)을 보실 수 있습니다.</p>
<table class="normal_list">
<caption>번호 대수 회수 차수 회의명 일자로 구성된 회의록 상세검색 결과 목록 표</caption>
<colgroup>
<col style="width: 8%" />
<col style="width: 12%" />
<col style="width: 14%" />
<col style="width: 12%" />
<col />
<col style="width: 23%" />
</colgroup>
<thead>
<tr>
<th scope="col" class="first-child">번호</th>
<th scope="col">대수</th>
<th scope="col">회수</th>
<th scope="col">차수</th>
<th scope="col">회의명</th>
<th scope="col" class="last-child">일자</th>
</tr>
</thead>
<tbody>
<?php
if( $startDay) {
$start_cond=substr( $startDay,0,4);
$tmp=substr( $startDay,4,2); if( $tmp) $start_cond.='.'.$tmp;
$tmp=substr( $startDay,6,2); if( $tmp) $start_cond.='.'.$tmp;
} else $start_cond='';
if( $endDay) {
$end_day=1+$endDay;
$end_cond=substr( $end_day,0,4);
$tmp=substr( $end_day,4,2); if( $tmp) $end_cond.='.'.$tmp;
$tmp=substr( $end_day,6,2); if( $tmp) $end_cond.='.'.$tmp;
} else $end_cond='';
if($mode == "sch" && $keyword <> "" && $fmcode <> "") {
if(preg_match("\|", $fmcode)) {
$ex = explode("|", $fmcode);
$fmcode = $ex[1];
$daesu = $ex[0];
}
include $ROOT_DIR."CLRecords/Inc/inc.stringcut.php";
include $ROOT_DIR."CLRecords/Retrieval/prg.speaker2-u8.php";
$param = "&cont=yes&tmpFile=".$tmpFile."&totalrec=".$totalrec."&fmcode=".urlencode($fmcode)."&fcode=".$session."&fcode=".$fcode."&keyword=".urlencode($keyword)."&mode=sch";
if( $startDay) $param .="&startDay=".$startDay;
if( $endDay) $param .="&endDay=".$endDay;
}
else if($mode == "sch" && $fmcode <> "") {
if(preg_match("\|", $fmcode)) {
$ex = explode("|", $fmcode);
$fmcode = $ex[1];
$daesu = $ex[0];
}
include $ROOT_DIR."CLRecords/Inc/inc.stringcut.php";
include $ROOT_DIR."CLRecords/Retrieval/prg.speaker1-u8.php";
$param = "&totalrec=".$totalrec."&daesu=".$daesu."&fmcode=".urlencode($fmcode)."&fcode=".$fcode."&fcode=".$session."&fcode=".$fcode."&mode=sch";
if( $startDay) $param .="&startDay=".$startDay;
if( $endDay) $param .="&endDay=".$endDay;
}
?>
</tbody>
</table>
</div>
<div id="pagingNav">
<? include $ROOT_DIR."CLRecords/Retrieval/prg.paging-u8.php"; ?>
</div>
</div>
<?php } ?>
<!-- 새롭게 디자인 끝 -->
<script type="text/javascript">
function speakerchk(form) {
/* if(form.fmcode.value == "x") {
alert("의원명을 선택하십시오.");
form.fmcode.focus();
return false;
} */
return true;
}
</script>
<script type="text/javascript">
//<![CDATA[
var member = new Array();
<?php //의원 정보를 스크립트 배열에 정리
$sql = "select f_name, f_code, f_daesu from tbl_member where 1=1 and f_daesu > 0 order by f_daesu desc, f_name asc ";
$res = sql_query($sql);
for($i=0; $row = sql_fetch_array($res); $i++) {
?>
member[<?=$i?>] = new Array();
member[<?=$i?>]['f_code'] = "<?=$row['f_code']?>";
member[<?=$i?>]['f_daesu'] = "<?=$row['f_daesu']?>";
member[<?=$i?>]['f_name'] = "<?=$row['f_name']?>";
<? } ?>
function change(val) { // 대수 radio 버튼 선택 시 하단 selectbox 변경
document.searchform.fmcode.length = 1;
document.searchform.fmcode.options[0] = new Option("++ 의원명("+val+"대)을 선택하세요 ++", "x");
//document.searchform.fmcode.length = 0;
for(i=0,j=1; i<member.length; i++) {
if(val != "x") {
if(val == member[i]['f_daesu']) {
document.searchform.fmcode.length = j+1;
document.searchform.fmcode.options[j] = new Option(member[i]['f_name'], member[i]['f_code']+"-"+member[i]['f_name']);
j++;
}
}
else {
document.searchform.fmcode.length = i+1;
document.searchform.fmcode.options[i] = new Option(member[i]['f_name'], member[i]['f_code']+"-"+member[i]['f_name']);
}
}
}
//]]>
</script>
<?php
include_once(G5_THEME_PATH.'/tail.php');
?>
답변 2
include $ROOT_DIR."CLRecords/Retrieval/prg.speaker2-u8.php";
include $ROOT_DIR."CLRecords/Retrieval/prg.speaker1-u8.php";
CLRecords/Retrieval/prg.speaker1-u8.php, CLRecords/Retrieval/prg.speaker2-u8.php
파일에서 실질적인 DB 쿼리 및 출력을 처리하고 있는 것 같습니다.
해당 파일의 쿼리 부분 (또는 출력 부분) 을 살펴야 될 것으로 보입니다.
※ 첨부하신 소스에 중복된 부분($fcode, 동일한 파일 include, fmcode와 daesu)이 몇 군데 발견되기는 하나,
첨부하신 코드에는 실제 데이터를 출력하는 루프(while, foreach)
가 없기 때문에,
중복 출력 여부를 정확히 판단하기 어렵습니다.
> $param 변수, SQL 조건, <tablee>~</table>네의 <tbody> 출력이 중복 됐을 것 같습니다.