테스트 사이트 - 개발 중인 베타 버전입니다

여분필드의 능동배치

· 3년 전 · 3635 · 13

여분필드를 능동적으로 배치할 수 있는 로직을 한번 짜 보았습니다.

 

[code]

<?php
$input_total = 10; // 여분필드의 총갯수
$width_total = 4; // 가로갯수
$input_gap = 3; // 여분필드 간격픽셀
$top_string = "wr_"; // 여분필드의 앞문자
$input_required = "1,3,7,8,9"; // 필수항목 번호
//$input_placeholder = "'하나','둘',3,4,5,6,7,8,'아홉','열'"; // placeholder 를 따로 줄 경우 php 문자열
?>
<style>.iptStyle { width:100%; height:40px; padding:5px; border:1px solid #cccccc; background-color:#ffffff; border-radius:3px; box-sizing:border-box; }</style>
<script>
inputTotal = <?php echo $input_total; ?>;
widthTotal = <?php echo $width_total; ?>;
inputGap = <?php echo $input_gap; ?>;
topString = "<?php echo $top_string; ?>";
inputRequired = [<?php echo $input_required; ?>]; // required php 문자열을 js 배열로 치환
//inputPlaceholder = [<?php echo $input_placeholder; ?>]; // placeholder php 문자열을 js 배열로 치환
inputIdName = "<input type=text class=iptStyle>";
document.write("<table id=inputTable style=width:100%;table-layout:fixed cellpadding=0 cellspacing=0></tr>");
for (n = 1; n <= inputTotal; n++) {
    if (n % widthTotal == 0) {
        if (inputTotal <= widthTotal || n == inputTotal) document.write("<td>" + inputIdName + "</td>");
        else document.write("<td>" + inputIdName + "</td></tr><tr><td style=height:" + inputGap + "px></td></tr><tr>");
    }
    else document.write("<td>" + inputIdName + "</td><td style=width:" + inputGap + "px></td>");
}
document.write("</tr></table>");
<?php for ($ipt = 1; $ipt <= $input_total; $ipt++) echo "ipt_".$ipt."='".$write[$top_string.$ipt]."';"; ?>
ipt = inputTable.getElementsByTagName("input");
for (n = 1; n <= ipt.length; n++) {
    ipt[n - 1].id = ipt[n - 1].name = topString + n;
    ipt[n - 1].value = this["ipt_" + n];
    for (iptr in inputRequired) {
        if (inputRequired[iptr] == n) {
            ipt[n - 1].required = true;
            ipt[n - 1].style.backgroundColor = "#eeeeee";
        }
    }
    ipt[n - 1].placeholder = "여분필드_" + n;
    //ipt[n - 1].placeholder = inputPlaceholder[n - 1]; // placeholder 를 따로 줄 경우
}
</script>

[/code]

 

----------

----------

 

이 능동 배치 소스는 input 에 알아서 id 와 name 이 입력됩니다.

이 코드는 write.skin.php 의 아무 곳에나 넣어도 되지만

<div class="write_div"> 위에 작성하는 것이 보기가 좋습니다.

단 이것은 input 의 type 가 text 일 경우로 한정합니다.

 

----------

----------

 

$input_total = 10;

여분필드의 총갯수입니다. 보통의 경우 wr_10까지이니 10이 되겠지요.

더 많이 만들어 놓았으면 그 숫자에 맞춰주세요.

링크예제에서는 22개를 주었습니다.

 

----------


$width_total = 4;

가로갯수입니다. 5를 넣으면 5개씩, 6을 넣으면 6개씩 자동으로 가로로 정렬됩니다.

모바일까지를 감안하면 3~5개가 적당하더라구요.

 

----------


$input_gap = 3;

각 input 간의 간격픽셀입니다.

 

----------


$top_string = "wr_";

input 의 name 이나 id 앞의 문자입니다.

대개의 경우 "wr_" 가 되겠지요. 링크예제에서는 "my_" 로 주었습니다.

 

----------


$input_required = "1,3,7,8,9";

input 의 required 즉 필수항목을 주고 싶을 때 쌍따옴표 안에 숫자와 쉼표로 연결합니다.

마지막에는 쉼표를 붙이지 않습니다.

사용하고 싶지 않을 때는 주석처리 하거나 $input_required = ""; 으로 줍니다.

링크예제에서는 "3,7,9,16,17,22" 로 주었습니다.

필수항목 input 는 회색 배경으로 표시됩니다.

 

----------

 

input 의 placeholder 는 기본적으로 여분필드_숫자로 표시되지만 각각 다른값을 넣고싶을 때는...

1. // $input_placeholder 의 // 을 지워 주석을 해제합니다.

2. 주석을 해제한 후 아래처럼 처리합니다.

     1) 만일 5개의 경우라면 홑따옴표 안에 문자를 입력하면서 쉼표로 연결합니다.

     2) 마지막에는 쉼표를 쓰지 않습니다.

     3) $input_placeholder ="'하나','둘','셋','넷','다섯'";

     4) 숫자의 경우는 홑따옴표도 쓰지 말고 맨몸뚱아리 그대로 입력합니다.

     5) 사족

        코드를 쓸 때 맨몸뚱아리 그대로, 홑따옴표, 쌍따옴표를 언제 기입해야 하는지

        감을 잡는 것이 실력 향상의 지름길이며 하나의 문턱을 넘는 과정입니다.

3. //inputPlaceholder = [<?php echo $input_placeholder; ?>]; 의 // 을 지워 주석을 해제합니다.

4. 하단부에 보면 아래의 로직에서 주석을 맞바꾸세요.

ipt[n - 1].placeholder = "여분필드_" + n;
//ipt[n - 1].placeholder = inputPlaceholder[n - 1]; // placeholder 를 따로 줄 경우

위 코드를 아래처럼

//ipt[n - 1].placeholder = "여분필드_" + n;
ipt[n - 1].placeholder = inputPlaceholder[n - 1]; // placeholder 를 따로 줄 경우

 

----------

 

그누순정 5.4 기준입니다.

뭐 당연하게도 뷰페이지에서는 <?php echo $view['wr_1']; ?> 로

리스트에서는 <?php echo $list[$i]['wr_1']; ?> 로 표현할 수 있습니다.

5.4 미만 버전 또는 다른 빌더나 테마 등은 고려하지 않았습니다. 되면 성공 안 되면 말고입니다.ㅋ

유용하다고 생각된다면 추천이나 댓글 부탁드립니다.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 13개

3년 전
mysql에 있는 json data type를 활용하는 것은 어떨까요?
@엑스엠엘 MySQL 5.7.8 부터 지원한다고 합니다. 구버전 MySQL을 사용하는 경우에는 지원하지 않을 수도 있죠.
3년 전
유용한 정보 감사드립니다.

게시글 목록

번호 제목
24318
24317
24315
24309
24294
24293
24277
24262
24260
24253
24251
24236
24233
24228
24226
24221
24214
24203
24201
24199
24196
24195
24194
24192
24191
24187
24185
24183
24172
24168