글 작성 배경:갤러리 화면 구성 중 이미지 저장하는 부분이 필요하게 됨

알아두어야 할 내용:$_FILES[][]
 - HTML 폼에서 <input type="file" id="userfile" .....>를 사용한 파일에 대한 정보를 가지고 있음
 - register_globals(php.ini 파일에 들어있는 변수값)가 off일때 꼭 사용해야 함
 - $_FILES['userfile']['tmp_name'] - 웹 서버에 임시로 저장된 파일의 위치.
 $_FILES['userfile']['name'] - 사용자 시스템에 있을 때의 파일 이름.
 $_FILES['userfile']['size'] - 파일의 바이트 크기.
 $_FILES['userfile']['type'] - 파일의 MIME 타입을 가리킴. (예:text/plain이나 image/gif 등)
 $_FILES['userfile']['error'] - 파일 업로드할 때 일어난 오류 코드를 알려줌



예제
input.php(입력폼)
---------------------------------------------------------------------------------------
<form method="post" enctype="multipart/form-data" action="save.php">
........
<div id="pimage"><p>이미지:<input type="file" name="uimg" id="textfield" />(이미지사이즈 : 168 X 115)</div>
.........
</form>
---------------------------------------------------------------------------------------

save.php(저장폼)
---------------------------------------------------------------------------------------
<?php
 $img_dir = $_SERVER['DOCUMENT_ROOT']."/저장할디렉토리명";           //저장 디렉토리
 $img_tmp = $_FILES['uimg']['tmp_name'];             //임시 파일명
 $img_type = $_FILES['uimg']['type'];             //저장가능 이미지 타입
 $img_name = $_FILES['uimg']['name'];             //파일명(ex : xxxx.jpg)

 $filename = explode(".",$img_name);              //파일명 및 확장자를 분리한 배열
 $extension = strtoupper($filename[sizeof($filename)-1]);        //확장자 추출
//타임 및 난수를 이용해서 기존 파일명 대신 사용할려고 함
 srand((double)microtime() * 1000000);             //난수만들기(seed 초기화)
 $random = sprintf('%03d',rand(1,999));             //난수만들기
 $up_filename = time()."_".$random.".".strtolower($extension);  //DB저장 파일명       
 $save_name = $img_dir."/".$up_filename;             //copy시 전체경로 및 파일명

 //파일 확장자로 올릴 수 있는 파일 체크함
 if($extension == "JPG" || $extension == "GIF") {
 } else {
  echo("
   <script>
   window.alert('지원 가능하지 않는 파일입니다. \\n이미지를 입력하여 주세요.');
   history.go(-1);
   </script>
  ");
  exit;
 }

 if(copy($img_tmp, $save_name)) {     //파일 업로드
  unlink($img_tmp);        //임시파일삭제
 }
 else {
  unlink($img_tmp);
  echo("
    <script>
    window.alert('파일 저장시 오류가 발생하였습니다.\\n감사합니다.');
    history.go(-1);
    </script>
   ");
  exit;
 }
.....
DB저장부분 삽입
.....
?>
---------------------------------------------------------------------------------------

이상으로 간단한 예제를 적습니다.

공부시에 많은 도움되면 좋겠습니다.


개발중에 가장 유용하게 쓰이는 시간 관련 함수를 정리해 보았습니다.

우선 간단한 예제인데요..개발중에 더 유용한 정보가 올리면 덧붙여서 올리겠습니다.

오늘도 즐거운 하루 되십시오.

1.time함수
  int time(void)
  설명 : 현재 시간을 반환한다.
  반환값 : timestamp로 반환한다.

2. strtotime함수
  int strtotime ( string $time [, int $now = time() ] )
  설명 : string값을 통해 timestamp값으로 반환한다.
  인수 :
  time(date 및 time 포맷)
  now(날짜 계산을 위해 기본적으로 사용되어지는 timestamp)
  반환값 : timestamp로 반환한다.

3. date함수
  string date ( string $format [, int $timestamp ] )
  설명 : 정수형으로 주어지는 timestamp나, timestamp가 주어지지 않았을 경우에는 현재 로컬 시간을 사용하여, 주어진 포맷 문자열에 따라 형식화한 문자열을 반환합니다. 즉 timestamp는 선택적이고, 기본값은 time()의 값입니다.
  인자 :
  format(출력하는 날짜 string의 형식) - 자주 쓰이는 format 정리(매뉴얼 참조)
     d -> 일, 앞에 0이 붙는 2 숫자(01에서 31)
     D -> 요일 글자 표현, 3문자(Mon에서 Sun)
     j -> 앞에 0이 붙지 않는 일(1에서 31)
     l -> 요일의 완전한 글자 표현(Sunday에서 Saturday)
     N -> 요일의 ISO-8601 숫자 표현(1(월요일)에서 7(일요일))
     w -> 요일 숫자 표현(0(일요일)에서 6(토요일))
     W -> ISO-8601 주차, 주는 월요이에 시작(42(그 해의 42번째 주))
     F -> January나 March 같은 월의 완전한 글자 표현(Januray에서 December)
     m -> 0이 붙는 월 숫자 표현(01에서 12)
     M -> 월의 축약 글자 표현, 3문자(Jan에서 Dec)
     n -> 0이 붙지 않는 월 숫자 표현(1에서 12)
     t -> 주어진 월의 일 수(28에서 31)
     L -> 윤년 여부(윤년엔 1, 그 외엔 0)
     Y -> 연도의 완전한 숫자 표현, 4 숫자(1999나 2012)
     y -> 연도의 두 숫자 표현(99나 12)
     a -> 오전과 오후의 소문자(am 또는 pm)
     A -> 오전과 오후의 대문자(AM 또는 PM)
     g -> 0이 붙지 않는 12시간 형식 시(1에서 12)
     G -> 0이 붙지 않는 24시간 형식 시(1에서 24)
     h -> 0이 붙는 12시간 형식 시(01에서 12)
     H -> 0이 붙는 24시간 형식 시(00에서 24)
     i -> 0이 붙는 분(00에서 59)
     s -> 초, 0이 붙음(00에서 59)
  timestamp(선택적인 timestamp 인수는 timestamp가 주어지지 않았을 경우, 현재 로컬 시간을 기본값으로 가지는 integer 유닉스 타임스탬프입니다. 즉, 기본값은 time() 값입니다.)

4. mktime함수
  int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )
  설명 : timestamp형태로 만들어준다.
  인자 :
  hour : 시간
  minute : 분
  second : 초
  month : 월
  day : 일
  year : 년도



예시1)날짜 표출

<?php
$nextWeek = time() + (7 * 24 * 60 * 60); // 7 days; 24 hours; 60 mins; 60secs (현재시간에 7일에 해당하는 시간을 더한다)
echo 'Now:       '. date('Y-m-d') ."\n";
echo 'Next Week: '. date('Y-m-d', $nextWeek) ."\n";
// or using strtotime():
echo 'Next Week: '. date('Y-m-d', strtotime('+1 week')) ."\n";
?>

결과값 :
Now:        2012-02-06
Next Week : 2012-02-13
Next Week : 2012-02-13

 

예시2)날짜 표출

<?php
$recentdate= mktime(0,0,0,2,6,2012); //오늘날짜

$year=date('Y',$recentdate);
$month=date('m',$recentdate);
$day=date('d',$recentdate);

echo 'Now:       '.$year."월 ".$month."일 ".$day."일"."\n";
?>

결과값:
Now:        2012-02-06

 

예시3)strtotime 함수 사용

<?php
echo 'Now:       '.date('Y-m-d', strtotime("now"))."\n";
echo '날짜:      '.date('Y-m-d', strtotime("10 September 2000"))."\n";
echo '날짜:      '.date('Y-m-d', strtotime("+1 day"))."\n";
echo '날짜:      '.date('Y-m-d', strtotime("+1 week"))."\n";
echo '날짜:      '.date('Y-m-d', strtotime("+1 week 2 days"))."\n";
echo '날짜:      '.date('Y-m-d', strtotime("next Thursday"))."\n";
echo '날짜:      '.date('Y-m-d', strtotime("last Monday"))."\n";
?>

결과값
Now:        2012-02-06
날짜:       2000-09-10
날짜:       2012-02-17
날짜:       2012-02-13
날짜:       2012-02-15
날짜:       2012-02-16
날짜:       2012-01-30
 

러닝 PHP : PHP 입문에서 프레임워크를 활용한 실전 프로그래밍까지(PHP 7 기반)

COUPANG

www.coupang.com

 

참 오랫만에 글을 올리는 것 같습니다..

제가 좀 회사에 적응한다고 나름 바뻐서 이렇게 주말에 올리게 되었습니다..

오늘은 php를 개발한다면 그래도 mysql에 대한 함수를 알아야 할 것 같아서 정리해 보았습니다.

역시 PHP 매뉴얼을 참조해서 내용을 적어보았습니다. 많은 도움이 되었으면 합니다.

1. resource mysql_connect ([ string $server [, string $username [, string $password [, bool $new_link [, int $client_flags ]]]]] )
설명 : MySQL 서버에 접속을 생성하거나 기존 접속을 재사용한다.
인수 :
server(MySQL 서버명을 입력하며, 포트번호가 포함될 수 있다. 예) "hostname:port" 또는, 로컬호스트를 위해 로컬 소켓 경로가 될 수도 있다. 예) ":/path/to/socket" , PHP 지시어 mysql.default_host를 지정하지 않았다면(기본값), 'localhost:3306'입니다. SQL 안전 모드에서는, 이 인수를 무시하고 항상 'localhost:3306' 값을 사용합니다.)
username(사용자명. 기본값은 mysql.default_user로 지정합니다. SQL 안전 모드에서는, 이 인수를 무시하고 사용중인 서버 프로세스를 소유하는 사용자 이름을 사용합니다.)
password(비밀번호. 기본값은 mysql.default_password로 지정합니다. SQL 안전 모드에서는, 이 인수를 무시하고 빈 비밀번호를 사용합니다.)
new_link(동일한 인수로 mysql_connect()을 다시 호출하면, 새로운 link가 생성되는 것이 아니라, 이미 생성된 link 식별자 값을 돌려받게 된다. 단, new_link 로 mysql_connect()를 호출하면 동일한 인수로 mysql_connect()를 이미 호출하였다 하더라도 항상 새로운 접속을 생성한다. SQL 안전 모드에서는, 이 인수를 무시합니다.)
client_flags(client_flags 인수는 다음 상수들을 조합하여 사용할 수 있습니다: 128 (LOAD DATA LOCAL 핸들링 활성화), MYSQL_CLIENT_SSL, MYSQL_CLIENT_COMPRESS, MYSQL_CLIENT_IGNORE_SPACE, MYSQL_CLIENT_INTERACTIVE. 자세한 정보는 예약 상수를 읽어보십시오. SQL 안전 모드에서는, 이 인수를 무시합니다.)
반환값 : 접속 성공시 MySQL link 식별자를 반환하고, 실패시에는 FALSE를 반환한다.

2. bool mysql_select_db ( string $database_name [, resource $link_identifier ] )
설명 : 접속 지시자와 연관된 서버에서 현재 활성화할 데이터베이스를 선택한다. 모든 수반되는 mysql_query() 호출은 활성 데이터베이스에서 처리될 것이다. 
인수 :
database_name(선택할 데이터베이스의 이름.)
link_identifier(MySQL 연결. 지정하지 않으면 mysql_connect()로 연 마지막 연결을 사용합니다. 연결이 없으면, 인수 없이 mysql_connect()를 호출하여 연결을 만듭니다. 연결이 성립되지 않으면 E_WARNING 등급의 오류를 생성합니다.)
반환값 : 성공할 경우 TRUE를, 실패할 경우 FALSE를 반환합니다.

3. resource mysql_query ( string $query [, resource $link_identifier ] )
설명 : mysql_query()는 link_identifier 로 지정한 데이터베이스 서버에 하나의 질의를 전송합니다. (다중 질의는 지원하지 않습니다)
인수 :
query(SQL 질의 -> 질의 문자열은 세미콜론으로 끝나지 않아야 합니다.)
link_identifier(MySQL 연결. 지정하지 않으면 mysql_connect()로 연 마지막 연결을 사용합니다. 연결이 없으면, 인수 없이 mysql_connect()를 호출하여 연결을 만듭니다. 연결이 성립되지 않으면 E_WARNING 등급의 오류를 생성합니다.)
반환값 : mysql_query()는 SELECT, SHOW, DESCRIBE, EXPLAIN, 결과셋을 반환하는 기타 구문에서 성공시 resource를, 오류시 FALSE를 반환합니다. mysql_query()는 다른 형식의 SQL 구문, INSERT, UPDATE, DELETE, DROP 등에서 성공하면 TRUE를, 실패하면 FALSE를 반환합니다. 반환되는 결과 리소스는 mysql_fetch_array()와 같은 결과 테이블을 다루는 함수들에 전달하여 데이터에 접근할 수 있다. SELECT 구문으로 부터 얼마나 많은 행이 있는지 알기 위해서는 mysql_num_rows()를, DELETE, INSERT, REPLACE, UPDATE 구문으로 변경된 행의 개수를 알기 위해서는 mysql_affected_rows()를 사용한다. 질의에 의해 참조되는 테이블에 접근을 허용되지 않은 사용자에 의해 mysql_query()가 실패하면 FALSE를 반환한다.

4. array mysql_fetch_array ( resource $result [, int $result_type ] )
설명 : 인출된 행을 배열로 반환하고, 앞으로 내부 데이터 포인터를 이동한다.
인수 :
result(mysql_query() 호출을 통한 결과 resource.)
result_type(인출될 배열의 형태. 배열의 형태는 다음과 같은 상수가 올 수 있다: MYSQL_ASSOC, MYSQL_NUM, MYSQL_BOTH. 기본값은 MYSQL_BOTH이다.)
반환값 : 인출된 문자열의 배열을 반환하거나 더 이상 인출할 행이 없을 경우에는 FALSE를 반환한다. 인출되는 배열은 result_type 에 따라 결정이 된다. 기본값인 MYSQL_BOTH는 연관 색인과 숫자형 색인 모두 반환할 것이다. MYSQL_ASSOC를 사용하면, mysql_fetch_assoc()처럼 연관된 인덱스 배열로 반환하고, MYSQL_NUM를 사용하면, mysql_fetch_row()처럼 숫자형 인덱스 배열로 반환한다. 동일한 이름을 포함하는 둘 또는 그 이상의 컬럼들은 마지막 컬럼이 우선권을 가질 것이다. 동일한 이름의 다른 컬럼에 접근하기 위해서는 숫자 색인 또는 별명(alias) 컬럼명을 사용하면 된다. 단, 별명 컬럼들은 원래의 컬럼명으로 데이터를 접근할 수 없다.

5. string mysql_result ( resource $result , int $row [, mixed $field ] )
설명 : MySQL 결과 집합으로부터 하나의 셀에 있는 데이터를 반환한다. 거대한 결과 집합으로 작업할 때, 행 전체를 인출하는 함수 중 하나를 사용할 것이다. 이들 함수는 하나의 함수 호출로 다중 셀의 데이터를 반환할 수 있어서 mysql_result()보다 더 빠르다. 또한, 필드 인수로 숫자 오프셋을 사용하는 것이 필드명 또는 테이블명.필드명 인수를 사용하는 것보다 더 빠르다.
인수 :
result (mysql_query() 호출을 통한 결과 resource.)
row(검색된 결과에서 행번호. 행번호는 0부터 시작한다.)
field(검색을 위한 필드 오프셋 또는 이름. The name or offset of the field being retrieved. 필드 오프셋, 필드명 또는 테이블명.필드명(tablename.fieldname)으로 설정이 가능하다. 컬럼 이름이 별명(alias)이라면('select foo as bar from...'), 컬럼명 대신 별명을 사용한다. 정의하지 않으면 첫번째 필드를 검색한다.)
반환값 : 성공하면 MySQL 결과 집합으로부터 하나의 셀의 데이터를, 실패하면 FALSE를 반환한다

6. bool mysql_close ([ resource $link_identifier ] )
설명 : mysql_close()는 link_identifier 와 연관된 MySQL서버의 비영속적 접속을 종료한다. link_identifier 가 기술되지 않으면 최근 접속된 연결을 사용한다. mysql_close()는 비영구적으로 열려진 링크에서는 일반적으로 스크립트 실행 마지막 부분에서 자동으로 종료되므로 사용할 필요가 없다. resource 해제하기.
인수 :
link_identifier(MySQL 연결. 지정하지 않으면 mysql_connect()로 연 마지막 연결을 사용합니다. 연결이 없으면, 인수 없이 mysql_connect()를 호출하여 연결을 만듭니다. 연결이 성립되지 않으면 E_WARNING 등급의 오류를 생성합니다.)
반환값 : 성공할 경우 TRUE를, 실패할 경우 FALSE를 반환합니다.



예시) 간단하게 함수를 만들어서 사용해 보십시오.
class화 사용
class db_connect {
function db_connect($host,$user,$pass,$db) {            
        $connect=@mysql_connect("$host","$user","$pass");
        if(!$connect) {
           //오류처리
            exit;
        }
        else {
            $status=mysql_select_db($db, $connect);
            if(!$status) {
                //오류처리
                exit;
            }
        }
    }

    function query_func($query,$num) {
         switch($num) {
            case (1) : $query=mysql_query($query,$connect);
            case (2) : $query=mysql_num_rows($query); break;
            case (3) : $query=mysql_fetch_array($query); break;
            case (4) : $query=@mysql_result($query,0); break;
            case (5) : $query=mysql_fetch_row($query); break;
            case (6) : $query=mysql_affected_rows($connect); break;
            case (7) : $query=mysql_fetch_assoc($query); break;
        }
        return $query;
    }

    function close() {
        mysql_close($connect);
        return;
    }
 }

사용방법
$DBCON=new db_connect($HOST,$USER,$PWD,$DB);
$rs=$DBCON->query_func($QUERY,1);
$count=$DBCON->query_func($rs,2); //쿼리의 결과행의 갯수를 반환함

while($data=$DBCON->query_func($rs,4)){ //쿼리의 결과값을 배열에 저장함
      //가져온 데이터로 표출구현함
}

지효가 놀자고 해서 이제 글을 마칠까 합니다. 많은 도움되면 좋겠습니다.


안녕하세요...이번주 시작을 알리는 월요일이 되었습니다..

대부분의 사람들이 월요일날 힘드실거라는 생각이 듭니다.

그래서 온라인 교육중에 좋은 내용이 있어 글을 올릴려고 합니다.

아래와 같이 좋은 매너를 갖도록 노력해보면 좋은 비즈니스 문화가 이루어질거라고 확신합니다.

즐거운 하루 되십시오.

발췌 : 메인비즈 사이버연수원 온라인 교육 중 '고객에게 사랑받는 비즈니스 매너'
        좋은 내용 정말로 감사하다는 말씀 드립니다.

0. 좋은 매너를 갖기 위한 형성 요소
   - 웃으면 복이 와요(첫인상, 친절, 표정)
   - 보면 인사하라(인사)
   - 자세를 바르게 하라(자세)
   - 말씨를 부드럽게 하라
   - 용모 복장을 갖춰 입어라

   - 명언 : 재승덕 하지 마라(재주가 덕을 넘게 하지 마라)
              소문만복래(웃는 표정이라면 복이 따라서 굴러 들어온다)

1. 호감주는 이미지는 사람을 부른다(첫인상)
   - 첫인상에 승부를 걸어라 
   - 좋은 이미지는 호감과 신뢰감으르 부른다

2. 친절은 그 후로도 오랫동안 추억된다.(친절)
   - 친절은 자신을 위한 것임
   - 대부분 친절하다고 자신하지 마라

3. 표정은 최고의 커뮤니케이션이다.(표정)
   - 웃음은 건강이다
   - 미소는 행운을 불러온다
   - 표정은 하루 아침에 완성되지 않는다.

5. 자세는 마음의 거울이다.(자세)
   - 바른 자세는 이미지를 돋보이게 한다.
   - 걸음걸이는 품격이다.

6. 용모 복장은 나를 표현하는 또 다른 명함이다.(용모복장)
   - 용모 복장은 비즈니스의 전략적 수단이다.
   - 깔끔함과 단정함이 조화를 이루어야 하며 시간과 장소, 상황에 맞도록 입어야 함

7. 인사는 인간관계의 시작이다.(인사)
   - 인사란 존경심과 친절을 상대방에게 나타내는 형식임 인간관계를 원활하게 하는 매너
   - 좋은 인사의 5가지 포인트 : 내가 먼저, 상대를 보고, 미소 띈 음성으로, 밝은 표정으로, 상황에 맞춰
 
기타 1. 바른 대화 매너
   - 상대에 맞추어 알아 듣기 쉽게 말한다.
   - 반론을 제기하려면 일단 긍정하라.
   - 거절을 할때는 정중한 태도로 분명한 '아니오'라고 말하라
   - 목소리에 표정을 넣어라
   - 정확하게 말하라
   - 맞장구를 치자
   - 나의 표정부터 열자

기타 2. 전화응대
    - 신속하게 받는다
    - 정확하게 받는다
    - 친절하게 받는다

기타 3. 방문시 당신의 모습이 회사이다.
    - 회사를 나가는 순간, 자신의 모습은 회사를 대표한다.
    - 구체적으로 시간을 정하고 만나자

기타 4. 좋은 매너와 태도가 고객을 행복하게 만든다.
    - 무슨 일을 하기 보다는 어떤 자세로 임하느냐가 중요하다(어떤 일이든 가치있고 소중하다)
    - 좋은 매너의 직원이 회사를 소문 내준다.
    - 자신이 행복해야 고객이 행복하다

기타 5. 국제 이문화 이해하기
    - 나라 별 팁 문화를 이해하여 그 나라의 해당화폐로 건네는 것이 좋다.
    - 팁을 건넬 때에는 돈이 보이지 않게 접어서 손바닥이 밑으로 가게 하여 감사의 표현을 함
    - 선물을 받아도 되는 지 여부를 판단해야 하며 감사에 대한 인사를 잊지 않는다.
    - 나라마다 금기된 선물 품목을 미리 이해한다.
    - 나라마다 상대방과의 쾌적거리를 유지하라

기타 6. 비즈니스 테이블 매너
    - 약속시 10전에 도착하고 좋은 인상을 주도록 노력해야 한다.

기타 7. 해외출장
    - 상담은 상대를 논리적이고 합리적으로 설득해 나가는 과정이다.
    - 상담이 시작되면 개인이 아니라 기업과 한국의 대표하는 자세로 임해야 함
    - 상대국가에 맞는 상담을 통해서 신뢰감을 조성하기 위해 국가별 상담습관을 익혀야 함


개발 중에 필요할 것 같아 사이트를 정리할려고 합니다.

많은 도움이 되었으면 합니다. 계속해서 추가적으로 올립니다.

[apach, php, mysql]
APM사이트 : http://www.apmsetup.com
apache사이트 : http://httpd.apache.org
php사이트 : http://kr.php.net / http://windows.php.net/
mysql사이트 : http://www.mysql.com
phpAdmin사이트 : http://www.phpmyadmin.net
php매뉴얼 : http://docs.php.net/manual/kr/funcref.php
jQuery : http://jquery.com/
JSON : http://json.org/json-ko.html
Javascript소스를 PHP로 : http://phpjs.org

[프레임워크]
CodeIgniter 한국사용자포럼 : http://www.codeigniter-kr.org
CodeIgniter 영문싸이트 : http://www.codeigniter.com

+ Recent posts