// 파일을 만든 시간(지원하지 않음: 항상 -1값 가짐) time_t time_access;
// 파일을 마지막으로 처리한 시간(지원하지 않음: 항상 -1값 가짐) time_t time_write; // 마지막으로 파일을 기록한 시간 _fsize_t size; // 파일 사이즈 (바이트 수) char name[260];
// 매치된 파일과 디렉토리 이름( 단, 패스네임은 없음) };
파일 속성 기억용 필드에 담겨지는 값
1) _A_ARCH (아카이브) 값:0x20 2) _A_HIDDEN(히든파일) 히든 파일은 일반적인 dir명령으로는 보이지 않는다. 값:0x02) 단, dir /ah 옵션을 사용하면 보인다. 3) _A_NORMAL(일반정보파일) : 어떤 제한이 없는 읽기, 쓰기용 파일. 값:0x00)
4) _A_RDONLY(읽기용 파일) 값: 0x01
5) _A_SUBDIR(써브 디렉토리인지 아닌지 파악) 값: 0x10
6) _A_SYSTEM(시스템 파일) 일반적인 dir명령으로 볼수 없는 파일.값:0x04 단, dir /a 나 dir/a:s옵션으로 보는 것은 가능 */
long hFile;
/* 위에서 hFile 변수는 findfirst함수를 호출하였을 때 리턴 되어지는 값을 담아둘 목적으로 만든 변수입니다. findfirst를 하였을 때 매치되는 파일이 없으면 -1값이 돌아 오게 됩니다.
findfirst함수는 원하는 파일이 디스크에 존재하는지 파악하기 위한 함수로서 형식은 아래와 같습니다. long _findfirst( char *filespec, struct _finddata_t *fileinfo ); 소속: io.h 첫번째 매개변수에 전달된 파일이름과 동일한 파일이 발견되었을 때 발견된 첫번째 파일에 대한 정보를 두번째 구조체 매개변수에 보관하게 됩니다. 발견되는 파일이 없으면 -1값이 리턴된다. 첫번째 매개변수에는 와일드카드문자(*,?)를 사용할 수 있습니다.
int _findnext( long handle, struct _finddata_t *fileinfo );
소속: io.h findfirst에 의해 발견된 파일의 다음 위치에 있는 파일을 찾아내게 됩니다. 파일이 없으면 -1값을 리턴합니다.
*/
/* Find first .c file in current directory */
if( ( hFile = _findfirst( "*.*", & c_file ) ) == -1L ) printf( "No files in current directory!\n" ); else { printf( "Listing of files\n\n" ); printf( "\nRDO HID SYS ARC dir FILE DATE %25c SIZE\n", ' ' ); printf( "--- --- --- --- --- ---- ---- %25c ----\n", ' ' ); /* Find the rest of the .c files */ do { printf( ( c_file.attrib & _A_RDONLY ) ? " Y " : " N " ); printf( ( c_file.attrib & _A_SYSTEM ) ? " Y " : " N " ); printf( ( c_file.attrib & _A_HIDDEN ) ? " Y " : " N " ); printf( ( c_file.attrib & _A_ARCH ) ? " Y " : " N " ); printf( ( c_file.attrib & _A_SUBDIR ) ? " Y " : " N " ); printf( " %-12s %.24s %9ld\n", c_file.name, ctime( &( c_file.time_write ) ), c_file.size ); }while( _findnext( hFile, &c_file ) == 0 ); _findclose( hFile ); }
if ArrSearch(Array2, Rs("gugun"), count2) <> -1 Then
count3 = 0
ReDim Array3(count3)
count2=count2+1
ReDim Preserve Array2(count2)
Array2(count2)= Rs("gugun")
if count3 <> 0 Then
%>
insert into select_code(code1, code2, code3, majorclass, middleclass, subclass) values (<%=count1%>, <%=count2%>, <%=count3%>, '<%=Rs("sido")%>', '<%=Rs("gugun")%>', '<%=ArrayDong(0)%>')<br><br>
<%
else
Response.write "<br><br>"
end if
End if
if ArrSearch(Array3, ArrayDong(0), count3) <> -1 Then
count3=count3+1
ReDim Preserve Array3(count3)
Array3(count3)= ArrayDong(0)
if count3 <> 0 Then
%>
insert into select_code(code1, code2, code3, majorclass, middleclass, subclass) values (<%=count1%>, <%=count2%>, <%=count3%>, '<%=Rs("sido")%>', '<%=Rs("gugun")%>', '<%=ArrayDong(0)%>')<br>
<%
End if
End if
Rs.MoveNext
Loop
end if
%>
</BODY>
</HTML>
위의 페이지를 띄워보면 당연하게도
insert into select_code(code1, code2, code3, majorclass, middleclass, subclass) values (1, 1, 1, '서울', '강남구', '개포1동')
insert into select_code(code1, code2, code3, majorclass, middleclass, subclass) values (1, 1, 2, '서울', '강남구', '개포2동')
...
...
으로 대략 300여개? 정도의 결과로 나온다..
지역코드가 서울 강남구 라면 (1,1,?)로 ?값이 읍면동 정보인데 (1,1,0) 지역코드라면 서울시 강남구 모든 동
정보나 혹여나 select에서 아무것도 선택하지 않았을때의 값이 0 으로 설정하기 위해서 지역코드에는 0 값이
들어있지 않도록 만들었다.
이것을 db에 고대로 넣으면 원하는 시도, 구군, 읍면동 정보가 들어있는 db를 만들수 있다.
그후 가장 중요한 다중셀렉트?? 결과가 연동되게 표시되는 셀렉트?? 를 만들 차례다.
이는 정말 감사하게도 인터넷검색을 하니 친철하게 어떤분이 만들어 놓으신걸 조금 수정했다.
원래 select가 2개로 연동되는것 이였는데 내가 사용할 것은 3개 이므로 3개로 늘리는 작업 및
기존코드: var bc2 = eval('document.RegRequest.biz_code2');
는 비표준 이라고 그러던데 역시나 오류가 발생하여
수정코드: var bc1 = document.getElementById("biz_code1");
로 간단하게 바꿔주고
결과값을 테스트용도로 볼 수 있도록 간단한 폼을 붙여놨다.
우리가 db에 넣었던
(code1, code2 code3, majorclass, middleclass, subclass) 는
(select1번의 value, select3번의 value, select3번의 value, 시도, 구군, 읍면동) 의 정보 이다.
다른 다중셀렉트를 만들때 값만 변경시키면 된다.
TEST.ASP 내용
<!-- #include virtual = "/library/ADODB.asp" -->
<html>
<head>
<title>test</title>
</head>
<Script language="javascript">
<!--
arrcode1 = new Array;
arrcode2 = new Array;
arrcode3 = new Array;
var bc1 = document.getElementById("biz_code1");
var bc2 = document.getElementById("biz_code2");
var bc3 = document.getElementById("biz_code3");
for(var i=bc1.length-1; i > -1; i--)
{
bc1.options[i].value = null;
bc1.options[i] = null;
}
bc1.options[0]= new Option('== 선택 ==',0);
bc1.options[0].value= '';
for(var i=bc2.length-1; i > -1; i--)
{
bc2.options[i].value = null;
bc2.options[i] = null;
}
bc2.options[0]= new Option('== 선택 ==',0);
bc2.options[0].value= '';
for(var i=bc3.length-1; i > -1; i--)
{
bc3.options[i].value = null;
bc3.options[i] = null;
}
bc3.options[0]= new Option('== 선택 ==',0);
bc3.options[0].value= '';
var k = 1;
for(var i=0; i < arrcode1.length; i++)
{
for(var j=0; j < k; j++)
{
if(bc1.options[j].value==arrcode1[i]) {
var chk_exist = true;
break;
}
else {
var chk_exist = false;
}
}
if(chk_exist) {
}
else {
bc1.options[k] = new Option(arrcode4[i]);
bc1.options[k].value = arrcode1[i];
k = k +1;
}
}
}
function setcode2() {
var bc1 = document.getElementById("biz_code1");
var bc2 = document.getElementById("biz_code2");
var bc3 = document.getElementById("biz_code3");
//document.getElementById("code1").value = document.getElementById("biz_code1").value;
//document.getElementById("code1").value =
//var compc = document.RegRequest.biz_code1.value;
var compc = document.getElementById("biz_code1").value;
for(var i=bc2.length-1; i > -1; i--)
{
bc2.options[i].value = null;
bc2.options[i] = null;
}
bc2.options[0]= new Option('== 선택 ==',0);
bc2.options[0].value= '';
var k = 1;
for(var i=0; i < arrcode1.length; i++)
{
if(arrcode1[i]==compc) {
for(var j=0; j < k; j++)
{
if(bc2.options[j].value==arrcode2[i]) {
var chk_exist = true;
break;
}
else {
var chk_exist = false;
}
}
if(chk_exist) {
}
else {
bc2.options[k] = new Option(arrcode5[i]);
bc2.options[k].value = arrcode2[i];
k = k +1;
}
}
}
}
function setcode3() {
var bc1 = document.getElementById("biz_code1");
var bc2 = document.getElementById("biz_code2");
var bc3 = document.getElementById("biz_code3");
//document.getElementById("code1").value = document.getElementById("biz_code1").value;
//document.getElementById("code1").value =
//var compc = document.RegRequest.biz_code1.value;
var compc1 = document.getElementById("biz_code1").value;
var compc2 = document.getElementById("biz_code2").value;
for(var i=bc3.length-1; i > -1; i--)
{
bc3.options[i].value = null;
bc3.options[i] = null;
}
bc3.options[0]= new Option('== 선택 ==',0);
bc3.options[0].value= '';
var k = 1;
for(var i=0; i < arrcode2.length; i++)
{
if(arrcode1[i]==compc1 && arrcode2[i]==compc2) {
for(var j=0; j < k; j++)
{
if(bc3.options[j].value==arrcode3[i]) {
var chk_exist = true;
break;
}
else {
var chk_exist = false;
}
}
if(chk_exist) {
}
else {
bc3.options[k] = new Option(arrcode6[i]);
bc3.options[k].value = arrcode3[i];
k = k +1;
}
}
}
}
else
i = 0
Rs2.MoveFirst
Do Until RS2.Eof
%>
<Script language="javascript">
<!--
SetArray('<%=i%>','<%=Rs2(0)%>','<%=Rs2(1)%>','<%=Rs2(2)%>','<%=Rs2(3)%>','<%=Rs2(4)%>','<%=Rs2(5)%>');
//-->
</script>
<%
Rs2.MoveNext
i = i + 1
Loop
end if
<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
<!--
//JS Test
var Request=function(){
this.getParameter=function(name){
var trnval = '';
var nowAddress=unescape(location.href);
var parameters=(nowAddress.slice(nowAddress.indexOf('?')+1, nowAddress.length)).split('&');
for(var i = 0; i<parameters.length; i++){
var varName=parameters[i].split('=')[0];
if(varName.toUpperCase() == name.toUpperCase()){
rtnval=parameters[i].split('=')[1];
break;
}
}
document.write(rtnval);
}
}