파일용량을 구할 경우 filesize함수를 사용한다. 리턴 값으로 byte값이 넘어오기 때문에 사이즈를 예측하기 어렵다. 아래와 같이 변환한다.

$file_size = filesize($file_name); if($size < 1024){ return number_format($file_size * 1.024).'b'; }else if(($size > 1024) && ($file_size < 1024000)){ return number_format($file_size * 0.001024).'Kb'; }else if($size > 1024000){ return number_format($file_size * 0.000001024,2).'Mb'; }


반응형

form tag를 사용해서 submit 버튼을 누를시 comment_ok.php로 form 내용들을 전달하고 insert 한다. insert가 성공할 시 해당 글에 대한 모든 댓글을 출력하는 getAllList(); 를 호출한다.


호출 받은 getAllList()는 comment_list.php?board_num='게시물 번호' 으로 요청하고 요청받은 comment_list.php는 select 쿼리를 실행하고 배열 형태로 댓글 데이터를 담고 그 배열을 json 형태고 변환 시킨다음 반환한다.


화면.php에 있는 getJSON을 통해서 json 데이터를 받고 div에 넣는다. 

게시글에 들어오자마자 댓글을 보게 할려면 

	$(document).ready(function(){
		getAllList();
	});

를 통해 바로 출력시킨다.



화면.php

<script>
	$(document).ready(function(){
		getAllList();
	});

	var str = "";

	function getAllList(){
		var board_num = $("#board_num").val();

		console.log("getAllList()");
		console.log("board_num" + board_num);

		$.getJSON("comment_list.php?board_num="+board_num, function(data){
			console.log(data);

			$(data).each(function(){
				console.log(data);

				str += "writer : "+this.writer+"<br> title : " + 
					this.comment_title + "<br> content : " + 
					this.comment_content + "<br>";
			});


			$("#replies").html(str);
		});
	}

	$(document).on("click", "#comment_btn", function() {
		alert("click");

		var formData = $("#comment_form").serialize();

		$.ajax({
			type : 'POST',
			url : 'comment_ok.php',
			data : formData,
			success : function(response){
				if(response == 'success'){
					alert("success");
					getAllList();
				}
			}
		});
    });
</script>


등록처리하는.php (comment_ok.php)

<?
	include 'db_connect.php';
	include 'session.php';

	$board_num = $_POST['board_num'];
	$writer = $_POST['writer'];
	$comment_title = $_POST['comment_title'];
	$comment_content = $_POST['comment_content'];

	$sql = "insert into comment (board_num, writer, comment_title, comment_content, reg_date) 
			values ('$board_num', '$writer', '$comment_title', '$comment_content', now())";
	$result = mysql_query($sql) or die("Error :	" . mysql_error());

	if($result){
		echo "success";
	}
?>



댓글들 불러오는.php (comment_list.php)

<? include 'db_connect.php'; include 'session.php'; $board_num = $_GET['board_num']; $sql = "select * from comment where board_num = '$board_num' order by reg_date desc"; $result = mysql_query($sql) or die("Error : " . mysql_error()); $resultArray = array(); while($row = mysql_fetch_array($result)){ array_push($resultArray, array('comment_idx' => $row[0], 'writer' => $row[2], 'comment_title' => $row[3], 'comment_content' => $row[4])); } echo json_encode($resultArray); ?>




반응형

stream 방식으로 다운로드 하기


$filepath = $_GET['file_path'];


$filesize = filesize($filepath);

$path_parts = pathinfo($filepath);


//$filename = $path_parts['basename'];

$filename = $_GET['file_name'];

$extension = $path_parts['extension'];


header("Pragma: public");

header("Expires: 0");

header("Content-Type: application/octet-stream");

header("Content-Disposition: attachment; filename=\"$filename\"");


header("Content-Disposition: attachment; filename=".iconv("cp949", "utf-8", $filename));

한글이 깨질 경우 iconv를 이용해서 캐릭터셋을 변환한다.


header("Content-Transfer-Encoding: binary");

header("Content-Length: $filesize");


ob_clean();

flush();

readfile($filepath);

반응형

문자열로 넘어온 날짜를 포맷하는 방법.(PHP)


DB에서 날짜 형식을 바로 받아 변수에 저장하고 data함수를 사용해서 날짜를 포맷한다.
$db_date = $date_from_db;

$date = date("y-m-d H:i:s", strtotime($db_date));

포맷 형식은 http://unikys.tistory.com/272 에서

반응형

페이지 이동하는 방법


1. 자바스크립트를 이용하는 방법 

<? 
      echo("<script>location.href='경로/파일명';</script>"); 
?> 

2. 자바스크립트를 이용하는 방법 
<? 
      echo("<script>location.replace('경로/파일명');</script>"); 
?> 

3. Header 함수를 이용하는 방법 
<? 
      Header("Location:경로/파일명"); 
?> 

4. 메타태그를 이용하는 방법 
<? 
      echo("<meta http-equiv='refresh' content='시간지정' url='경로/파일명'>"); 
?> 


위의 4가지 방법 중 제일 권장하고 싶은 것은 2번입니다. 
1번 자바스크립트의 경우 href는 이전에 이미 접속했던 사이트일 경우 temp에 저장된 문서를 보여줄 가능성이 있습니다. 
3번 PHP Header()의 경우에도 캐쉬가 엉켜버립니다. 캐쉬가 엉킨다는 것은 예를 들어 게시판에서 글을 적은후 자동으로 목록으로 돌아가게 했는데 좀전에 쓴 글이 리스트에 안 보이는 경우입니다. 물론 리프레쉬하면 나타나지요. 
4번 메타태그의 경우 mtstyle.net 에서 www.mtstyle.net로 이동할 경우 무한리플래쉬가 걸립니다.



출처 : http://www.qdata.co.kr/bo/bbs/board.php?bo_table=pht&wr_id=69



반응형

jstl에서 비교문


Ex) eq (==)

1. <c:if test="${ null eq test_column }"> // null

2. <c:if test="${ 0 eq test_column }"> // 숫자

3. <c:if test="${ '0' eq test_column }"> // 문자

 

Ex) empty  

<c:if test="${ empty  test_columnMap }"> // list, map 객체 등

<c:if test="${ !empty  test_columnMap }"> // 비어 있지 않은 경우

 

Ex) ne (!=)

1. <c:if test="${ null ne test_column }"> // null

2. <c:if test="${ 0 ne test_column }"> // 숫자

3. <c:if test="${ '0' ne test_column }"> // 문자


출처 : http://cafe.naver.com/msjava/550

반응형

'JSP & Spring' 카테고리의 다른 글

JSTL 기본 사용  (0) 2016.10.31
스프링 외부 경로 폴더 지정하기  (0) 2016.09.12
@ModelAttribute, @RequestParam  (0) 2016.09.08
스프링 초기환경세팅  (0) 2016.09.04
utf-8 인코딩.  (0) 2016.09.01

<resources mapping="/picture/*" location="file:///C:/resource/pdf" />


servlet-context.xml 안에서 위와 같이 입력한다.


스프링에서 프로젝트 폴더가 아닌 외부 경로에 있는 폴더를 맵핑해서 쉽게 이미지를 가져올 수 있다.


이미지 경로를 /picture/ 로 잡았을 경우 C:/경로 아래로 찾게 되는 설정이다.



반응형

'JSP & Spring' 카테고리의 다른 글

JSTL 기본 사용  (0) 2016.10.31
jstl에서 비교문 [펌]  (0) 2016.09.20
@ModelAttribute, @RequestParam  (0) 2016.09.08
스프링 초기환경세팅  (0) 2016.09.04
utf-8 인코딩.  (0) 2016.09.01

클라이언트(jsp)에서 보내온 데이터를 컨트롤러에서 VO 나 변수로 담을 수 있는 어노테이션은 @ModelAttribute, @RequestParam이다.


@ModelAttribute은 여러개의 값을 VO로 한번에 담을 수 있다.


public String listPage(@ModelAttribute SearchCriteria cri) throws Exception{ System.out.println(cri.toString());

}

클라이언트에서 name = searchType 의 값을 subject, name = searchKeyword 의 값을 1111로 넘기고 해당 값이 들어가는 VO를 넣으면 알아서 값이 들어간다.

출력해보면  [searchType=subject, searchKeyword=1111] 와 같이 잘 나온다.



@RequestParam은 객체에 담지 않고 변수에 담는다.

public String modifyGET(@RequestParam("boardNum") int boardNum) throws Exception{ System.out.println(boardNum); }

boardNum의 값이 넘어온걸 int boardNum 에 담는다. 출력해보면 "257" 이 잘 나온다.



반응형

'JSP & Spring' 카테고리의 다른 글

jstl에서 비교문 [펌]  (0) 2016.09.20
스프링 외부 경로 폴더 지정하기  (0) 2016.09.12
스프링 초기환경세팅  (0) 2016.09.04
utf-8 인코딩.  (0) 2016.09.01
파일 업로드와 UUID  (0) 2016.07.30

불러온 값을 다시 삽입하는 쿼리문이다.


쿼리를 반복 실행할 수록 불러오는 값이 많아져 값이 배로 삽입된다.


insert into board (title, content, userName) (select title, content, userName from board);


반응형

'DB' 카테고리의 다른 글

터미널에서 MySql 사용하기  (0) 2016.09.04

모든 공백 정규식

var regExp = /\s/g;


숫자 정규식

var regExp = /^[0-9]+$/;


이메일 정규식

var regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i; 


핸드폰 번호 정규식

var regExp = /^\d{3}-\d{3,4}-\d{4}$/;


일반 전화번호 정규식

var regExp = /^\d{2,3}-\d{3,4}-\d{4}$/;


아이디나 비밀번호 정규식 

var regExp = /^[a-z0-9_]{4,20}$/; 


휴대폰 번호 체크 정규식 

var regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;


반응형

+ Recent posts