전화번호의 형태가 010-1234-5678의 형태에서 01012345678의 형태로 변환하기 위해서는 str_replace() 함수를 사용한다.


바뀐 값을 저장할 변수 = str_replace("바꿀 기호", "바뀐 기호", 바꿀 기호가 저장된 변수명); 의 형태로 사용한다.


<?php $phone_num = str_replace("-", "", $a); ?>


010-1234-5678의 값이 저장된 $a를 str_replace() 함수를 사용하여 "-"(hyphen) 기호를 처음에 넣고 그 다음에 "" 로 교체하는 부분을 두번째에 넣고 $phone_num에 저장한다.


$phone_num을 출력해보면 01012345678의 형태로 "-"(hyphen) 이 없어진 값으로 들어가게 된다.


2016/02/11의 형태로 된 날짜도 2016.02.11의 형태로 바꾸는 것도  str_replace("/", ".", $date)  로 쉽게 변경이 가능하다.

반응형

DB에 저장된 전화번호(휴대폰번호) 형식에서 01012345678과 같은 형식으로 저장되는 경우도 있다.

이러한 형식의 전화번호를 010-1234-5636으로 짜르고 "-"를 넣어 변환하는 방법은 다음과 같다.



function format_phone($phone){ $phone = preg_replace("/[^0-9]/", "", $phone); $length = strlen($phone); switch($length){ case 11 : return preg_replace("/([0-9]{3})([0-9]{4})([0-9]{4})/", "$1-$2-$3", $phone); break; case 10: return preg_replace("/([0-9]{3})([0-9]{3})([0-9]{4})/", "$1-$2-$3", $phone); break; default : return $phone; break; } }


먼저 전화번호를 짜르기 위한 함수를 만든다.


대부분이 사용하는 휴대폰번호는 11자리(01012345678)이다. 그럴 경우 3자리(010), 4자리(1234), 4자리(5678)와 같이 나누고 그 사이에 "-"를 넣는다.

switch문을 이용하여 변수의 길이를 파악하고 해당 자리 수에 맞는 형식으로 preg_replace로 자른 부분에 - 를 넣고 바뀐 것으로 return 한다.


$format_phone = format_phone($phone);


다음과 같이 DB에서 넘어온 값을 format_phone() 함수에 넣고 리턴 값을 변수에 저장하면 된다.


$format_phone을 출력하면 010-1234-5678과 같이 - 가 입력된다.

반응형

게시글을 등록할 경우 제목과 내용을 테이블에 넣는 쿼리 부분과 파일첨부에 대한 정보를 다른 테이블에 넣을 경우 게시물 PK(primary key) 값이 필요하다. 그래야 그 파일첨부한 정보가 어떤 게시물에 대한 파일인지 알기 때문이다.


INSERT 문을 실행하고 방금 넣은 쿼리에 대한 PK값을 반환하는 함수가 필요하다.


$sql = "INSERT INTO t_board ( board_title, board_contents ) VALUES ( '".$board_title."', '".$board_contents."' )"; $result = mysql_query($sql); $board_no = mysql_insert_id();


mysql_insert_id()를 통해서 값을 얻어올 수 있다.


$board_no 변수 안에 방금 실행한 쿼리문의 PK가 담긴다.

반응형

파일용량을 구할 경우 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



반응형

+ Recent posts