검색후 보이는 나열방법에 대해서... 정보
검색후 보이는 나열방법에 대해서...본문
이렇게 한줄로 보이는데 2~3줄로 보이게 할려면 ...
게시판이 많으면 한줄로 늘어서 보기가 않좋아서 2줄이나 3줄로 하면 보기 좋을것 같아 질문 올립니니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
define("_DOCTYPE_", "DESIGN");
$html_title = "검색 : $stext";
// 그누검색 설정파일
include "./bbs/gnusearch.cfg.php";
include "./bbs/gblayer.php";
if (!$stext || strlen($stext) < 2) { alert("검색어는 최소 2자 이상 되어야 합니다."); }
if (!isset($soperator)) {
$soperator = $gnusearch[operator];
}
if (!isset($srch_rows)) {
$srch_rows = $gnusearch[rows];
}
if (!isset($srch_comment)) {
$srch_comment = $gnusearch[comment];
}
if (!isset($srch_days)) {
$srch_days = $gnusearch[days];
}
if ($srch_days) {
$intime = date("Y-m-d H:i:s", strtotime($now) - ($srch_days * 86400));
} else {
$intime = date("Y-m-d H:i:s", 0);
}
// 3.36
unset($gnusearch[tables]);
$sql = " select bo_table from $cfg[table_board]
where bo_use_search = '1'
and bo_list_level <= '$member[mb_level]'
and bo_read_level <= '$member[mb_level]' ";
if ($onetable) $sql .= " and bo_table = '$onetable' ";
$sql .= " order by bo_order_search ";
$result = sql_query($sql);
for ($i=0; $row=mysql_fetch_array($result); $i++) {
$gnusearch[tables][] = $row[bo_table];
}
$search_query = "sselect=$sselect&stext=$stext&soperator=$soperator&srch_rows=$srch_rows&srch_comment=$srch_comment&srch_days=$srch_days";
?>
<table align=center width=95% cellpadding=2 cellspacing=0>
<form name=fgnusearch2 method=get action='<?="./"?>'>
<tr>
<td align=center>
<input type='hidden' name='doc' value='<?="bbs/gnusearch.php"?>'>
<input type='hidden' name='srch_rows' value='<?=$srch_rows?>'>
<input type='hidden' name='srch_comment' value='<?=$srch_comment?>'>
<input type='hidden' name='srch_days' value='<?=$srch_days?>'>
<select name=sselect class=select>
<option value="concat(wr_subject,wr_content)">제목+내용</option>
<option value='wr_name'>이름</option>
<option value='wr_subject'>제목</option>
<option value='wr_content'>내용</option>
</select>
<script language='javascript'>
document.fgnusearch2.sselect.value = '<?=$sselect?>';
</script>
<input type=text name=stext size=40 class=input minlength=2 required itemname='검색어' value='<?=hsc($stext)?>'>
<input type=submit value=' 검 색 '>
</td>
</tr>
<tr>
<td align=center>
연산자 <input type='radio' name='soperator' value='0' <?=(!$soperator) ? "checked" : "";?>>OR <input type='radio' name='soperator' value='1' <?=($soperator) ? "checked" : "";?>>AND
</td>
</tr>
</form>
</table>
<p>
<?
// 3.36
// 검색필드에 , 가 있다면 ,' ', 로 만든다 concat()
$sselect = preg_replace("/,/", ",' ',", $sselect);
$op = "";
$str = " and ( ";
// 검색어를 구분자로 나눈다. 여기서는 공백
$s = explode(" ", $stext);
for ($i=0; $i<count($s); $i++) {
// 3.36
/*
if ($sselect == "wr_subject|wr_content") {
$str .= $op . " (wr_subject like '%$s[$i]%' or wr_content like '%$s[$i]%') ";
} else {
$str .= $op . " ($sselect like '%$s[$i]%') ";
}
*/
//$str .= $op . " ($sselect like '%$s[$i]%') ";
$str .= $op . " (INSTR(LOWER($sselect), LOWER('$s[$i]')) > 0) ";
$op = ($soperator) ? " and " : " or ";
}
$str .= " ) ";
$sql_search = " where (wr_datetime >= '$intime') " . $str;
if (!$srch_comment) {
$sql_search .= " and (wr_comment = '0') ";
}
$sql_search .= " and wr_secret = '0' ";
$str_board_list = "";
$board_count = 0;
$total_count = 0;
for ($i=0; $i<count($gnusearch[tables]); $i++) {
$tbl = $cfg[write_table_prefix] . $gnusearch[tables][$i];
$sql = " select count(wr_id) from $tbl a, $cfg[table_board] b $sql_search and (b.bo_table='{$gnusearch[tables][$i]}') ";
// 권한별 검색기능
//$sql .= " and (b.bo_table='{$gnusearch[tables][$i]}' and b.bo_list_level <= '$member[mb_level]' and b.bo_read_level <= '$member[mb_level]') ";
$row = sql_fetch($sql);
$total_count += $row[0];
if ($row[0]) {
$board_count++;
$search_table[] = $gnusearch[tables][$i];
$search_table_count[] = $total_count;
$sql2 = " select bo_subject from $cfg[table_board] where bo_table = '{$gnusearch[tables][$i]}' ";
$row2 = sql_fetch($sql2);
$str_board_list .= "<li><a href='./?doc=$doc&$search_query&onetable={$gnusearch[tables][$i]}'>$row2[0]</a> ($row[0])";
}
}
$rows = $srch_rows;
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
echo "<ul type=circle><li><b>검색된 게시판 리스트</b> (<b>$board_count</b>개의 게시판, <b>".nf($total_count)."</b>개의 게시글, ".nf($page)."/<b>".nf($total_page)."</b> 페이지)</ul>";
if ($board_count) {
echo "<ul><ul type=square style='line-height:130%;'>";
if ($onetable) {
echo "<li><a href='./?doc=$doc&$search_query'>전체게시판 검색</a>";
}
echo $str_board_list;
echo "</ul></ul>";
} else {
echo "<ul style='line-height:130%;'><li>검색된 자료가 하나도 없습니다.</ul>";
}
for ($i=0; $i<count($search_table); $i++) {
if ($from_record < $search_table_count[$i]) {
$table_index = $i;
$from_record = $from_record - $search_table_count[$i-1];
break;
}
}
$k=0;
for ($idx=$table_index; $idx<count($search_table); $idx++) {
$sql = " select bo_subject from $cfg[table_board] where bo_table = '$search_table[$idx]' ";
$row = sql_fetch($sql);
echo "<ul type=circle><li><b><a href='./?doc=bbs/gnuboard.php&bo_table=$search_table[$idx]&$search_query'><u>$row[bo_subject]</u></a>에서의 검색결과</b></ul>";
$tbl = $cfg[write_table_prefix] . $search_table[$idx];
# 3.22 에서 필드 * 를 필드명 직접 기술
$sql = " select mb_id,
wr_id,
wr_parent_id,
wr_subject,
wr_content,
wr_name,
wr_email,
wr_homepage,
wr_comment,
wr_datetime
from $tbl
$sql_search
order by wr_id desc limit $from_record, $rows ";
$result = sql_query($sql);
for ($i=0; $row=mysql_fetch_array($result); $i++) {
echo "<ul><ul type=square><li style='line-height:130%;'>";
$link = "./?doc=bbs/gnuboard.php&bo_table=$search_table[$idx]&wr_id=$row[wr_parent_id]&$search_query";
if ($row[wr_comment]) {
$link .= "#c{$row[wr_id]}";
echo "<font color=999999>[코멘트]</font> ";
$sql2 = " select wr_subject, wr_secret from $tbl where wr_id = '$row[wr_parent_id]' ";
$row2 = sql_fetch($sql2);
$row[wr_subject] = $row2[wr_subject];
// 비밀글은 검색 불가
if ($row2[wr_secret]) {
$row[wr_content] = "********";
}
}
echo "<a href='$link'><u>";
$subject = $row[wr_subject];
$content = cut_str(get_text($row[wr_content]),300,"…");
if (preg_match("/wr_subject/", $sselect)) $subject = search_font($stext, $subject);
if (preg_match("/wr_content/", $sselect)) $content = search_font($stext, $content);
echo $subject;
echo "</u></a> [<a href='$link' target=_blank>새창</a>]<br>";
echo $content;
$tmp_name = gblayer($row[mb_id], $row[wr_name], $row[wr_email], $row[wr_homepage]);
echo "<br><font color=#999999>$row[wr_datetime]</font> $tmp_name<br>";
echo "</ul></ul>\n";
$k++;
if ($k >= $rows) { break; }
}
mysql_free_result($result);
if ($k >= $rows) { break; }
$from_record = 0;
}
$pagelist = get_paging($default[de_write_pages], $page, $total_page, "./?doc=$doc&$search_query&onetable=$onetable&page=");
if ($pagelist) {
echo "<table width=100% cellpadding=3 cellspacing=1><tr><td align=right>$pagelist</td></tr></table>\n";
}
?>
게시판이 많으면 한줄로 늘어서 보기가 않좋아서 2줄이나 3줄로 하면 보기 좋을것 같아 질문 올립니니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
define("_DOCTYPE_", "DESIGN");
$html_title = "검색 : $stext";
// 그누검색 설정파일
include "./bbs/gnusearch.cfg.php";
include "./bbs/gblayer.php";
if (!$stext || strlen($stext) < 2) { alert("검색어는 최소 2자 이상 되어야 합니다."); }
if (!isset($soperator)) {
$soperator = $gnusearch[operator];
}
if (!isset($srch_rows)) {
$srch_rows = $gnusearch[rows];
}
if (!isset($srch_comment)) {
$srch_comment = $gnusearch[comment];
}
if (!isset($srch_days)) {
$srch_days = $gnusearch[days];
}
if ($srch_days) {
$intime = date("Y-m-d H:i:s", strtotime($now) - ($srch_days * 86400));
} else {
$intime = date("Y-m-d H:i:s", 0);
}
// 3.36
unset($gnusearch[tables]);
$sql = " select bo_table from $cfg[table_board]
where bo_use_search = '1'
and bo_list_level <= '$member[mb_level]'
and bo_read_level <= '$member[mb_level]' ";
if ($onetable) $sql .= " and bo_table = '$onetable' ";
$sql .= " order by bo_order_search ";
$result = sql_query($sql);
for ($i=0; $row=mysql_fetch_array($result); $i++) {
$gnusearch[tables][] = $row[bo_table];
}
$search_query = "sselect=$sselect&stext=$stext&soperator=$soperator&srch_rows=$srch_rows&srch_comment=$srch_comment&srch_days=$srch_days";
?>
<table align=center width=95% cellpadding=2 cellspacing=0>
<form name=fgnusearch2 method=get action='<?="./"?>'>
<tr>
<td align=center>
<input type='hidden' name='doc' value='<?="bbs/gnusearch.php"?>'>
<input type='hidden' name='srch_rows' value='<?=$srch_rows?>'>
<input type='hidden' name='srch_comment' value='<?=$srch_comment?>'>
<input type='hidden' name='srch_days' value='<?=$srch_days?>'>
<select name=sselect class=select>
<option value="concat(wr_subject,wr_content)">제목+내용</option>
<option value='wr_name'>이름</option>
<option value='wr_subject'>제목</option>
<option value='wr_content'>내용</option>
</select>
<script language='javascript'>
document.fgnusearch2.sselect.value = '<?=$sselect?>';
</script>
<input type=text name=stext size=40 class=input minlength=2 required itemname='검색어' value='<?=hsc($stext)?>'>
<input type=submit value=' 검 색 '>
</td>
</tr>
<tr>
<td align=center>
연산자 <input type='radio' name='soperator' value='0' <?=(!$soperator) ? "checked" : "";?>>OR <input type='radio' name='soperator' value='1' <?=($soperator) ? "checked" : "";?>>AND
</td>
</tr>
</form>
</table>
<p>
<?
// 3.36
// 검색필드에 , 가 있다면 ,' ', 로 만든다 concat()
$sselect = preg_replace("/,/", ",' ',", $sselect);
$op = "";
$str = " and ( ";
// 검색어를 구분자로 나눈다. 여기서는 공백
$s = explode(" ", $stext);
for ($i=0; $i<count($s); $i++) {
// 3.36
/*
if ($sselect == "wr_subject|wr_content") {
$str .= $op . " (wr_subject like '%$s[$i]%' or wr_content like '%$s[$i]%') ";
} else {
$str .= $op . " ($sselect like '%$s[$i]%') ";
}
*/
//$str .= $op . " ($sselect like '%$s[$i]%') ";
$str .= $op . " (INSTR(LOWER($sselect), LOWER('$s[$i]')) > 0) ";
$op = ($soperator) ? " and " : " or ";
}
$str .= " ) ";
$sql_search = " where (wr_datetime >= '$intime') " . $str;
if (!$srch_comment) {
$sql_search .= " and (wr_comment = '0') ";
}
$sql_search .= " and wr_secret = '0' ";
$str_board_list = "";
$board_count = 0;
$total_count = 0;
for ($i=0; $i<count($gnusearch[tables]); $i++) {
$tbl = $cfg[write_table_prefix] . $gnusearch[tables][$i];
$sql = " select count(wr_id) from $tbl a, $cfg[table_board] b $sql_search and (b.bo_table='{$gnusearch[tables][$i]}') ";
// 권한별 검색기능
//$sql .= " and (b.bo_table='{$gnusearch[tables][$i]}' and b.bo_list_level <= '$member[mb_level]' and b.bo_read_level <= '$member[mb_level]') ";
$row = sql_fetch($sql);
$total_count += $row[0];
if ($row[0]) {
$board_count++;
$search_table[] = $gnusearch[tables][$i];
$search_table_count[] = $total_count;
$sql2 = " select bo_subject from $cfg[table_board] where bo_table = '{$gnusearch[tables][$i]}' ";
$row2 = sql_fetch($sql2);
$str_board_list .= "<li><a href='./?doc=$doc&$search_query&onetable={$gnusearch[tables][$i]}'>$row2[0]</a> ($row[0])";
}
}
$rows = $srch_rows;
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
echo "<ul type=circle><li><b>검색된 게시판 리스트</b> (<b>$board_count</b>개의 게시판, <b>".nf($total_count)."</b>개의 게시글, ".nf($page)."/<b>".nf($total_page)."</b> 페이지)</ul>";
if ($board_count) {
echo "<ul><ul type=square style='line-height:130%;'>";
if ($onetable) {
echo "<li><a href='./?doc=$doc&$search_query'>전체게시판 검색</a>";
}
echo $str_board_list;
echo "</ul></ul>";
} else {
echo "<ul style='line-height:130%;'><li>검색된 자료가 하나도 없습니다.</ul>";
}
for ($i=0; $i<count($search_table); $i++) {
if ($from_record < $search_table_count[$i]) {
$table_index = $i;
$from_record = $from_record - $search_table_count[$i-1];
break;
}
}
$k=0;
for ($idx=$table_index; $idx<count($search_table); $idx++) {
$sql = " select bo_subject from $cfg[table_board] where bo_table = '$search_table[$idx]' ";
$row = sql_fetch($sql);
echo "<ul type=circle><li><b><a href='./?doc=bbs/gnuboard.php&bo_table=$search_table[$idx]&$search_query'><u>$row[bo_subject]</u></a>에서의 검색결과</b></ul>";
$tbl = $cfg[write_table_prefix] . $search_table[$idx];
# 3.22 에서 필드 * 를 필드명 직접 기술
$sql = " select mb_id,
wr_id,
wr_parent_id,
wr_subject,
wr_content,
wr_name,
wr_email,
wr_homepage,
wr_comment,
wr_datetime
from $tbl
$sql_search
order by wr_id desc limit $from_record, $rows ";
$result = sql_query($sql);
for ($i=0; $row=mysql_fetch_array($result); $i++) {
echo "<ul><ul type=square><li style='line-height:130%;'>";
$link = "./?doc=bbs/gnuboard.php&bo_table=$search_table[$idx]&wr_id=$row[wr_parent_id]&$search_query";
if ($row[wr_comment]) {
$link .= "#c{$row[wr_id]}";
echo "<font color=999999>[코멘트]</font> ";
$sql2 = " select wr_subject, wr_secret from $tbl where wr_id = '$row[wr_parent_id]' ";
$row2 = sql_fetch($sql2);
$row[wr_subject] = $row2[wr_subject];
// 비밀글은 검색 불가
if ($row2[wr_secret]) {
$row[wr_content] = "********";
}
}
echo "<a href='$link'><u>";
$subject = $row[wr_subject];
$content = cut_str(get_text($row[wr_content]),300,"…");
if (preg_match("/wr_subject/", $sselect)) $subject = search_font($stext, $subject);
if (preg_match("/wr_content/", $sselect)) $content = search_font($stext, $content);
echo $subject;
echo "</u></a> [<a href='$link' target=_blank>새창</a>]<br>";
echo $content;
$tmp_name = gblayer($row[mb_id], $row[wr_name], $row[wr_email], $row[wr_homepage]);
echo "<br><font color=#999999>$row[wr_datetime]</font> $tmp_name<br>";
echo "</ul></ul>\n";
$k++;
if ($k >= $rows) { break; }
}
mysql_free_result($result);
if ($k >= $rows) { break; }
$from_record = 0;
}
$pagelist = get_paging($default[de_write_pages], $page, $total_page, "./?doc=$doc&$search_query&onetable=$onetable&page=");
if ($pagelist) {
echo "<table width=100% cellpadding=3 cellspacing=1><tr><td align=right>$pagelist</td></tr></table>\n";
}
?>
댓글 전체
헉... 7쟁이님.. 이놈 보다가 "."(쩜) 하나 잘못찍어서 결과가 이상하게 나와서 죽는줄 알았습니다.ㅋㅋㅋ
제가 가지고있는 bbs/gnusearch.php에서 아래의 라인은 137번째 라인이군요.
$str_board_list = "\n<table width=100% border=1>"; // 이테이블이 리스트한줄로 나오던것을 두줄로 나오도록 하는 테이블입니다
$board_count = 0;
$total_count = 0;
for ($i=0; $i<count($gnusearch[tables]); $i++) {
$tbl = $cfg[write_table_prefix] . $gnusearch[tables][$i];
$sql = " select count(wr_id) from $tbl a, $cfg[table_board] b $sql_search and (b.bo_table='{$gnusearch[tables][$i]}') ";
// 권한별 검색기능
//$sql .= " and (b.bo_table='{$gnusearch[tables][$i]}' and b.bo_list_level <= '$member[mb_level]' and b.bo_read_level <= '$member[mb_level]') ";
$row = sql_fetch($sql);
$total_count += $row[0];
if ($row[0]) {
$board_count++;
$search_table[] = $gnusearch[tables][$i];
$search_table_count[] = $total_count;
$sql2 = " select bo_subject from $cfg[table_board] where bo_table = '{$gnusearch[tables][$i]}' ";
$row2 = sql_fetch($sql2);
//$str_board_list .= "<li><a href='./?doc=$doc&$search_query&onetable={$gnusearch[tables][$i]}'>$row2[0]</a> ($row[0])";
$list = $board_count%2;
if($list) $str_board_list .= "<tr>\n";
$str_board_list .= "<td width=50% valign=top>";
$str_board_list .= "<a href='./?doc=$doc&$search_query&onetable={$gnusearch[tables][$i]}'>$row2[0]</a> ($row[0])";
$str_board_list .= "</td>\n";
if(!$list) $str_board_list .= "</tr>\n";
}
}
if($list) $str_board_list .= "<td> </td></tr>\n";
$str_board_list .= "</table>\n";
제가 가지고있는 bbs/gnusearch.php에서 아래의 라인은 137번째 라인이군요.
$str_board_list = "\n<table width=100% border=1>"; // 이테이블이 리스트한줄로 나오던것을 두줄로 나오도록 하는 테이블입니다
$board_count = 0;
$total_count = 0;
for ($i=0; $i<count($gnusearch[tables]); $i++) {
$tbl = $cfg[write_table_prefix] . $gnusearch[tables][$i];
$sql = " select count(wr_id) from $tbl a, $cfg[table_board] b $sql_search and (b.bo_table='{$gnusearch[tables][$i]}') ";
// 권한별 검색기능
//$sql .= " and (b.bo_table='{$gnusearch[tables][$i]}' and b.bo_list_level <= '$member[mb_level]' and b.bo_read_level <= '$member[mb_level]') ";
$row = sql_fetch($sql);
$total_count += $row[0];
if ($row[0]) {
$board_count++;
$search_table[] = $gnusearch[tables][$i];
$search_table_count[] = $total_count;
$sql2 = " select bo_subject from $cfg[table_board] where bo_table = '{$gnusearch[tables][$i]}' ";
$row2 = sql_fetch($sql2);
//$str_board_list .= "<li><a href='./?doc=$doc&$search_query&onetable={$gnusearch[tables][$i]}'>$row2[0]</a> ($row[0])";
$list = $board_count%2;
if($list) $str_board_list .= "<tr>\n";
$str_board_list .= "<td width=50% valign=top>";
$str_board_list .= "<a href='./?doc=$doc&$search_query&onetable={$gnusearch[tables][$i]}'>$row2[0]</a> ($row[0])";
$str_board_list .= "</td>\n";
if(!$list) $str_board_list .= "</tr>\n";
}
}
if($list) $str_board_list .= "<td> </td></tr>\n";
$str_board_list .= "</table>\n";
아.. 제 홈페이지 오시면 위내용 적용된 검색을 보실수있습니다 ^^
하하하~
점 하나에 울고 웃는 인생사~~~
이 가사가 생각이 납니다^^
감사합니다.
얼른 적용 해봐야겠네요.....
점 하나에 울고 웃는 인생사~~~
이 가사가 생각이 납니다^^
감사합니다.
얼른 적용 해봐야겠네요.....
아주 좋은데요^^
하하하~~
그런데 욕심이 생기네요 3줄이면 더 좋겠다는 생각이...크크
감사합니다..
하하하~~
그런데 욕심이 생기네요 3줄이면 더 좋겠다는 생각이...크크
감사합니다..