간단 프로젝또 11일차 오전

jyp·2023년 1월 3일
0

프로젝또

목록 보기
11/13
		// 문서를 읽을때 그림의 갯수에 따라 type="file"의 갯수를 출력
		var len = document.getElementByClassName("chk").length;
		
		// 3-len >> 보여질 type="file"의 갯수
		for(i=0;i<3-len;i++) // len >> 0이라면 : 0,1,2 동작, 1이라면 : 0,1 동작
		{
			document.getElementByClassName("fname")[].style.display="inline";
		}
		// fname >> 클래스이기 때문에 0 1 2 로 접근할수있음
function check()
	{
		// 삭제할 그림파일은 delimg변수, 존재할 그림파일은 eximg변수에 저장
		var delimg = "";
		var eximg = "";
		
		var chk = document.getElementsByClassName("chk");
		var n=0;
		
		for(i=0;i<chk.length;i++) // 사진파일 체크박스가 있는 만큼 동작
		{
			if(chk[i].checked)
			{	// 체크가 됐다 >> 삭제 하는 그림
				delimg = delimg + chk[i].value + ",";
			}
			else
			{	// 체크 하지 않았다 >> 삭제 하지 않는 그림
				eximg = eximg + chk[i].value + ",";
				n++;
			}
		}
		document.rform.delimg.value=delimg;
		document.rform.eximg.value=eximg;
		
		// 기존에 보이던것을 전부 숨김
		for(i=0;i<3;i++)
		{
			document.getElementsByClassName("fname")[i].style.display="none";	
		}
		
		// type="file"의 갯수를 변화 (삭제하고자 하는 그림이 발생하면 바꿔야함)
		// 3 - 체크된 체크박스갯수만큼 type="file"을 추가
		for(i=0;i<3-n;i++)
		{
			document.getElementsByClassName("fname")[i].style.display="inline";
		}
	}
if(rdto.getImg() != null && !rdto.getImg().trim().equals(""))
		{
			String[] img = rdto.getImg().split(","); // 그림파일을 포함
				
			for(int i=0;i<img.length;i++)
			{
			%>
				<img src="../room/img/<%=img[i]%>" width="50">
				<input type="checkbox" class="chk">
			<%
			}
		}
			%>
			<hr>
			<!-- 새로 추가하는 폼 -->
			 <input type="file" name="fname1" class="fname" style="display:none;"><br>
			 <input type="file" name="fname2" class="fname" style="display:none;"><br>
			 <input type="file" name="fname3" class="fname" style="display:none;"><br>
			</td>
update_ok Java 처리코드
public void room_update_ok(HttpServletRequest request,
HttpServletResponse response) throws Exception
{
	String path = request.getRealPath("/room/img");
	int size = 1024*1024*10;
	MultipartRequest multi = new MultipartRequest
    (request, path,size,"utf-8",new DefaultFileRenamePolicy());
	
	// 삭제할 그림을 삭제하기
	String[] delimg = multi.getParameter("delimg").split(",");
	for(int i=0;i<delimg.length;i++)
	{
		// delimg 배열에 있는 값을 하나씩 꺼내서 삭제
		File file = new File(path+"/"+delimg[i]);
		if(file.exists())
			file.delete();
	}
	// 새로추가된 그림 + 존재할 그림
	String eximg = multi.getParameter("eximg");
	
	Enumeration enu = multi.getFileNames();
	String chuga = "";
	while(enu.hasMoreElements())
	{
		chuga = chuga + multi.getFilesystemName(enu.nextElement().toString())+",";
        // enu 는 form에서 전달받은 fname1,2,3 이름을 가지고 있음
	}
	chuga = chuga.replace("null,", "");
	
	String img = chuga+eximg;
	
	String name = multi.getParameter("name");
	String price = multi.getParameter("price");
	String min = multi.getParameter("min");
	String max = multi.getParameter("max");
	String content = multi.getParameter("content");
	String id = multi.getParameter("id");
	
	String sql = "update room set img=?,name=?,price=?,min=?,max=?,content=? where id=?";
	
	PreparedStatement pstmt = conn.prepareStatement(sql);
	pstmt.setString(1, img);
	pstmt.setString(2, name);
	pstmt.setString(3, price);
	pstmt.setString(4, min);
	pstmt.setString(5, max);
	pstmt.setString(6, content);
	pstmt.setString(7, id);
	
	pstmt.executeUpdate();
	
	pstmt.close();
	conn.close();
	
	response.sendRedirect("admin_room.jsp");
}

숨긴 사진과 내용을 나오고 사라지게 하는 function 이거 개편함

function view_add(n)
	{
		if(document.getElementsByClassName("add")[n].style.display=="none")
			document.getElementsByClassName("add")[n].style.display="table-row";
		else
			document.getElementsByClassName("add")[n].style.display="none";
       
     /*전체 다 숨기기 // 딱히 쓸모는 없어보이는데 일단 알아두기
	var len = cocument.getElementsByClassName("add").length;
	for()
		document.getElementsByClassName("add")[i].style.display="none"; */
	}

i(n)값을 이용해서 view_add와 class="add"값을 동일하게 만들어줘서 클릭했을때
해당 글의 내용과 사진을 출력

for(int i=0;i<rlist.size();i++)
		{
		%>
		<tr align="center" onclick="view_add(<%=i%>)">
			<td> <%=rlist.get(i).getName()%> </td>
			<td align="right"> <%=MyJob.comma(rlist.get(i).getPrice())%> </td>
			<td> <%=rlist.get(i).getMin()%>명 </td>
			<td> <%=rlist.get(i).getMax()%>명 </td>
			<td> <%=rlist.get(i).getWriteday()%> </td>
			<td><a href="room_update.jsp?id=<%=rlist.get(i).getId()%>"> Click </a></td>
		</tr>
		<tr style="display:none;" class="add">
			<td colspan="3">
			<%
				// String img = rlist.get(i).getImg();
				// img.split(",");
			if(rlist.get(i).getImg() != null && !rlist.get(i).getImg().equals(""))
			{
				String[] img = rlist.get(i).getImg().split(",");
				
				for(int j=0;j<img.length;j++)
				{
			%>
				<img src="../room/img/<%=img[j]%>" width="100">
			<%
				}
			}
			%>
			</td>

헷갈릴거같아서 코드 다가져옴

profile
국비 코딩

0개의 댓글