쓰기폼에 체크박스 및 입력항목이 많아서 기존 여분필드 갯수가 부족한데
필드를 더 이상 추가하지않고 사용하기 위하여 아래와 같은 방법을 사용하는 것을 자주봅니다
input type=txt name=ex1 value='=$ex1?>'>
input type=txt name=ex2 value='=$ex2?>'>
input type=txt name=ex3 value='=$ex3?>'>
~
~
등록할 때
$wr_1=$ex1.'|'.$ex2.'|'.$ex3;
$wr_2=$ex4.'|'.$ex5.'|'.$ex6.'|'.$ex7;
~
~
사용할 때
$wr1 = explode("|",$write[wr_1]);
$ex1 = $wr1[0];
$ex2 = $wr1[1];
$ex3 = $wr1[2];
$wr2 = explode("|",$write[wr_2]);
$ex4 = $wr2[0];
$ex5 = $wr2[1];
$ex6 = $wr2[2];
$ex7 = $wr2[3];
~
~
------------------------------------------
필드를 성격에 맞게 여분필드마다 항목을 합치는 것이 여간 신경 쓰이는 일이 아닙니다
위처럼 일일이 합치고, 쪼개고 할 필요 없이 간단하게 사용하는 방법입니다
-- wr_1 필드에 쪼개서 쓰는 모든 항목을 ex1=값1|ex2=값2 처럼 저장합니다
write_update.head.skin.php
if(!$w){ //--입력 항목이 아주 많은 경우 wr_1 필드 사이즈 변경(필요없으면 삭제)
$qq=sql_fetch("SHOW COLUMNS FROM $write_table like 'wr_1' ");
if($qq[Type]=='varchar(255)')
sql_query(" ALTER TABLE $write_table CHANGE wr_1 wr_1 text NOT NULL default '' ");
}
$wr_1=$deli=''; //------ wr_1에 저장할 항목을 합침
foreach($_POST as $key=>$value){
if( strpos($key, 'ex')===false) continue;
$wr_1 .=$deli.$key.'='.$value; $deli='|';
}
--------------------------
write.skin.php, view.skin.php 상단에서
$tmp=explode("|",$write[wr_1]); //-- wr_1에 저장된 항목을 분리
foreach($tmp as $key=>$value){
list($key, $value2)= explode('=',$value);
$$key= $value2;
}
list.skin.php에서 사용시
for 문 다음 행에 추가
$tmp=explode("|",$list[$i][wr_1]); //-- wr_1에 저장된 항목을 분리
foreach($tmp as $key=>$value){
list($key, $value2)= explode('=',$value);
$$key= $value2;
}
이렇게 하면 아래 처럼 곧바로 사용할 수 있습니다
출력시
echo "$ex1 - $ex2 -$ex3";
수정시
input type='text' name='ex1' value='< ? = $ex1? >'> <-- 띄워쓰기 아님(붙여쓰면 코드가 나오지않네요)
요점은 저장할 항목 합침, 저장된 항목 분리를 필드항목에 따라 신경 쓸 것없이
무작정 합치고 잘라서 다른 설정없이 곧바로 입력한 항목 값으로 사용한다는 점입니다
필드를 더 이상 추가하지않고 사용하기 위하여 아래와 같은 방법을 사용하는 것을 자주봅니다
input type=txt name=ex1 value='=$ex1?>'>
input type=txt name=ex2 value='=$ex2?>'>
input type=txt name=ex3 value='=$ex3?>'>
~
~
등록할 때
$wr_1=$ex1.'|'.$ex2.'|'.$ex3;
$wr_2=$ex4.'|'.$ex5.'|'.$ex6.'|'.$ex7;
~
~
사용할 때
$wr1 = explode("|",$write[wr_1]);
$ex1 = $wr1[0];
$ex2 = $wr1[1];
$ex3 = $wr1[2];
$wr2 = explode("|",$write[wr_2]);
$ex4 = $wr2[0];
$ex5 = $wr2[1];
$ex6 = $wr2[2];
$ex7 = $wr2[3];
~
~
------------------------------------------
필드를 성격에 맞게 여분필드마다 항목을 합치는 것이 여간 신경 쓰이는 일이 아닙니다
위처럼 일일이 합치고, 쪼개고 할 필요 없이 간단하게 사용하는 방법입니다
-- wr_1 필드에 쪼개서 쓰는 모든 항목을 ex1=값1|ex2=값2 처럼 저장합니다
write_update.head.skin.php
if(!$w){ //--입력 항목이 아주 많은 경우 wr_1 필드 사이즈 변경(필요없으면 삭제)
$qq=sql_fetch("SHOW COLUMNS FROM $write_table like 'wr_1' ");
if($qq[Type]=='varchar(255)')
sql_query(" ALTER TABLE $write_table CHANGE wr_1 wr_1 text NOT NULL default '' ");
}
$wr_1=$deli=''; //------ wr_1에 저장할 항목을 합침
foreach($_POST as $key=>$value){
if( strpos($key, 'ex')===false) continue;
$wr_1 .=$deli.$key.'='.$value; $deli='|';
}
--------------------------
write.skin.php, view.skin.php 상단에서
$tmp=explode("|",$write[wr_1]); //-- wr_1에 저장된 항목을 분리
foreach($tmp as $key=>$value){
list($key, $value2)= explode('=',$value);
$$key= $value2;
}
list.skin.php에서 사용시
for 문 다음 행에 추가
$tmp=explode("|",$list[$i][wr_1]); //-- wr_1에 저장된 항목을 분리
foreach($tmp as $key=>$value){
list($key, $value2)= explode('=',$value);
$$key= $value2;
}
이렇게 하면 아래 처럼 곧바로 사용할 수 있습니다
출력시
echo "$ex1 - $ex2 -$ex3";
수정시
input type='text' name='ex1' value='< ? = $ex1? >'> <-- 띄워쓰기 아님(붙여쓰면 코드가 나오지않네요)
요점은 저장할 항목 합침, 저장된 항목 분리를 필드항목에 따라 신경 쓸 것없이
무작정 합치고 잘라서 다른 설정없이 곧바로 입력한 항목 값으로 사용한다는 점입니다
댓글 20개
균이님 안녕하세요.
위 처럼 소스를 넣어도 해결되지 않습니다.
[http://i.imgur.com/fZEyGNt.png]
위의 스샷을 보시면 3번째 게시물은 급처분, 신상품, 미개봉에 대한 값이 없습니다.
이 상태에서는 1, 2, 3 게시물 모두 정상적으로 표시되고 있습니다.
[http://i.imgur.com/OmzhdRK.png]
두번째 스샷을 보시면 알겠지만 4번째 게시물에서 급처분, 신상품, 미개봉에 대해서 값을 줬습니다.
그런데 아까전에는 정상적이던 2번째, 3번째 게시물에도 급처분, 신상품, 미개봉 값이 표시되고 있습니다.
이것은 무엇이 문제인지요?
위 처럼 소스를 넣어도 해결되지 않습니다.
[http://i.imgur.com/fZEyGNt.png]
위의 스샷을 보시면 3번째 게시물은 급처분, 신상품, 미개봉에 대한 값이 없습니다.
이 상태에서는 1, 2, 3 게시물 모두 정상적으로 표시되고 있습니다.
[http://i.imgur.com/OmzhdRK.png]
두번째 스샷을 보시면 알겠지만 4번째 게시물에서 급처분, 신상품, 미개봉에 대해서 값을 줬습니다.
그런데 아까전에는 정상적이던 2번째, 3번째 게시물에도 급처분, 신상품, 미개봉 값이 표시되고 있습니다.
이것은 무엇이 문제인지요?
균이님 안녕하세요.
지금 테스트를 해보니까 basic 스킨에서는 정상적으로 됩니다.
지금 아미나 스킨에서 문제가 발생을 하는데요.
<?php for ($i=0; $i < $list_num; $i++) {
//첫페이지만 공지사항 나오도록
if($list[$i]['is_notice'] && $page > 1) continue;
//링크 재설정
$href_target = $thumb_target = '';
if($set['list_href_blank']) {
$thumb_target = '_blank';
$href_target = ' target="_blank"';
} else {
$list[$i]['href'] = $list[$i]['href'].$frame_opt;
}
//xp 및 모바일 아이콘
$wr_post = amina_array_write($list[$i]['wr_10']);
$wr_icon = amina_array_icon($list[$i]['wr_5']);
//목록타입
$s_name = $icon_post = '';
if($set['list_qa'] && !$list[$i]['is_notice']) { //질답형
if($list[$i]['icon_secret']) {
$s_name = 's';
$list[$i]['icon_secret'] = '';
}
$icon_post = $list[$i]['icon_reply'] ? ' <img src="'.$list_skin_url.'/img/icon_'.$s_name.'a.gif" alt="" /> ' : ' <img src="'.$list_skin_url.'/img/icon_'.$s_name.'q.gif" alt="" /> ';
}
//블라인드
$is_blind = ($list[$i]['wr_9'] == "lock" || $list[$i]['wr_9'] == "shingo") ? true : false;
//글제목
$list[$i]['wr_subject'] = amina_get_html($list[$i]['wr_subject'],'char');
if($is_blind) {
$list[$i]['wr_subject'] = '블라인드 처리된 글입니다.';
$list[$i]['subject'] = '<span class="blind">'.amina_cut($list[$i]['wr_subject'], $list_subj_len).'</span>';
$icon_post = '<img src="'.$list_skin_url.'/img/icon_shingo.gif" alt="" />';
} else {
if(!$list[$i]['is_notice'] && $is_catesubj) $list[$i]['wr_subject'] = '['.$list[$i]['ca_name'].'] '.$list[$i]['wr_subject'];
$list[$i]['subject'] = amina_cut($list[$i]['wr_subject'], $list_subj_len);
if($wr_post['subj_s']) $list[$i]['subject'] = '<del>'.$list[$i]['subject'].'</del>';
if($wr_post['subj_b']) $list[$i]['subject'] = '<b>'.$list[$i]['subject'].'</b>';
if($wr_post['subj_i']) $list[$i]['subject'] = '<i>'.$list[$i]['subject'].'</i>';
if($wr_post['subj_color']) $list[$i]['subject'] = '<span style="color:'.$wr_post['subj_color'].';">'.$list[$i]['subject'].'</span>';
if(!$is_cmt && $list[$i]['comment_cnt']) $list[$i]['subject'] .= ' <span class="cmt-cnt">'.$list[$i]['comment_cnt'].'</span>';
}
if($list[$i]['is_notice']) { //공지글
if($is_category) {
$list[$i]['num'] = '*';
$list[$i]['ca_name'] = '<img src="'.$list_skin_url.'/img/icon_notice.gif" alt="알림" />';
} else {
$list[$i]['num'] = '<img src="'.$list_skin_url.'/img/icon_notice.gif" alt="알림" />';
}
$bg = ' class="notice"';
$list[$i]['subject'] = '<b>'.$list[$i]['subject'].'</b>';
} else {
$bg = ($set['shell_color'] && $n%2) ? ' class="list"' : '';
$n++;
if($list[$i]['wr_id'] == $wr_id) { //현재글
$bg = ' class="now"';
$list[$i]['subject'] = '<span class="now-post">'.$list[$i]['subject'].'</span>';
$list[$i]['num'] = '<span class="now-post">'.$list[$i]['num'].'</span>';
}
}
//이름
$list[$i]['name'] = $is_sideview ? amina_sideview($list[$i]['mb_id'], $list[$i]['wr_name'], $list[$i]['wr_email'], $list[$i]['wr_homepage']) : $list[$i]['name'];
?>
아미나는 for 문이 이렇게 되어 있습니다.
어떻게 처리를 해야 하는지요?
지금 테스트를 해보니까 basic 스킨에서는 정상적으로 됩니다.
지금 아미나 스킨에서 문제가 발생을 하는데요.
<?php for ($i=0; $i < $list_num; $i++) {
//첫페이지만 공지사항 나오도록
if($list[$i]['is_notice'] && $page > 1) continue;
//링크 재설정
$href_target = $thumb_target = '';
if($set['list_href_blank']) {
$thumb_target = '_blank';
$href_target = ' target="_blank"';
} else {
$list[$i]['href'] = $list[$i]['href'].$frame_opt;
}
//xp 및 모바일 아이콘
$wr_post = amina_array_write($list[$i]['wr_10']);
$wr_icon = amina_array_icon($list[$i]['wr_5']);
//목록타입
$s_name = $icon_post = '';
if($set['list_qa'] && !$list[$i]['is_notice']) { //질답형
if($list[$i]['icon_secret']) {
$s_name = 's';
$list[$i]['icon_secret'] = '';
}
$icon_post = $list[$i]['icon_reply'] ? ' <img src="'.$list_skin_url.'/img/icon_'.$s_name.'a.gif" alt="" /> ' : ' <img src="'.$list_skin_url.'/img/icon_'.$s_name.'q.gif" alt="" /> ';
}
//블라인드
$is_blind = ($list[$i]['wr_9'] == "lock" || $list[$i]['wr_9'] == "shingo") ? true : false;
//글제목
$list[$i]['wr_subject'] = amina_get_html($list[$i]['wr_subject'],'char');
if($is_blind) {
$list[$i]['wr_subject'] = '블라인드 처리된 글입니다.';
$list[$i]['subject'] = '<span class="blind">'.amina_cut($list[$i]['wr_subject'], $list_subj_len).'</span>';
$icon_post = '<img src="'.$list_skin_url.'/img/icon_shingo.gif" alt="" />';
} else {
if(!$list[$i]['is_notice'] && $is_catesubj) $list[$i]['wr_subject'] = '['.$list[$i]['ca_name'].'] '.$list[$i]['wr_subject'];
$list[$i]['subject'] = amina_cut($list[$i]['wr_subject'], $list_subj_len);
if($wr_post['subj_s']) $list[$i]['subject'] = '<del>'.$list[$i]['subject'].'</del>';
if($wr_post['subj_b']) $list[$i]['subject'] = '<b>'.$list[$i]['subject'].'</b>';
if($wr_post['subj_i']) $list[$i]['subject'] = '<i>'.$list[$i]['subject'].'</i>';
if($wr_post['subj_color']) $list[$i]['subject'] = '<span style="color:'.$wr_post['subj_color'].';">'.$list[$i]['subject'].'</span>';
if(!$is_cmt && $list[$i]['comment_cnt']) $list[$i]['subject'] .= ' <span class="cmt-cnt">'.$list[$i]['comment_cnt'].'</span>';
}
if($list[$i]['is_notice']) { //공지글
if($is_category) {
$list[$i]['num'] = '*';
$list[$i]['ca_name'] = '<img src="'.$list_skin_url.'/img/icon_notice.gif" alt="알림" />';
} else {
$list[$i]['num'] = '<img src="'.$list_skin_url.'/img/icon_notice.gif" alt="알림" />';
}
$bg = ' class="notice"';
$list[$i]['subject'] = '<b>'.$list[$i]['subject'].'</b>';
} else {
$bg = ($set['shell_color'] && $n%2) ? ' class="list"' : '';
$n++;
if($list[$i]['wr_id'] == $wr_id) { //현재글
$bg = ' class="now"';
$list[$i]['subject'] = '<span class="now-post">'.$list[$i]['subject'].'</span>';
$list[$i]['num'] = '<span class="now-post">'.$list[$i]['num'].'</span>';
}
}
//이름
$list[$i]['name'] = $is_sideview ? amina_sideview($list[$i]['mb_id'], $list[$i]['wr_name'], $list[$i]['wr_email'], $list[$i]['wr_homepage']) : $list[$i]['name'];
?>
아미나는 for 문이 이렇게 되어 있습니다.
어떻게 처리를 해야 하는지요?
게시글 목록
| 번호 | 제목 |
|---|---|
| 32729 | |
| 32718 | |
| 32717 | |
| 32714 | |
| 32713 | |
| 32709 | |
| 32706 | |
| 32705 | |
| 32702 | |
| 32693 | |
| 32685 | |
| 32680 | |
| 32659 | |
| 32643 | |
| 32636 | |
| 32629 | |
| 32619 | |
| 32618 | |
| 32617 | |
| 32611 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기