728x90

ASCII Characters (Printable)

문자 Entity Name Entity Number Description
( )     Parenthesis(퍼렌서시스, 소괄호)
{ }     Brace(브레이스, 중괄호)
[ ]     Bracket(브래킷, 대괄호)
< >     Angle Bracket(앵글 브래킷, 꺽쇠괄호)
    &#32; Space (스페이스, 공백)
!   &#33; Exclamation mark (엑스클러메이션 마크, 느낌표)
"   &#34; Quotation mark (쿼테이션 마크, 쌍따옴표)
#   &#35; Number sign (넘버 사인, 샵)
$   &#36; Dollar sign
%   &#37; Percent sign
& &amp; &#38; Ampersand
'   &#39; Apostrophe
(   &#40; Opening/Left Parenthesis
)   &#41; Closing/Right Parenthesis
*   &#42; Asterisk (애스터리스크)
+   &#43; Plus sign
,   &#44; Comma (콤마)
-   &#45; Hyphen (하이픈)
.   &#46; Period (피리어드)
/   &#47; Slash (슬래쉬)
0   &#48; Digit 0
1   &#49; Digit 1
2   &#50; Digit 2
3   &#51; Digit 3
4   &#52; Digit 4
5   &#53; Digit 5
6   &#54; Digit 6
7   &#55; Digit 7
8   &#56; Digit 8
9   &#57; Digit 9
:   &#58; Colon (콜론)
;   &#59; Semicolon (세미콜론)
< &lt; &#60; Less-than
=   &#61; Equals sign
> &gt; &#62; Greater than
?   &#63; Question mark (쿼스쳔 마크)
@   &#64; At sign (앳 사인)
A   &#65; Uppercase A
B   &#66; Uppercase B
C   &#67; Uppercase C
D   &#68; Uppercase D
E   &#69; Uppercase E
F   &#70; Uppercase F
G   &#71; Uppercase G
H   &#72; Uppercase H
I   &#73; Uppercase I
J   &#74; Uppercase J
K   &#75; Uppercase K
L   &#76; Uppercase L
M   &#77; Uppercase M
N   &#78; Uppercase N
O   &#79; Uppercase O
P   &#80; Uppercase P
Q   &#81; Uppercase Q
R   &#82; Uppercase R
S   &#83; Uppercase S
T   &#84; Uppercase T
U   &#85; Uppercase U
V   &#86; Uppercase V
W   &#87; Uppercase W
X   &#88; Uppercase X
Y   &#89; Uppercase Y
Z   &#90; Uppercase Z
[   &#91; Opening/Left square bracket
\   &#92; Backslash (백슬래쉬)
]   &#93; Closing/Right square bracket
^   &#94; Caret (캐럿)
_   &#95; Underscore (언더스코어)
`   &#96; Grave accent (그레이드 액센트)
a   &#97; Lowercase a
b   &#98; Lowercase b
c   &#99; Lowercase c
d   &#100; Lowercase d
e   &#101; Lowercase e
f   &#102; Lowercase f
g   &#103; Lowercase g
h   &#104; Lowercase h
i   &#105; Lowercase i
j   &#106; Lowercase j
k   &#107; Lowercase k
l   &#108; Lowercase l
m   &#109; Lowercase m
n   &#110; Lowercase n
o   &#111; Lowercase o
p   &#112; Lowercase p
q   &#113; Lowercase q
r   &#114; Lowercase r
s   &#115; Lowercase s
t   &#116; Lowercase t
u   &#117; Lowercase u
v   &#118; Lowercase v
w   &#119; Lowercase w
x   &#120; Lowercase x
y   &#121; Lowercase y
z   &#122; Lowercase z
{   &#123; Opening/Left curly brace
|   &#124; Vertical bar (버티컬 바)
}   &#125; Closing/Right curly brace
~   &#126; Tilde (틸드)

 

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP] PHP 문자열 찾기  (0) 2017.11.14
[PHP] 배열에만 동작하는 foreach 문  (0) 2017.01.26
PHP Class 개념 이해 ★★  (0) 2017.01.10
PHP isset 과 empty 설명  (1) 2016.04.27
PHP 대체 문법  (0) 2016.04.05
블로그 이미지

Link2Me

,
728x90

PHP에서 구분자로 문자열 자르기를 하려고 하는데 구분자가 문자열에 여러개 나올 경우가 있다.

구분자를 뒤에서부터 찾는 방법을 알아보려고 찾아보고 적어둔다.


stripos 는 대상 문자열을 앞에서 부터 검색하여 찾고자 하는 문자열이 몇번째 위치에 있는지를 리턴하는 함수
stripos(대상 문자열, 조건 문자열);

strripos 는 대상 문자열을 뒤에서 부터 검색하여 찾고자 하는 문자열이 몇번째 위치에 있는지를 리턴하는 함수
strripos(대상 문자열, 조건 문자열);


$curdir = substr($dir,1,strlen($dir)-1); // 현재 폴더 정보

$filePath = substr($curdir,0,strripos($curdir, "/")); // 상위폴더

$updir = substr($filePath,0,strripos($filePath, "/")); // 차상위폴더


'Web 프로그램 > PHP 문법' 카테고리의 다른 글

HTML Entity List (특수문자 용어)  (0) 2021.11.27
[PHP] 배열에만 동작하는 foreach 문  (0) 2017.01.26
PHP Class 개념 이해 ★★  (0) 2017.01.10
PHP isset 과 empty 설명  (1) 2016.04.27
PHP 대체 문법  (0) 2016.04.05
블로그 이미지

Link2Me

,
728x90

foreach문은 배열에서만 동작한다.
키(key)와 값(value)로 분리, 변수로 지정 가능하다.
배열이 아니면 php코드 내에 오류메시지를 출력하고, 다차원 배열이나 중첩도 가능하다

<?php
$A = array (
    '2017-01-25' => '가가가',
    '2017-01-26' => '나나나'
);

// 배열에만 동작하는 반복문 foreach문
foreach($A as $key => $value){
    if($key !== date("Y-m-d")) continue;
    echo $value.'<br />';
}

$colors = array("red","green","blue","yellow");
foreach($colors as $key => $value){
    //echo $value.'<br />';
    echo $value.'-'.$colors[1].'<br />';
}


$numItems = count($colors); // 배열 개수 카운트
$i = 0;
foreach($colors as $key=>$value) {
  if(++$i === $numItems) {
    echo "last index!";
  }
}

?>


// 중첩 foreach 문

foreach($samplearr as $key => $item){
   echo $key;
    foreach($item as $detail){
       echo $detail['value1'] . " " . $detail['value2']
     }
 }

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

HTML Entity List (특수문자 용어)  (0) 2021.11.27
[PHP] PHP 문자열 찾기  (0) 2017.11.14
PHP Class 개념 이해 ★★  (0) 2017.01.10
PHP isset 과 empty 설명  (1) 2016.04.27
PHP 대체 문법  (0) 2016.04.05
블로그 이미지

Link2Me

,
728x90

Class 란 객체(object)를 만들기 위한 설계도이다.

객체지향에 대한 개념을 잘 이해하고자 한다면, 유투브 강좌 "자바의 정석"을 추천한다.


PHP Class 를 이용하면 함수 이상으로 코드를 재사용할 수 있다.


PHP의 모든 함수와 클래스는 전역이다.
함수가 내부에서 정의되었더라도 외부에서 호출할 수 있으며, 반대도 성립한다.
PHP는 함수 오버로딩(overloading)을 지원하지 않으며, 함수 정의를 해제하거나 이미 선언된 함수를 다시 선언할 수 없다.


이중 밑줄(__) 로 시작하는 PHP 함수를 매직 메소드(Magic Method)라 부른다.

Magic Method 에는 __construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state() 그리고 __clone() 이 있다.


  __construct() : 클래스의 생성자
     새로운 오브젝트가 생성(인스턴스화)될때마다 이 메소드를 호출

  __destruct() : 클래스의 소멸자
     특정 오브젝트에의 모든 참조(레퍼런스)가 삭제된 직후 도는 오브젝트가 명시적으로 파기된 직후 호출
  __set() – 엑세스 할 속성에 데이터를 쓸 때 사용 (저장)
  __get() – 엑세스 할 속성에서 데이터를 읽을 때 사용 (출력)
  __isset() – 엑세스할 속성에 isset() 또는 empty() 를 호출하여 트리거 됨 (확인)
  __unset() – 엑세스 할 속성에 unset() 를 사용할 경우 호출 (삭제)


클래스 정의

class 를 정의하기 위해서는 class 키워드를 사용하여 정의하여야 한다.

Login 으로 클래스를 정의할 수도 있지만 클래스 라는 걸 인지하기 쉽도록 LoginClass 로 정의했다.


<?php

// 클래스명은 첫자는 대문자로 시작하고, 파일명과 동일하게 한다.

class LoginClass { // LoginClass 클래스 선언
    public $email, $name;  //public으로 변수 선언

    function __construct(){       // 클래스의 생성자 선언
        $this->name = "Link2me"; // 객체가 생성되면서 name 속성에 Link2me 대입
    }

    function __destruct(){
        echo "Login Class 객체 소멸";
    }

    function UserIDJoinCheck($userID) { // 함수(메소드) 선언
        if(!isset($userID) || empty($userID)) {
            return '-1';
        } else {
            global $db; //global 키워드를 사용하여 변수에 선언할 경우 함수 밖의 변수를 참조할 수 있다.          
            $userID = preg_replace("/[\s\t]+/","", $userID); // 공백이나 탭 제거(사용자 실수 방지)

            $sql = "select id, count(id)
from member ";
            $sql.= "where id= '".$userID."' ";
            if($result = mysql_query($sql,$db)) { //성공
                $row = mysql_fetch_row($result);
                if($row[1] == '0') return 0; // userID 미가입
                return $row[1];
            } else {
                return '-1';
            }
        }
    }


    static function MyName(){
        echo "My name is Link2me.";
    }

}
?>


접근 제한자

public  
- 클래스 안, 밖에서 접근이 가능하다.
- 키워드를 아무것도 적지 않았을 경우에는 public 이 기본 값으로 적용된다.

protected
- 클래스 안에서만 접근이 가능하지만 하위 클래스로 상속이 가능하다.
  하지만 하위 클래스 외부에선 접근이 불가하다.

private
- 클래스 안에서만 접근이 가능하며, 상속이 안된다.


객체 생성

객체를 생성하려면 new 키워드를 사용한다.

$object = new LoginClass;  // new 키워드로 LoginClass 객체 생성(객체화, 인스턴스화)


객체 접근

클래스 메서드 내에서 비정적 객체(object)의 속성(property)에 접근하는 방법은 객체연산자( -> )를 사용한다.

$data = $object->UserIDJoinCheck($id);

속성이나 함수(메소드)에 접근할 때에는 $ 를 붙이지 않도록 하라. $를 붙이면 해당 변수를 가리키기 때문에 엉뚱한 결과가 발생할 수 있음을 명심하자.


Class 내에서 다른 메소드(함수)에 접근할 때에는 $this 를 사용한다.

$this는 해당 클래스를 가리킨다.

$this->val 는  해당 클래스의 $val 변수에 접근한다는 것을 의미한다.


정적(static) 메소드의 호출은 객체 연산자(->) 가 아닌 더블콜론(::)으로 호출된다.

더블콜론은 static 이나 constant와, 클래스의 재정의된 프로퍼티나 메서드에 접근 할 수 있도록 해주는 토큰이다.

LoginClass::MyName();



객체 복제

new로 객체를 생성하여 매개 변수로 넘길 때는 참조로 넘어간다.
따라서 새로운 메모리를 할당하는 것이아닌 객체의 주소값을 전달하는 것이다.

$object1 = new LoginClass;

$boject2 = $object1;


객체 복사를 해서 적용하거나 테스트를 안해봐서 세부적인 사항은 나중에 추가할 생각이다.


접근 제한자 : 멤버변수나 메소드 앞에 지정하여 클래스 외부에서의 참조나 실행을 제한 할 때 사용한다.

 - 접근 제한자가 정의되어 있지 않으면, 기본으로 public 으로 가정한다.

 - public : 외부에서 참조할 수 있음.

 - private : 변수를 선언한 클래스 안에서만 참조할 수 있다.

 - protected : 변수를 선언한 클래스와 상속 받은 클래스에서 참조할 수 있다.

 - final 메소드 : 서브 클래스가 부모 클래스의 메소드를 대체하는 걸 원치 않을 경우에는 final 키워드를 사용한다.

   final function copyright(){

   echo "Copyright Link2me";

   }


상속(inheritance)
: 클래스를 정의할 때 다른 클래스의 내부 데이터(멤버변수)나 메소드를 이어받어 새로운 클래스를 작성할 수 있는 기능(코드의 재활용성)


extends 키워드를 사용하여 다른 클래스의 메소드와 멤버변수(속성)을 상속할 수 있다.

class 자식 클래스명 extends 부모클래스명 {

   처리 코드

}


class ParentClass {
    var $name = "개발자";
}

class SubClass extends ParentClass{
    function info(){
        echo "name : ".$this->name; // 부모 클래스의 변수를 상속 받는다.
    }
}

$childObject = new SubClass();
$childObject -> info();


// 부모 클래스의 public 키워드로 선언된 변수와 메소드를 final로 변경하면

// 자식클래스에서 오버라이딩이 제한된다.


부모 클래스의 접근 제한자가 public, protected, private 에 따라 출력 결과가 달라짐을 확인해보라.

<?php
    class ParentClass{
        public $name = "홍길동";
        
        protected function showInfo(){
            echo "name : ".$this->name;
        }
        
        public function output(){
            echo "ParentClass ";
            $this->showInfo();
        }
    }
    
    
    class SubClass extends ParentClass{
        public function output(){
            echo "subClass ";
            $this->showInfo();
        }
    }
    
    $parentObject = new ParentClass();
    $parentObjec->output();
    
    echo '<br />';
    
    $childObjec = new SubClass();
    $childObjec->output();
?>

생성자

 - 자식 클래스가 생성자를 가지고 있지 않은 경우, 자동으로 부모 클래스의 생성자를 호출한다.

 - 자식 클래스가 생성자를 가지고 있는 경우 부모 클래스의 생성자가 암묵적으로 호출되지 않는다.
 - 부모클래스의 생성자를 실행하기위해서는 자식 클래스내에서 parent::__construct() 를 호출하여야 한다.

 - 생성자는 2개(ex, 인자 있는것과 없는 것) 생성하면 에러가 발생한다.

<?php
class people {
    public $height;
    public $weight;
    public function __construct($height, $weight) {
        $this -> height = $height;
        $this -> weight = $weight;
    }
}

class subPeople extends people {
    public function __construct($height, $weight) {
        parent::__construct($height, $weight);
    }
}

$people = new people(170, 50);
$subPeople = new subPeople(180, 60);

print_r($people);
print_r($subPeople);
?>


'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP] PHP 문자열 찾기  (0) 2017.11.14
[PHP] 배열에만 동작하는 foreach 문  (0) 2017.01.26
PHP isset 과 empty 설명  (1) 2016.04.27
PHP 대체 문법  (0) 2016.04.05
[PHP] switch 문  (0) 2015.06.01
블로그 이미지

Link2Me

,
728x90

isset 함수는 변수 자체가 존재하는지 여부를 알려준다.

isset() 함수는 변수가 존재하면 true를 반환한다.


empty 함수는 값이 true 인지 검사한다.

empty 함수는 값이 0 또는 null 이면 true

                    값이 존재하면 false 를 반환 한다.
변수가 존재하지 않아도 true 를 반환하므로 주의해야 한다.

isset()함수는 0 이든 문자열 "0"이든 값이 설정되어 있기 때문에 True를 반환한다.


unset($var); // 주어진 변수를 제거한다.

배열 전체를 제거할 수도 있고 배열의 원소 일부만 제거할 수도 있다.

unset($arr[0]); // $arr 배열의 첫번째 원소만 제거


is_array($arr); // 주어진 변수($arr)가 배열인지를 확인한다.



변수를 변경해가면서 테스트해 보면 화면에 어떤 결과를 보여주는지 확인할 수 있다.


<?php
    //$var = "Who are you?";
    //$var = false;
    $var = "";  // 변수는 있고 값은 없다.
    //$var = 0; // 변수는 있고 0은 false 로 인식한다.
    //$var = NULL;  // 변수 없고, 값도 없다.

    echo "var : ".$var."<br /><br />";

    if(isset($var)) {
        echo "변수가 있어요"."<br /><br />";
    } else {
        echo "변수가 없어요"."<br /><br />";
    }

    if(empty($var)) {
        echo "empty true : ".$var ."<br /><br />";
    } else {
        echo "empty false : ".$var ."<br /><br />";
    }

    if($var) {
        echo "값이 존재 : ".$var ."<br /><br />";
    } else {
        echo "값이 XX : ".$var ."<br /><br />";
    }

    if(isset($var) && !empty($var)) {
        echo "두개의 조건 만족 : ".$var ."<br /><br />";
    } else {
        echo "두개의 조건을 만족하지 않아요";
    }

?>


PHP의 문자열은 문자열을 '문자배열'로 간주해 배열처럼 첨자를 붙일 수 있다.

$str = 'student';

echo $str[3];

echo $str['a'];  // PHP 5.4 이상에서는 warning 발생처리

PHP 5.3까지는 $str['a'] 에서 a를 첫번째로 간주하여 첫번째 문자 s를 출력한다.

따라서 if(isset($str['a'])) 로 검사할 경우에 오류가 발생할 수 있다.

PHP 5.3까지는 true를 반환하고, PHP 5.4 이상에서는 false 를 반환한다.


$_GET['id'] 로 변수를 받았는데 경고 메시지가 나오면 3항 연산자를 사용하여

$id = isset($_GET['id']) ? $_GET['id'] : '';

로 해주면 된다.


'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP] 배열에만 동작하는 foreach 문  (0) 2017.01.26
PHP Class 개념 이해 ★★  (0) 2017.01.10
PHP 대체 문법  (0) 2016.04.05
[PHP] switch 문  (0) 2015.06.01
[PHP] 문자열 자르기 substr  (0) 2015.05.16
블로그 이미지

Link2Me

,
728x90

순수하게 PHP 코드만 들어간 경우에는 가독성이 좋은 편이지만,

HTML 코드와 같이 섞여 있는 경우에는 가독성이 떨어진다.

게다가 초보자는 에러를 만나면 해결하기가 참 난해하다.

 

이럴 경우에는 PHP 대체 문법을 사용하여 코딩하는 것이 좋다.


PHP는 제어 구조를 위해 대체 문법을 제공한다.

if, while, for, foreach, switch.

각 경우에 대체 문법의 기본형태는 괄호열기를 콜른 (:)으로 대체하고

괄호닫기는 각각 endif;, endwhile;, endfor;, endforeach;, endswitch; 로 대체한다.

 

 

<?php $i=0while($R = db_fetch_array($RCD)):?>
<tr>
    <td><input type="checkbox" name="post_members[]" value="<?php echo $R['uid']?>" /></td>
<td class="name"><?php echo $R['classname']?></td>
<td class="name">
        <a href="<?php echo $url?>/?mod=modify&amp;where=<?php echo $where?>&amp;keyword=<?php echo urlencode($keyword)?>
&amp;p=<?php echo $p?>&amp;uid=<?php echo $R['uid']?>"
 class="b" title="수정"><?php echo $R['name']?></a>  
</td>
<td class="name"><?php echo $R['classname']?></td>
<td class="name"><?php echo $R['classname']?></td>
<td class="name"><?php if($R['memo']) echo ($R['memo'])?></td>
<td class="name"><?php echo number_format($R['income'])?></td>
<td class="name"><?php echo number_format($R['outgoings'])?></td>
<td class="date"><?php echo $R['date']?></td>
</tr> 
<?php $i++; endwhile;?> 
 

if/elseif 조건을 콜론을 사용해서 정의할 때, else if 처럼 두 단어로 나눠서는 안된다.
PHP는 처리 오류로 실패한다.

 

<?php
/* 부적합한 방법: */
if($a > $b):
    echo $a." is greater than ".$b;
else if($a == $b): // 컴파일 되지 않는다.   

    echo $a." equals ".$b;

endif;

/* 적합한 방법: */
if($a > $b):
    echo $a." is greater than ".$b;
elseif($a == $b): // 단어가 붙어 있는 점에 주의.
    echo $a." equals ".$b;
else:
    echo $a." is neither greater than or equal to ".$b;
endif;

?>

 

HTML Entities(엔티티)는 HTML 태그와 혼용되는 것을 막기 위해 브라우저 상에 예약된 문자를 사용한다.

특수 문자(참조 문자)를 써야 하는 경우에는 이러한 엔티티 코드로 변환해서 입력해야 한다.

변환하지 않고 특수 문자를 그대로 입력해 버리면 컴퓨터가 문서를 읽을 때 실제 문서 내용(contents)과 코드를 구분하기 못하는 문제가 발생하기 때문이다.
가령, 어떤 문서 내용에 꺽쇠 괄호 ' < '가 포함돼 있다면, 컴퓨터는 이 문서를 읽어들일 때 꺽쇠 괄호를 HTML 태그의 시작 기호로 받아들여 버린다.
또 큰따옴표 ' " '는 HTML 속성 값으로 인식될 수 있고, ' & '은 엔티티 기호의 시작으로 인식될 수 있다.
때문에 이러한 혼동을 막으려면 특수 문자 대신 각 문자의 엔티티 코드를 써야 한다. 가장 흔한 실수는 URL 주소에 포함된 ' & ' 기호를 그대로 쓰는 경우이다.

&nbsp; ” ” : 공백(스페이스 한 칸)을 의미
& is HTML for "Start of a character reference".
 &lt;  부등호(<)
 &gt;  부등호(>)
 &amp;  앰퍼샌드(&) 기호
 &quot;  쌍따옴표(“)
 &#035;  sharp(#)
 &#039;  따옴표(‘)

 

좀 더 자세한 내용은 https://www.w3schools.com/html/html_entities.asp 를 참조하면 도움된다.

 

실제 사용하는 예제를 살펴보자.

테이블 안에 HTML 태그 사이에 실제 입력될 값을 PHP 대체문법으로 처리하여 깔끔하고 에러없이 원하는 결과를 얻을 수 있다는 걸 알 수 있다.

 

<?php
require_once 'path.php';// root 폴더를 기준으로 상대적인 경로 자동 구하기
require_once $g['path_root'].'sessionChk.php';
require_once $g['path_config'].'dbconnect.php';
require_once $g['path_class'].'dbDataClass.php';
require_once $g['path_class'].'bbsClass.php';
$b = new bbsClass();
$d = new DBDataClass();
 
$link_url = "contacts.php"// 현재 실행중인 파일명 가져오기
$page = isset($_GET['page'])? trim($_GET['page']):1;//페이지 변수 설정
$rowsPage = 10// 한 화면에 표시되는 게시글 수
$curPage = isset($_GET['p']) ? $_GET['p'] : 1;
$m = isset($_GET['m']) ? $_GET['m'] :'list';
 
$flddata ="uid,cat1,cat2,mobileNO,officeNO";// 화면에 출력할 칼럼 발췌
$where = isset($_GET['where']) ? $_GET['where']: '';
$keyword = isset($_GET['keyword']) ? $_GET['keyword']: '';
$xorderbyisset($xorderby) ? $xorderby : 'cat1 ASC, cat2 ASC'// 없는 칼럼인지 꼭 체크하라.
 
$sqlque = 'display=1';
if ($cat1$sqlque .= ' and cat1='.$cat1;
if ($cat2$sqlque .= ' and cat2='.$cat2;
 
if($where && $keyword) {
    if($where == 'telNO') {
        $sqlque .= " and (mobileNO LIKE '%".$keyword."%' OR officeNO LIKE '%".$keyword."%') ";
    }
}
//echo $sqlque.'<br/>';
 
$g['url_link']=($m?'m='.$m.'&amp;':'').($where?'where='.$where.'&amp;':'').($keyword?'keyword='.urlencode(stripslashes($keyword)).'&amp;':'');
$g['bbs_reset'= $link_url.'?'.($m?'m='.$m.'&amp;':'');
 
$table ='members'// 테이블
$rows$d->getDbArray($table,$sqlque,$flddata,$xorderby,$rowsPage,$curPage);
$NUM = $d->getDbRows($table,$sqlque); // 전체 게시글수
$TPG = $b->getTotalPage($NUM,$rowsPage);
$i = 0;
?>
<div class="table-responsive text-nowrap">
<div class="float-left info">
    <?php if$keyword ):?><strong>"<?php echo $keyword?>"</strong> 검색결과 : <?php endif?>
    <?php echo number_format($NUM)?>개 (<?php echo $curPage;?>/<?php echo $TPG;?>페이지)
</div>
 
<table id="ListTable" class="table table-striped table-bordered table-hover" cellspacing="0" width="100%">
    <thead align='center'>
        <tr>
            <th scope="col">No</th>
            <th scope="col">구분1</th>
            <th scope="col">구분2</th>
            <th scope="col">휴대폰번호</th>
            <th scope="col">사무실번호</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach($rows as $R):?>
        <?php
            $CA1$d->getDbData('cate','id="'.$R['cat1'].'" and parent_id=0','name');
            $CA2$d->getDbData('cate','id="'.$R['cat2'].'" and parent_id="'.$R['cat1'].'"','name');
            $no = $NUM - (($curPage - 1* $rowsPage- $i;
            $i++;
        ?>
        <tr id="<?php echo $R['uid']; ?>">
            <td><?php echo $no;?></td>
            <td><?php echo $CA1['name'];?></td>
            <td><?php echo $CA2['name'];?></td>
            <td><a href="tel:<?php echo $R['mobileNO'];?>"><i class="fas fa-phone"></i></a></td>
            <td><a href="tel:<?php echo $R['officeNO'];?>"><i class="fas fa-phone"></i></a></td>
        </tr>
        <?php endforeach;?>
    </tbody>
</table>
 
<div class='form-group'>
    <form name="Form" class="form-inline" action="<?php echo $link_url;?>">
        <input type="hidden" name="m" value="<?php echo $m;?>" />
        <input type="hidden" name="cat1" value="<?php echo $cat1;?>" />
        <input type="hidden" name="cat2" value="<?php echo $cat2;?>" />
        <input type="hidden" name="orderby" value="<?php echo $xorderby;?>" />
 
        <div class="input-group mb-3">
            <select name="where" class="browser-default custom-select">
                <option value="telNO">전화번호</option>
            </select>
        </div>
        <div class="input-group mb-3">
          <input type="text" name="keyword" class="form-control" id="SearchKeyword">
          <div class="input-group-append">
            <button class="btn btn-md" type="button" id="Search">검색</button>
            <button class="btn btn-md" type="button" id="Home">Home</button>
          </div>
        </div>
    </form>
</div>
 
<?php $b->PageLinkView($link_url,$NUM,$rowsPage,$curPage,$g['url_link']);?>
</div>

 

 

 

<table id="AccessLogListTable" class="table table-striped table-bordered table-hover table-sm" cellspacing="0" width="100%">
    <thead align='center'>
        <tr>
            <th scope="col">No</th>
            <th scope="col">IP주소</th>
            <th scope="col">날짜</th>
            <th scope="col">시간</th>
            <th scope="col">OS</th>
            <th scope="col">Browser</th>
            <th scope="col">userID</th>
            <th scope="col">userNM</th>
            <th scope="col">성공/실패</th>
            <th scope="col">접속루트</th>
            <th scope="col">에러코드</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach($rows as $R):?>
        <?php
            $no = $NUM - (($curPage - 1) * $rowsPage) - $i;
            $i++;
        ?>
        <tr id="<?php echo $R['uid']; ?>">
            <td><?php echo $no;?></td>
            <td><?php echo $a->IPaddressMasking($R['ipaddr']);?></td>
            <td><?php echo $a->displayDate($R['date']);?></td>
            <td><?php echo $R['time'];?></td>
            <td><?php echo $R['OS'];?></td>
            <td><?php echo $R['browser'];?></td>
            <td><?php echo $a->IDMasking($R['userID']);?></td>
            <td><?php echo strlen($R['userNM'])>0 ? $a->letterMasking($R['userNM']):'';?></td>
            <td><?php echo $R['success'];?></td>
            <td><?php echo $R['route'];?></td>
            <td><?php echo $errorArr[$R['errCode']];?></td>
        </tr>
        <?php endforeach;?>
    </tbody>
</table>

 

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

PHP Class 개념 이해 ★★  (0) 2017.01.10
PHP isset 과 empty 설명  (1) 2016.04.27
[PHP] switch 문  (0) 2015.06.01
[PHP] 문자열 자르기 substr  (0) 2015.05.16
음악 재생 1  (0) 2015.03.28
블로그 이미지

Link2Me

,
728x90

switch 문은 조건으로 들어온 변수와 case 값을 비교하여 참(true) 이면 실행하고, 참이 아니면 실행하지 않는 역할을 한다.

if {} elseif {} else {} 문과 유사하나 if 문은 조건이 참일때 해당하는 소스코드만 실행하지만

switch는 조건이 참인 case 부터 그 이하 case 와 default 까지 모두 실행하는 차이점이 있다.

그래서 해당되는 case 만 실행되도록 break 를 사용한다.


switch (n) {    // n은 대부분 변수
    case label1:
        code to be executed if n=label1;
        break;  // Use break to prevent the code from running into the next case automatically
    case label2:
        code to be executed if n=label2;
        break;
    case label3:
        code to be executed if n=label3;
        break;
    ...
    default:  // The default statement is used if no match is found.
        code to be executed if n is different from all labels;
}


실제코드에서 사용하는 예제

 <td><?php switch($R['goods']) {case "0":echo "미가입";break; case "1":echo "판매";break; case "9":echo "해지";break;}?></td>

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

PHP isset 과 empty 설명  (1) 2016.04.27
PHP 대체 문법  (0) 2016.04.05
[PHP] 문자열 자르기 substr  (0) 2015.05.16
음악 재생 1  (0) 2015.03.28
[PHP기초] 삼항연산자 ?  (0) 2015.03.06
블로그 이미지

Link2Me

,
728x90

substr() : 문자열에서 필요한 부분만을 가져오고자 할 때 사용하는 함수

substr(문자열, 시작위치, 길이);

  - 시작위치 : 0 부터 시작한다.


$string = "Good Morning!!";
$result = substr($string, 3, 5);

echo $result.'<br/>';


str_replace : 문자열에 포함된 문자를 바꾸고자 할 때 사용하는 함수

str_replace(찾을문자, 교체문자, 문자열);

입력받은 문자열을 정해진 길이만큼 잘라서 리턴하는 함수이다.

if ($d['bbs']['badword_action']){
    $badwordarr = explode(',' , $d['bbs']['badword']);
    $badwordlen = count($badwordarr);
    for($i = 0; $i < $badwordlen; $i++) {
        if(!$badwordarr[$i]) continue;

        if(strstr($subject,$badwordarr[$i]) || strstr($content,$badwordarr[$i])) {
            if ($d['bbs']['badword_action'] == 1) {
                getLink('','','등록이 제한된 단어를 사용하셨습니다.','');
            } else {
                $badescape = strCopy($badwordarr[$i],$d['bbs']['badword_escape']);
                $content = str_replace($badwordarr[$i],$badescape,$content);
                $subject = str_replace($badwordarr[$i],$badescape,$subject);
            }
        }
    }
}


'Web 프로그램 > PHP 문법' 카테고리의 다른 글

PHP 대체 문법  (0) 2016.04.05
[PHP] switch 문  (0) 2015.06.01
음악 재생 1  (0) 2015.03.28
[PHP기초] 삼항연산자 ?  (0) 2015.03.06
[PHP기초] continue 문  (0) 2015.03.05
블로그 이미지

Link2Me

,
728x90

HTM5 에서 음악 재생하는 걸 해봤다.

서버에 올리고 테스트를 해봤는데 모양은 볼품없지만 소리는 잘 나온다.


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5 audio play</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, user-scalable=no"/><!-- 스마트폰에서 글자 크기가 줄어들지 않고 나오게 하는 명령어 -->

<script type="text/javascript">
function $(id) { return document.getElementById(id); }
var audio = new Audio("test.mp3");
audio.addEventListener("timeupdate", function(e) {
    $("info").innerHTML = audio.currentTime + "/" + audio.duration;
});
// 볼륨 조절
function changeVolume(v) {
    var new_v = audio.volume + v;
    if (0 <= new_v && new_v <= 1.0) {
        audio.volume = new_v;       
    }
}
</script>
</head>
<body>
<h3>HTML5 음악재생</h3>
<div id="info"></div>
<div id="player_div">
    <input type="button" value="재생" onclick="audio.play()" />
    <input type="button" value="정지" onclick="audio.pause()" />
    <input type="button" value="처음부터" onclick="audio.currentTime=0;audio.play()" /><br />
    <input type="button" value="소리작게" onclick="changeVolume(-0.2)" />
    <input type="button" value="소리크게" onclick="changeVolume(0.2)" />
</div>
</body>
</html>


'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP] switch 문  (0) 2015.06.01
[PHP] 문자열 자르기 substr  (0) 2015.05.16
[PHP기초] 삼항연산자 ?  (0) 2015.03.06
[PHP기초] continue 문  (0) 2015.03.05
[PHP문법] array (배열)  (0) 2015.03.04
블로그 이미지

Link2Me

,
728x90

PHP 삼항연산자 ?


삼항 연산자 (? :): 비교 연산자와 함께 사용하여 어떤 판단을 하고자 할 때 사용한다. ?와 :을 사용해서 구문을 작성한다.

if 와 else 문의 장황함을 피하는 방법 중 하나는 더욱 간결한 삼항 연산자(conditional operator)인 ? 를 사용하는 것이다.

HTML 문과 혼재되어 있는 경우에는 대체문법을 사용하면 좋다. 참조 : http://link2me.tistory.com/981



예제를 통해 살펴보자.

$message = 'Hello '.($user->is_logged_in() ? $user->get('first_name') : 'Guest');

/* shorthand usage */
$message = 'Hello '.($user->get('first_name') ?: 'Guest');


/* "thankfully-you-don't-need-to-maintain-this" level */
 $days = ($month == 2 ? ($year % 4 ? 28 : ($year % 100 ? 29 : ($year %400 ? 28 : 29))) : (($month - 1) % 7 % 2 ? 30 : 31)); //returns days in the given month


/* If condition is true then assign a to result otheriwse b */
/* 조건이 참이면 a를 할당하고, 거짓이면 b를 할당
$result = ($a < $b ) ? $a :$b;


function xx($a,$b)
{
  $rs = ($a > $b) ? $a : $b ;
  return $rs;
}


<?php

$j = 11;

while($j-- > -10) {

if($j == 0 ) continue;  // 0 으로 나누는 것을 방지하기 위한 목적

echo "$j". (10/$j) . "<br />";

}

?>


PHP 5.3 이후부터는

$rs = $a ? $a : ' ' ;

대신에

$rs = $a ? : ' ' ;

와 같이 true 인 경우의 변수를 생략할 수 있다.

하지만 정확하게 하기 위해서 true 인 경우의 변수도 써주는 것이 좋다.


이 밖에 PHP 연산자에 대해 쉽게 찾아보려면 http://www.w3schools.com/php/php_operators.asp 를 눌러보면 된다.

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP] 문자열 자르기 substr  (0) 2015.05.16
음악 재생 1  (0) 2015.03.28
[PHP기초] continue 문  (0) 2015.03.05
[PHP문법] array (배열)  (0) 2015.03.04
[PHP기초] switch 문  (0) 2015.03.03
블로그 이미지

Link2Me

,
728x90

PHP continue 문


contiue 명령은 break 와 달리 현재 루프의 진행을 루프의 처음으로 돌리는 역할을 한다.

for 문이나 foreach 문을 탈출하는 명령어는 break 인데

continue 문은 continue 를 만나면 for 문이나 foreach 문의 시작점으로 가라는 의미다.

echo("key : $key, value = $value <br />"); 는 실행되지 않는다는 것이다.

if문의 조건은 참인가 거짓인가를 판별해서 참이면 if문을 수행하고 거짓이면 if문은 수행되지 않는다.

if ($key % 2) 의 의미는 2로 나눈 나머지가 있으면 참이 되어 if문이 실행되고, 나머지가 0인 경우에는 거짓이므로 수행되지 않는다.

$arr = array("zero", "one", "two", "three", "four", "five"); 에서 배열 키를 지정하지 않으면 기본으로 숫자 0부터 시작된다. (배열 키=>값 : 0=>'zero', 1=>'one', 2=>'two', .... )


결과는 배열키 0,2,4 를 가진 zero, two, four 출력

key : 0, value = zero
key : 2, value = two
key : 4, value = four


만약 위의 조건을 if(($key % 2) == 0) 로 설정했다면

결과는 배열키 1,3,5 를 가진 one, three, five 가 출력된다.


그럼 아래 예제에서는 어떤 결과가 나올까?

<?php
$arr = array("zero", "one", "two", "three", "four", "five");
foreach($arr as $key => $value) {
    if($key / 2)
        continue;    // continue 문은 현재 루프를 중단하고 바로 다음 루프로 가라
    echo("key : $key, value = $value <br />");
}
?>


결과는

key : 0, value = zero


<?php
for($cnt=0 ;$cnt <=5 ; $cnt++){  //$cnt가 5가 될때까지 반복한다
    if($cnt == 3){   // 만약 $cnt 가 3 이면 아래와 같은 문구를 실행한다
        echo "지금은 3번입니다.<br />";
        continue;  
    }
    echo "$cnt <br />";
}
?>


결과는

0
1
2
지금은 3번입니다.
4
5



<?php
for($cnt=0 ;$cnt <=5 ; $cnt++){   // $cnt가 5가 될 때까지 반복한다
    if($cnt == 3) {  // 만약 $cnt가 3 이면 아래와 같은 문구를 실행한다
        echo "지금은 3번입니다.<br />";
        break;  //조건을 만족하면 루프를 탈출한다.
    }
    echo "$cnt <br />";
}
?>

결과는
0
1
2
지금은 3번입니다.


--------------------------------------------------------------------------------------

foreach 문은 배열값의 수만큼 반복해서 처리한다.

foreach(배열 as $value) {

   처리할 내용

}

또는

foreach(배열 as $key=>$value){  // $key : 배열의 키, $value : 배열의 값

   처리할 내용

}



'Web 프로그램 > PHP 문법' 카테고리의 다른 글

음악 재생 1  (0) 2015.03.28
[PHP기초] 삼항연산자 ?  (0) 2015.03.06
[PHP문법] array (배열)  (0) 2015.03.04
[PHP기초] switch 문  (0) 2015.03.03
PHP 변수지정 기초지식 ★★★  (0) 2014.12.27
블로그 이미지

Link2Me

,
728x90

PHP array(배열)


배열(array)은 한번에 하나 이상의 값들을 담을 수 있는 특별한 변수이다.
PHP 에서는 array() 함수를 사용하여 배열을 만든다.
array 를 사용하면 코딩도 줄여주면서 쉽게 여러 변수를 생성할 수 있는 장점이 있다.
PHP 에는 배열의 세 가지 유형이 있다:
    Indexed arrays - 숫자 인덱스를 갖는 배열
    Associative arrays - 이름 키(named keys)를 갖는 배열
    Multidimensional arrays - 하나 이상의 배열을 포함하는 배열

1. Indexed arrays
<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);  // count() 함수는 배열의 길이(요소의 개수)를 반환하는데 사용된다.

for($i=0;$i < $arrlength; $i++)
{
  echo $cars[$i];
  echo "<br>";
}
?>
array 에 많은 값을 담게 되면 몇 번째의 내용인지 종종 헷갈릴 수 있는데 이러한 것을 막기 위해 count 함수를 이용한다.
그런데 count() 함수는, "요소 개수가 0인 배열"과 "존재하지 않는 배열" 모두 0을 반환하기에 혼란스러운 점이 있다.
이때는 isset() 함수를 사용하여 그 배열이 존재하는지 우선 체크하는 것이 좋다.

<?php
$cars=array("Volvo","BMW","Toyota");
sort($cars);    // 오를차순으로 정렬, rsort()는 내림차순으로 정렬
$arrlength=count($cars);  // count() 함수는 배열의 길이(요소의 개수)를 반환하는데 사용된다.

for($i=0;$i < $arrlength; $i++)
{
  echo $cars[$i];
  echo "<br>";
}
?>

2. 연관 배열(Associative Arrays)
연관 배열(Associative arrays)은 값을 할당하는데 이름 키(named keys)를 사용하는 배열이다

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>
배열로 표기된 것을 아래와 같이 표기할 수 있다.
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

foreach($age as $key => $value) {
     echo "Key=" . $key . ", Value=" . $value;
     echo "<br>";
}
?>

결과는
Key=Peter, Value=35
Key=Ben, Value=37
Key=Joe, Value=43

=> 를 기준으로 좌측에 있는 부분을 키값이라고 하고, 우측에 있는 부분을 값이라고 한다.

<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
asort($age);    // 값에 따라 오름차순으로 연관된 배열을 정렬한다.
foreach($age as $key => $value) {
     echo "Key=" . $key . ", Value=" . $value;
     echo "<br>";
}
?>

ksort() 는 키값에 따라 오름차순으로 연관된 배열을 정렬한다.
arsort() 는 값에 따라 내림차순으로 연관된 배열을 정렬한다.
krsort() 는 키값에 따라 내림차순으로 연관된 배열을 정렬한다.


foreach ($array as $key=>$value) {
    echo '순번 '. ($key+1) . ' 번의 DB idx = '. $value . ', ';
    // DB에 결과를 반영하고자 하는 쿼리문을 적어준다
    $query = 'UPDATE table SET orderNO = '.($key+1).' WHERE idx = '.$value.' LIMIT 1';
    mysql_query($query) or die (mysql_error());
}

3. Multidimensional Arrays
다차원 배열(multidimensional arrays)은 하나 이상의 배열을 포함하는 배열이다.
<?php
$cars = array
   (
   array("Volvo",22,18),
   array("BMW",15,13),
   array("Saab",5,2),
   array("Land Rover",17,15)
   );
 
echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".<br>";
echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".<br>";
echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".<br>";
echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".<br>";
?>


4. list 함수

list함수는 배열의 값을 배열의 순서대로 여러 개의 변수에 할당 하는 함수이다.


    function getCurrentDate(){
        $year = date('Y');
        $month = date('m');
        $day = date('d');
       
        return array($year, $month, $day);
    }
   
    list($y, $m, $d) = getCurrentDate();   
    print "현재 날짜는 $y / $m / $d 입니다!!";


5. 기타

array_unshift() 함수 : 배열의 맨 앞에 값을 추가하고 싶을 때

 - array_unshift($R, $val); // array_unshift('배열명', '값')


array_push() 함수 : 배열의 끝부분에 값을 추가하고 싶을 때

 -  array_push($R, $val); // array_push('배열명', '값')


array_pop() 함수 : 배열의 끝부분을 제거하고 싶을 때

 - array_pop($R);

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP기초] 삼항연산자 ?  (0) 2015.03.06
[PHP기초] continue 문  (0) 2015.03.05
[PHP기초] switch 문  (0) 2015.03.03
PHP 변수지정 기초지식 ★★★  (0) 2014.12.27
[PHP기초] PHP 파일 다루기  (0) 2014.11.28
블로그 이미지

Link2Me

,
728x90

PHP switch 문


PHP에서는 switch 문의 조건으로 숫자(정수, 실수)와 문자열 모두 가능하다.

n은 대부분 변수를 사용하며, break 문이 없으면 계속 실행된다.



각 실행문의 끝에 break 문을 붙이지 않고 아래처럼 필요한 곳에만 붙일 수도 있다.

break 문이 나올 때까지 다음 실행문이 죽 실행된다.



if 문은 참인지 거짓인지 구분하여 처리하지만,
스위치 문은 참과 거짓을 떠나, 조건의 값이 무엇이냐에 따라 해당 소스를 수행한다.
if문과 switch문은 같은 결과를 가져오지만, 상황에 따라 어떤것을 사용하느냐에 따라 간결한 소스가 되기도 하고, 복잡한 소스가 되기도 한다.


DB에서 읽어온 $R['goods'] 의 상태값에 따라 화면에 내용을 선택하여 뿌려주는 걸 표시한 예제이다.

<td><?php switch($R['goods']) {case "0":echo "미가입";break; case "1": case "2":echo "판매";break; case "6":echo "타사판매";break; case "9":echo "해지";break;}?></td>


switch 문은 PHP 에서 뿐만 아니라, 자바 스크립트에서도 사용되고, C언어 등 여러곳에서 사용되는 기본적인 문법이다.


'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP기초] continue 문  (0) 2015.03.05
[PHP문법] array (배열)  (0) 2015.03.04
PHP 변수지정 기초지식 ★★★  (0) 2014.12.27
[PHP기초] PHP 파일 다루기  (0) 2014.11.28
[PHP기초] fopen 파일 열기  (0) 2014.09.11
블로그 이미지

Link2Me

,
728x90

PHP 변수지정 기초지식


PHP 개발자가 알아야 할 기초적인 지식을 이해하기 쉽게 정리를 했다.

모든 개발에 있어서 실력을 키우는 가장 빠른 방법은 좋은말로 "벤치마킹" 나쁜말로 "모방" 이다.

좋든 나쁘든 가장 빠른 방법임에는 확실하다.
언어는 눈으로 배우는 것이 아니라 직접 경험을 통해 "깨달음" 이 있어야만 자기 것이 된다.

책을 통해 배우거나, 인터넷을 검색하거나, 공개소스를 살펴보거나, 중요한 것은 직접 코딩하고 원리를 이해해 가는 것이다.


변수 : 결과가 바뀔수 있게 할 수 있는 수, 변하는 수, 변할 수 있는 수

         오늘 비가 온다는 예보가 있는데 야구장을 가야하나 말아야 하나.. 오늘의 변수날씨구나..

<?php
$날씨 = '맑음';
if ($날씨 == '비')
{
     echo '우천취소';
}
else {
     echo '야구 정상적으로 진행';
}
?>



1. 변수를 정의할때 반드시 정확한 자료형을 사용한다.

2. 문자열 변수를 정의할때 "상수나 변수를 포함할 것으로 의도하지 않는한" 문자열은 무조건 홑따옴표로 감싸준다.

$array['constant'] = '연관배열';

PHP 해석기는 constant 가 상수가 아니라 "문자열" 이라는 것을 미리 알고 모든 상수중에 constant 를 찾아 헤매는 헛수고를 하지 않는다.

구분

 잘못된 거

올바른 거

 문자열 변수

$string1 = "문자열1";

$string2 = '문자열2';

 정수형 변수

 $int = "1";

 $int = 1;


정수형 변수를 정의하든 문자열변수를 정의하든 습관적으로 쌍따옴표를 사용하는 경우가 많은데 이것은 반드시 당장 고쳐야 할 나쁜 습관이다.


PHP해석기는 위의 두 변수를 메모리에 담을때 완전히 다른 작업을 하는데

$string1"문자열1" 에 변수나 상수가 포함되어 있는지 먼저 찾아내는 작업을 수행한다.

그리고 나서 변수/상수 값에 대한 치환작업을 한 후에야 그 결과값을 $string1 에 담는다.


$string2 은 '문자열2' 이라는 문자열에 대해서 어떠한 작업도 없이 곧바로 $string2 변수에 담는다.


다음 두 개의 SQL 문 처리를 살펴보자. 어떤 걸 써야 할까?

$sql = 'SELECT * FROM $usertable WHERE PartNumber = $partid';
$sql = "SELECT * FROM $usertable WHERE PartNumber = $partid";


"(쌍따옴표)는 변수를 해석할 수 있다. 하지만 '(홀따옴표)는 변수를 해석하지 못한다.

홀따옴표로 감싸진 전체를 문자열로 인식하기 때문이다.

이 경우에는

$sql = "SELECT * FROM $usertable WHERE PartNumber = '$partid' ";

와 같이 명확하게 Strings에 대해 홀따옴표(single quotes)로 변수를 표시해라.

아니면 아래와 같이 string 형 변수와 integer변수를 명확하게 구분하여 처리하면 전혀 문제되지 않는다.

$sql = 'SELECT * FROM '.$usertable.' WHERE string_column = "'.$string.'" AND integer_column = '.$number.';


Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result ...

와 같은 경고 메시지가 나온다면 어떻게 해야 할까?

$sql 문에 문제가 없는지 echo $sql.'<br/>'; 로 내가 원하는 SQL문으로 만들어지고 있는지 확인하시라.

홀따옴표, 쌍따옴표 관련 처리가 잘못되어 원하는 문자열로 해석되지 않고 있을 수 있다.


내가 사용하는 코딩 예시이다.

<?php
if (!isset($_SESSION)) {
    session_start();
}
// 파일을 직접 실행하면 동작되지 않도록 하기 위해서
if(isset($_POST) && $_SERVER['REQUEST_METHOD'] == "POST"){
    @extract($_POST); // $_POST['loginID'] 라고 쓰지 않고, $loginID 라고 써도 인식되게 함
    header('Content-Type: application/json; charset=utf8');
    if(isset($userID) && !empty($userID) && isset($password) && !empty($password)) {
        include_once 'dbController.php';
        require_once 'loginClass.php';
        $c=new LoginClass;
        $user = $c->getUser($userID, $password); // LoginClass에 함수가 정의되어 있다.

        if (is_array($user)) {
            $_SESSION['userID'] = $user['userID'];
            $_SESSION['userNM'] = $user['userNM'];
            $_SESSION['admin'] = $user['admin'];
            echo json_encode(array('result' => '1'));
        } else {
            echo json_encode(array('result' => '0'));
        }
    } else {// 입력받은 데이터에 문제가 있을 경우
        echo json_encode(array('result' => '-2'));
    }
}
?>



상수 : 이미 정해져 있는 불변의 값을 의미한다.

          define("상수명","정의값");

    define('constant','a');
    define('constant','b');

    변수는 처음 선언한 a가 변경되어 b가 되지만, 상수는 여전히 a로 유지된다.


PHP에서 미리 지정한 값을 가지는 것을 상수라고 한다(PHP에서 지정한 상수는 아주많다)
사용자가 지정한 상수도 있다.(define 함수를 이용해서 지정할 수 있다.)

상수명은 일반적으로 대문자를 사용한다.

<html>
    <head>
        <title>constant Test</title>
        <meta charset="UTF-8">
        <meta name="robots" content="noindex,nofollow"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <meta http-equiv="cache-control" content="no-cache" />
        <meta http-equiv="expires" content="0" />
        <meta http-equiv="pragma" content="no-cache" />
    </head>
    <body>
    <?php
        // PHP_VERSION : PHP 버전 지정한 상수
        // true(참), false(거짓), null(아무값이 없음)
        // PHP_OS : PHP가 실행중인 OS설명하는 상수
        // __LINE__ : 처리중에 있는 파일의 현재 줄 번호
        // __FILE__ : 처리중에 있는 파일의 전체 경로와 이름
        // __DIR__ : 처리중에 있는 파일의 디렉토리
        // __FUNCTION__ : 함수명
        // __CLASS__ : 클래스명
        // __TRAIT__ :  트레이트명
        // __METHOD__ : 클래스의 메소드명
        // __NAMESPACE__ : 현재 네임스페이스 이름

        //사용예 : define("상수명", "정의값");

        define("HI", "안녕!!");
        print HI;
        print '<br />';

        print "현재 사용중인 PHP 버전은 ? ";
        print PHP_VERSION;

        print "<br/> 이 파일의 이름은?  ";
        print __FILE__;

        print "<br/> 수행 중에 있는 코드 라인넘버는?  ";
        print __LINE__;
    ?>
    </body>
</html>



배열 : 일정한 규격에 따라 분리되어진 집합

          김밥 한줄을 썰어서 10조각이 나왔다. 썰어진 김밥은 배열이다. 김밥[0] 은 첫번째 김밥 조각이다.

          - 배열 선언을 $a =[] ; // 배열 초기화 (PHP 5.4 이상 버전에서만 사용할 수 있다)

          - 배열은 인덱스를 사용하지만, 연관 배열은 key 를 사용한다.

          - array("키" => "값") PHP 5.4 이상에서 사용가능


연관배열을 사용하는 예로 가장 흔하게 사용하는 것이 dbconnect.php 에서 DB연결하는 배열인 연관배열 선언하는 것이다.

$db['host'] = "localhost";
$db['name'] = "address";
$db['user'] = "address_root";
$db['pass'] = "autoset";
$db['port'] = "3306";


$dbconn = isConnectDb($db);

function isConnectDb($db){
    $conn = mysqli_connect($db['host'],$db['user'],$db['pass'],$db['name'],$db['port']);
    mysqli_set_charset($conn, "utf8"); 
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        exit;
    } else {
        return $conn;
    }
}


연관배열의 다른 예제

$data = array('name' => '홍길동', 'age' =>20, 'address'=>'서울');
print $data['name']." | ";
print $data['age']." | ";
print $data['address'];


다차원 배열 예제

//PHP 5.4 이상 버전에서 사용 가능
$member1[] = ['name'=>'홍길동', 'age'=>32, 'tel' => '010-1111-2222'];
print $member1[0]['name'];



함수 : 주어진 변수가 정해진 관계식에 대입된 상황 (결과)
객체 : 모든 사물,동작 등에 접근할 수 있도록 구조화한 형체 (개념)

          자동차는 바퀴,핸들,시트,달리다 로 표현할 수 있다. 바퀴는 자동차를 위한 객체이다.

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP문법] array (배열)  (0) 2015.03.04
[PHP기초] switch 문  (0) 2015.03.03
[PHP기초] PHP 파일 다루기  (0) 2014.11.28
[PHP기초] fopen 파일 열기  (0) 2014.09.11
[PHP] 문자열 치환하기  (0) 2014.05.10
블로그 이미지

Link2Me

,
728x90

PHP 파일 다루기


fopen() 함수는 PHP에서 파일을 여는데 사용된다

$file=fopen("file.txt","r");

 - 첫번째 파라미터(매개변수) : 열려는 파일 이름

 - 두번째 파라미터(매개변수) : 파일을 열때 어떤 모드(mode)로 열어야 하는지 지정

   . r  : 파일의 처음부분부터 read only

   . r+ : 파일의 처음부분부터 read/write

   . w  : 파일을 열고 내용을 초기화하며, 파일이 없으면 생성. write only

   . w+ : 파일을 열고 내용을 초기화하며, 파일이 없으면 생성. read/write

   . a  : 파일을 열고 끝부분에 추가하여 쓰기. 파일이 없으면 생성

   . a+ : 파일을 열고 끝부분에 추가하여 쓰기.

   . x  : 새파일을 만들어서 write only. 만약 파일이 존재하면 Fasle 와 오류를 반환

   . x+ : 새파일을 만들어서 read/write. 만약 파일이 존재하면 Fasle 와 오류를 반환


fclose($file);  // 열린 파일을 닫기 위해서 사용한다.


feof() 함수는 파일의 끝부분에 도달했는지(end-of-file, EOF) 체크하는 함수다.

feof() 함수는 특히 길이를 알 수 없는 데이터를 루프(looping, 반복문)돌때 매우 유용하다.


fgets() 함수는 파일로부터 하나의 줄(single line)을 읽어들일때 사용되며, default 최대 length는 1024

fgetc() 함수는 파일로부터 한 글자씩(single character) 읽어들이는데 사용

fwrite() 함수는 바이너리로 파일에 쓸 때 사용


<?php

$file = fopen("file.txt", "r") or exit("Unable to open file!");

while(!feof($file))   //끝부분에 도달할때까지 읽어들인줄을 출력

  {

  echo fgets($file). "<br />";

  }

fclose($file);

?>

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP기초] switch 문  (0) 2015.03.03
PHP 변수지정 기초지식 ★★★  (0) 2014.12.27
[PHP기초] fopen 파일 열기  (0) 2014.09.11
[PHP] 문자열 치환하기  (0) 2014.05.10
[PHP] 문자열 나누기  (0) 2014.05.09
블로그 이미지

Link2Me

,
728x90

fopen 파일 열기



FILE *fopen(const char *filename, const char *mode);

// fopen() 함수의 파일 경로, 파일을 열때 모드 옵션

// mode 옵션 의미


r : 읽기 전용으로 열기


w : 쓰기용으로 파일 만들기, 같은 이름이 있다면 덮어쓰기


a : 같은 이름의 파일이 이미 있다면, 그 파일 끝에 추가하여 쓰기, 파일이 없다면 쓰기용으로 파일 생성


r+ : 이미 있는 파일을, 읽기/쓰기용으로 열어 업데이트


w+ : 일기/쓰기용으로 파일 만들기, 같은 이름의 파일이 존재한다면 덮어쓰기


a+ : 파일을 열어서, 끝부분에 추가하기. 파일이 없다면 새로 생성한다.


t : 텍스트 모드로 열기


b : 이진 파일 모드로 열기



위의 모드는 조합이 가능하다.


rb : 바이너리 모드, 읽기 전용 열기


wb : 바이너리 모드, 쓰기용으로 열기




실제 파일을 열고 나면 파일 안의 데이터를 읽어 와야 되는데 그럴 때 사용하는 함수로는 3개가 있다.

$data = fgets($fp, 1000);
fgets() 함수는 파일에서 한 줄씩 읽는다. 이 경우 파일의 줄바꿈 문자나 EOF를 만나지 않는다면 999바이트를 읽을 때까지 진행한다.

$data = fgetss($fp, 1000, "특정 태그");
fgetss() 함수는 읽어들인 문자열에서 PHP와 HTML 태그를 모두 제거한다. 특정 태그를 남겨두려면 적어준다.

$data = fgetcsv($fp, 1000, "delimiter");
fgetcsv() 함수는 파일에서 읽은 문자열을 구분 문자로 나누어서 배열에 저장한다. 가운데는 length 파라미터인데, 이 값은 읽으려는 한 줄의 길이보다 좀 더 길어야 한다.

$data = fgetc($fp);
fgetc() 함수는 파일에서 한번에 한 문자씩 읽어들인다.



<?php

$fp=fopen('./data.txt',"r");

while(!feof($fp)) {   // 파일의 끝인지 아닌지 확인 (false 일 경우 끝)

echo fgets($fp,1000)."<br/>";

}

fclose($fp);

?>



'Web 프로그램 > PHP 문법' 카테고리의 다른 글

PHP 변수지정 기초지식 ★★★  (0) 2014.12.27
[PHP기초] PHP 파일 다루기  (0) 2014.11.28
[PHP] 문자열 치환하기  (0) 2014.05.10
[PHP] 문자열 나누기  (0) 2014.05.09
[PHP] 문자열 붙이기  (0) 2014.05.08
블로그 이미지

Link2Me

,
728x90


[PHP] 문자열 치환하기


str_replace(), substr_replace() 함수


string str_replace(string needle, string str, string haystack) ;

str_replace() 함수는 haystack 의 데이터 안에서 needle 의 데이터(교체할 문자열)를 찾아 str 의 데이터(대체문자열)로 모두 변경해준다.

$string = "안녕하세요. 좋은 아침 입니다.\n" ;

echo str_replace("아침", "저녁", $string) ;

// "아침"을 "저녁"으로 치환 한다.

결과 : 안녕하세요. 좋은 저녁 입니다.


$str = "<textarea cols='50' rows='7' name='text' >".str_replace('<br>','\r\n',$row[text])."</textarea>";


<textarea name="content"></textarea>
<?php

    $clean_content = htmlspecialchars($_POST[content], ENT_QUOTES);
    $clean_content = str_replace("\r\n","<br/>",$clean_content); //줄바꿈 처리
    $clean_content = str_replace("\u0020","&nbsp;",$clean_content); // 스페이스바 처리
?>


<?php
include "connect.php"; //mysql DB접속
$tblName = sample; // 테이블명
$query="SELECT * FROM $tblName;"; // 테이블에 있는 모든 자료 쿼리, 보통은 필요한 항목만 지정하는게 좋음
$result=mysql_query($query, $connect); //쿼리문입력
$row = mysql_fetch_array ($result); //연관배열만들기
$content = nl2br($row['content']);  // Textarea 영역 개행문자 처리

// 폼에서 받아온 데이터에 개행처리된 문자열을 자동으로 <br />태그를 붙여주는 역할을 하는 함수
echo $row['content'];
?>


string substr_replace(string string, string replacement, int start, int [length]) ;

substr_replace() 함수는 string 의 데이터를 start 번째 문자부터 length 길이 만큼을 replacement 의 데이터로 변경한다.

$string = "안녕하세요. 좋은 아침 입니다.
echo substr_replace($string, "저녁", strpos($string, "아침"), 6);

결과 : 안녕하세요. 좋은 저녁 입니다.

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP기초] PHP 파일 다루기  (0) 2014.11.28
[PHP기초] fopen 파일 열기  (0) 2014.09.11
[PHP] 문자열 나누기  (0) 2014.05.09
[PHP] 문자열 붙이기  (0) 2014.05.08
[PHP] 조건문 처리  (1) 2014.05.06
블로그 이미지

Link2Me

,
728x90

[PHP] 문자열 나누기


특정 문자열로 문자열 나누기    

split(), explode() 함수


array explode(string seprarator, string string) ;
array split(string pattern, string string, int [limit]) ;
두 함수 모두 결과가 배열로 반환된다.

차이점은 explode 가 정규식 패턴을 사용하지 않아 좀 처리속도가 빠르다 한다.


$date = "2010/09/13" ;

list($year, $month, $day) = explode("/",$date) ;

// "/" 를 기준으로 $date 값을 $year, $month, $day 로 나누어 배열로 반환한다



$datetime = "2010/09/13 23:45:46" ;

list($year, $month, $day, $hour, $minute, $second) = split("[/ :]", $datetime) ;

// split("[/ :]", $datetime) 함수에서 [/ :] 를 구분자로 나누어 배열 list 에 값을 대입한다.
echo "$year 년 $month 월 $day 일 $hour 시 $minute 분 $second 초" ;

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP기초] PHP 파일 다루기  (0) 2014.11.28
[PHP기초] fopen 파일 열기  (0) 2014.09.11
[PHP] 문자열 치환하기  (0) 2014.05.10
[PHP] 문자열 붙이기  (0) 2014.05.08
[PHP] 조건문 처리  (1) 2014.05.06
블로그 이미지

Link2Me

,
728x90

[PHP] 문자열 붙이기


두개의 string을 합치는 연결연산자 . 을 사용한다는 것을 기억하자!


<?php

$a 
"Hello ";
$b $a "World!"// 연결연산자 "."로 연결하여 반환 "Hello World!"

$a "Hello ";
$a .= "World!";     // 오른쪽 인수를 왼쪽인수에 덧붙인다 "Hello World!"
?>


<?php
echo "thr"."ee";       // prints the string "three"

echo "twe" . "lve";    // prints the string "twelve"

echo 1 . 2;             // prints the string "12"

echo 1.2;               // prints the number 1.2

echo 1+2;              // prints the number 3

?>


<?php
$contentsaddr = 'http://test.com/rvproject/web/data/'.$new_file;

?>

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP기초] PHP 파일 다루기  (0) 2014.11.28
[PHP기초] fopen 파일 열기  (0) 2014.09.11
[PHP] 문자열 치환하기  (0) 2014.05.10
[PHP] 문자열 나누기  (0) 2014.05.09
[PHP] 조건문 처리  (1) 2014.05.06
블로그 이미지

Link2Me

,
728x90

PHP에서 조건문 처리



PHP 이건 C언어이건, 엑셀 VBA 이건간에

조건은 반드시 True 와 False 값이 반환되도록 구성해야 한다.

조건이 여러개인 경우에는  AND 나 OR 명령을 사용해 다중 조건을 처리하도록 구성해야 한다.


<?php if(조건) { 조건이 true } else { 조건이 false }; ?>를
<?php 조건? true: false;?>로 간략히 사용할 수 있다.

<?php if(조건문) : ?>true<?php endif; ?> 로 표현하는 것은 대체문법이다.


<?php  ?>  : PHP 문법을 사용하기 위해서는 PHP 파서를 사용해야 한다.


echo $saved == 7 ? "saved is 7" : "saved is not 7";

// 조건이 True 이면 saved is 7

// 조건이 False 이면 saved is not 7



PHP에서 문자열을 출력할때 echo 를 사용한다.

PHP 명령어는 세미콜론 (;)으로 끝난다.


<?php if ($a == 5): ?>A는 5와 같다<?php endif; ?>
* 조건문이 맞을 때만 출력된다.


= 는 대입 연산자 이고

== 는 비교 연산자 이다.


비교연산자

연산자 

설 명

==

같다 

!= 

같지 않다 

크다 

작다 

>= 

크거나 같다 

<= 

작거나 같다 









논리 연산자


연산자 

설 명

&&

and 

and 

낮은 우선순위 and 

||

or 

Or 

낮은 우선순위 or 

Not 

xor

Exclusive or 










'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP기초] PHP 파일 다루기  (0) 2014.11.28
[PHP기초] fopen 파일 열기  (0) 2014.09.11
[PHP] 문자열 치환하기  (0) 2014.05.10
[PHP] 문자열 나누기  (0) 2014.05.09
[PHP] 문자열 붙이기  (0) 2014.05.08
블로그 이미지

Link2Me

,