특정 문단에만 및 태그에만 속성이나 스크립트를 적용하려면 클래스를 사용하면 된다.
정의하는 방법은 .class_name 같이 .으로 정의한다.
클래스는 모든 엘리먼트 태그에 여러개, 다중으로 사용이 가능하다.

<style type="text/css">
span.red {color:red}
</style>
<div class="red">class를 정의한 곳에만 red 효과 부여</div>
<div><span class="red">red</span>효과 부여 테스트</div>

span 태그에 red라는 클래스가 정의가 되면, red가 정의된 엘리먼트에는 스타일이 적용이 된다.
하지만 div에 적용된 red 클래스는 적용되지 않는다.

또한 특정 HTML 요소에 적용시키지 않고 독립적으로 클래스를 사용해도 된다.
이럴 경우 red class가 지정되어있는 모든 엘리먼트 태그에 스타일이 적용이 된다.
<style type="text/css">
.color_red{color:red}
</style>
<div class="color_red">class를 정의한 곳에만 red 효과 부여</div>
<div><span class="color_red">red</span>효과 부여 테스트</div>

이와 같이 클래스를 독립적으로 지정하는 방법이 편리하므로 더 많이 사용된다.

아이디(id) 선택자
아이디는 클래스와 구분을 지어놔야하기 때문에 #을 이용하여 정의한다.
클래스와 다르게 아이디 같은 경우에는 고유성을 가지고 있기 때문에 한 html 파일에 하나의 id만 정의가 가능하다.
<style type="text/css">
#id_red {color:red}
</style>
<div class="id_red">id를 정의한 곳에만 red 효과 부여</div>
<div><span id="id_red">red</span>효과 부여 테스트</div>


홈페이지를 비슷하게 만들고 똑같은 레이아웃이 있을 경우에는 class를 사용하는게 통상적이다.

그리고 클래스가 정의되고 사용할 때 스타일 적용 순서는 css에서 제일 나중에 선언된 것이 적용된다.

,

<style type="text/css">
.red {color:red}
.blue {color:blue}
</style>
<div class="red blue">클래스 정의 값에 따른 CSS 적용 순서</div>
<div class="blue red">클래스 정의 값에 따른 CSS 적용 순서</div>

이렇게 넣었을 경우에 blue가 제일 나중에 적용된 css 이기 때문에 위 아래 div에 둘다
color: blue 값이 적용되게 되는 것이다.


정책상 특정 부분에 밑줄을 넣어라! 라고 하는 부분에는 class로 text-decoration을 주면 되는 것이다.

'WEB > HTML' 카테고리의 다른 글

[HTML] 메타(meta) 태그  (0) 2017.12.12
[HTML] 주석 및 띄어쓰기, 선긋기(hr 태그)  (0) 2017.12.05
[HTML] 모바일 확대 방지  (0) 2017.11.29
[HTML] <table> 태그  (0) 2017.11.27
[HTML] <select> 태그  (0) 2017.11.27



$fullCode = "아리랑 아라리요"
$code = "아리랑";

if(strpos($fullCode, $code) !== false){
    echo "아리랑 문자열이 있습니다.";
}else{
    echo "아리랑 문자열이 없습니다.";
}




PHP에서 MySQL에 연결할때 사용하는 함수는 mysql_connect와 mysqli_connect가 있다.

이 두가지의 차이는 mysql가 php5버전 이후로 지원되는 것으로 mysql에 비해서
속도가 빠르고 보안이 훨씬 잘되어 있다는 점이다.

mysql은
mysql_fetch_array(mysql_query($query));
이런 형식으로 사용이 가능하지만

mysqli는
$result = mysqli_query($db_connect, $query);
mysqli_fetch_array($result);
이런 형식으로 따로따로 써준다.

그리고 query문을 써줄 때 꼭 앞에 데이터 베이스를 connect한 변수명이 들어가야한다.






$str = "a891b120adq2031a012";
$num = preg_replace("/[^0-9]*/s", "", $str); 

결과
8911202031012




text-decoration속성을 통해서 밑줄, 취소선, 윗줄 주기

text-decoration속성은 CSS를 사용해 텍스트에 밑줄, 윗줄 또는 취소선(가운데선)등을 사용하는 방법입니다. 
text-decoration 속성을 사용할 경우 이와 같은 스타일 구현이 가능합니다. 
이 속성은 다음과 같은 값을 지정할 수 있습니다.

text-decoration : underline(밑줄)
text-decoration : overline(윗줄)

text-decoration : line-through(취소선)
text-decoration : none(숨기기)

a링크를 걸때 밑줄이 있을 경우 밑줄을 제거하려면
a{
    text-decoration: none;
}
을 하게 되면 밑줄이 없어진다.



'WEB > CSS' 카테고리의 다른 글

[CSS] px, pt, em, %의 크기 비교  (0) 2017.12.06
[CSS] <ul> <li>로 테이블 만들기  (0) 2017.11.27
[CSS] 구글 웹폰트 사용하기  (0) 2017.11.27
[CSS] width에 padding과 margin을 포함시키기  (0) 2017.11.27
[CSS] 자간 설정  (0) 2017.11.27



100          Continue 
101          Switching Protocols
200          OK, 에러 없이 전송 성공 
202          Accepted, 서버가 클라이언트의 명령을 받음 
203          Non-authoritative Information, 서버가 클라이언트 요구 중 일부만 전송함 
204          Non Content, 클라이언트 요구를 처리했으나 전송할 데이터가 없음 
205          Reset Content 
206          Partial Content 
300         Multiple Choices, 최근에 옮겨진 데이터를 요청함. 
301         Moved Permanently, 요구한 데이터를 변경된 임시 URL에서 찾음 
302         Moved Permanently, 요구한 데이터가 변경된 URL에 있음 
303         See Other, 요구한 데이터를 변경하지 않았기 때문에 문제가 있음 
304         Not modified 
305         Use Proxy 
400         Bad Request, 요청 실패 - 문법상 오류가 있어서 서버가 요청 사항을 이해하지 못함. 
401.1       Unauthorized, 권한 없음 - 접속 실패, 이 에러는 서버에 로그온 하려는 요청 사항이 서버에 들어있는 권한과 
              비교했을 시 맞지 않을 경우 발생. 이 경우, 요청한 자원에 접근할 수 있는 권한을 부여받기 위해서 
              서버 운영자에게 요청해야 함. 
401.2       Unauthorized, 권한 없음 - 서버 설정으로 인한 접속 실패, 이 에러는 서버에 로그온 하려는 요청사항이
              서버에 들어있는 권한과 비교했을 때 맞지 않을 경우 발생. 이것은 일반적으로 적절한 
              www-authenticate head field를 전송하지 않아서 발생함. 
402.3       Unauthorized, 권한 없음 - 자원에 대한 ACL에 기인한 권한 없음. 이 에러는 클라이언트가 특정 자원에 
              접근할 수 없을 때 발생. 이 자원은 페이지가 될 수도 있고, 클라이언트의 주소 입력란에 명기된 파일일 수도 있다.
              또한, 클라이언트가 해당 주소로 접속할 때 이용되는 또 다른 파일일 수도 있다. 접근할 전체 주소를 다시 
              확인해 보고 웹 서버 운영자에게 여러분이 자원에 접근할 권한이 있는지를 확인한다. 
401.4       Unauthorized, 권한 없음 - 필터에 의한 권한 부여 실패. 이 에러는 웹 서버가 서버에 접속하는 사용자들을 
              확인하기 위해 설치한 필터 프로그램이 있음을 의미함. 서버에 접속하는데 이용되는 인증 과정이 이런 필터 
              프로그램에 의해 거부된 것임 
404.5       Unauthorized, 권한 없음 - ISA PI/CGI 어플리케이션에 의한 권한 부여 실패. 이 에러는 이용하려는 웹 서버의 
              어드레스에 ISA PI나 CGI 프로그램이 설치되어 있어 사용자의 권한을 검증함. 서버에 접속하는데 
              이용되는 인증 과정이 이 프로그램에 의해 거부됨. 
402         Payment Required, 예약됨 
403.1       Forbidden, 금지 - 수행 접근 금지. 이 에러는 CGI나 ISA-PI, 혹은 수행시키지 못하도록 되어 있는 
              디렉터리 내의 실행 파일을 수행시키려고 했을 때 발생함. 
403.2       Forbidden, 금지 - 읽기 접근 금지. 이 에러는 브라우저가 접근한 디렉터리에 가용한 
             디폴트 페이지가 없을 경우에 발생함. 
403.4       Forbidden, 금지 - SSL 필요. 이 에러는 접근하려는 페이지가 SSL로 보안 유지되고 있는 것일 때 발생.
403.5       Forbidden, 금지 - SSL 128이 필요. 이 에러는 접근하려는 페이지가 SSL로 보안 유지되고 있는 것일 때 발생.
              브라우저가 128비트의 SSL을 지원하는지를 확인해야 함. 
403.6       Forbidden, 금지 - IP 주소 거부됨. 이 에러는 서버가 사이트에 접근이 허용되지 않은 IP주소로 사용자가 
              접근하려 했을 때 발생함. 
403.7       Forbidden, 금지 - 클라이언트 확인 필요. 이 에러는 접근하려는 자원이 서버가 인식하기 위해서 
              브라우저에게 클라이언트 SSL을 요청하는 경우 발생함. 자원을 이용할 수 있는 사용자임을 입증하는데 사용됨. 
403.8       Forbidden, 금지 - 사이트 접근 거부. 이 에러는 웹 서버가 요청사항을 수행하고 있지 않거나, 
              해당 사이트에 접근하는 것을 허락하지 않았을 경우에 발생함. 
403.9       Forbidden, 금지 - 연결된 사용자수 과다. 이 에러는 웹 서버가 busy한 상태에 있어서 요청을 수행할 수 없을 
              경우에 발생함. 
403.10      Forbidden, 금지 - 설정이 확실하지 않음. 이 에러는 웹 서버의 설정 부분에 문제가 있을 경우 발생함. 
403.11      Forbidden, 금지 - 패스워드 변경. 이 에러는 사용자 인증 단계에서 잘못된 패스워드를 입력했을 경우 발생함. 
403.12      Forbidden, 금지 - Mapper 접근 금지. 이 에러는 클라이언트 인증용 맵(map)이 해당 웹 사이트에 
              접근하는 것을 거부할 경우에 발생. 
404          Not Found, 문서를 찾을 수 없음 - 이 에러는 클라이언트가 요청한 문서를 찾지 못한 경우에 발생함. 
               URL을 다시 잘 보고 주소가 올바로 입력되었는지를 확인함. 
405          Method not allowed, 메소드 허용 안 됨 - 이 에러는 Request 라인에 명시된 메소드를 수행하기 위한 해당 
               자원의 이용이 허용되지 않았을 경우에 발생함.
406          Not Acceptable, 받아들일 수 없음 - 이 에러는 요청 사항에 필요한 자원은 요청 사항으로 전달된 
               Accept header에 따라 "Not Acceptable" 내용을 가진 사항이 있을 경우에 발생함. 
407          Proxy Authentication Required, Proxy 인증이 필요함 - 이 에러는 해당 요청이 수행되도록 
               proxy 서버에게 인증을 받아야 할 경우에 발생함.
408          Request timeout, 요청 시간이 지남 
409          Conflict 
410          Gone, 영구적으로 사용할 수 없음. 
411          Length Required 
412          Precondition Failed, 선결조건 실패 - Request-header filed에 하나 이상에 선결 조건에 대한 값이 
               서버에서의 테스트 결과 false로 나왔을 경우에 발생 
413          Request entity too large 
414          Request-URI too long, 요청한 URI가 너무 김 - 요청한 URI의 길이가 너무 길어서 서버가 요청 사항의 이행을 
               거부했을 경우 발생
415          Unsupported media type 
500          Internal Server Error, 서버 내부 오류 - 웹 서버가 요청사항을 수행할 수 없을 경우에 발생함 
501          Not Implemented, 적용 안 됨 - 웹 서버가 요청사항을 수행하는데 필요한 기능을 지원하지 않는 경우에 발생 
502          Bad gateway, 게이트웨이 상태 나쁨 - 게이트웨이 상태가 나쁘거나 서버의 과부하 상태일 때 발생한다. 
503          Service Unavailable, 서비스 불가능 - 서비스가 현재 멈춘 상태 또는 현재 일시적인 과부하 
               또는 관리 상황일 때 발생될 수 있다. 
504          Gateway timeout 
505          HTTP Version Not Supported 



'ETC' 카테고리의 다른 글

특수문자 리스트  (0) 2019.11.21



<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>


width : 넓이 - device-width | N px (200~10000 px, default 980 px)
height : 높이 - device-height | N px (223~10000 px)


initial-scale : 초기 확대/축소 배율
minimum-scale : 최소 축소 배율 - N (0~10, default 0.25)
maximum-scale : 최대 확대 배율 - N (0~10, default 1.6)


user-scalable : 확대/축소 가능 여부 - yes | no (default yes)

'WEB > HTML' 카테고리의 다른 글

[HTML] 주석 및 띄어쓰기, 선긋기(hr 태그)  (0) 2017.12.05
[HTML] class와 id의 정의  (0) 2017.12.05
[HTML] <table> 태그  (0) 2017.11.27
[HTML] <select> 태그  (0) 2017.11.27
[HTML] <form> 태그  (0) 2017.11.27



네이버 지도 API 이번에 V2지원을 종료하기에 V3로 작성하였다.

<div id="map" style="width:100%;height:400px;"></div>


<script type="text/javascript" src="https://openapi.map.naver.com/openapi/v3/maps.js?clientId=YOUR_CLIENT_ID&submodules=geocoder"></script>
<script> 
    //지도 타입 설정하는 곳 ( 아무것도 설정 하지 않으면 자동으로 Normal로 적용된다 ) 초기화할 때 설정할수 있다. 
    var map = new naver.maps.Map('map'); 
    // 위성지도를 사용하려면 MapTypeId 객체의 SATELLITE 상수 값을 사용합니다. 
    //var map = new naver.maps.Map('map', {mapTypeId: naver.maps.MapTypeId.SATELLITE}); 
    // 위성지도에 지명을 적용하려면 MapTypeId 객체의 HYBRID 상수 값을 사용합니다. 
    //var map = new naver.maps.Map('map', {mapTypeId: naver.maps.MapTypeId.HYBRID}); 
    // 기본지도에 높낮이만 적용하려면 MapTypeId 객체의 TERRAIN 상수 값을 사용합니다. 
    //var map = new naver.maps.Map('map', {mapTypeId: naver.maps.MapTypeId.TERRAIN});
    var myaddress = '';// 도로명 주소나 지번 주소만 가능 (건물명 불가!!!!) 
    // 주소가 있는지 체크
    naver.maps.Service.geocode({address: myaddress}, function(status, response) { 
        if (status !== naver.maps.Service.Status.OK) { 
            return alert(myaddress + '의 검색 결과가 없거나 기타 네트워크 에러'); 
        }
        var result = response.result; 
        // 검색 결과 갯수: result.total 
        // 첫번째 결과 결과 주소: result.items[0].address 
        // 첫번째 검색 결과 좌표: result.items[0].point.y, result.items[0].point.x 
        var myaddr = new naver.maps.Point(result.items[0].point.x, result.items[0].point.y); 
        map.setCenter(myaddr); // 검색된 좌표로 지도 이동 
        // 마커 표시 ( 검색한 주소에 마커를 찍어둠 )
        var marker = new naver.maps.Marker({ 
            position: myaddr, 
            map: map 
        }); 
        // 마커 클릭 이벤트 처리 ( 클릭할 경우 infowindow에 등록된 이미지와 이름이 뜸 )

        naver.maps.Event.addListener(marker, "click", function(e) { 
            if (infowindow.getMap()) { 
            infowindow.close(); 
        } else { 
            infowindow.open(map, marker); 
        } 
    }); 

    // 마크 클릭시 인포윈도우 오픈 
    var infowindow = new naver.maps.InfoWindow({ 
    //띄워줄 이름과 사이트 이미지, 클릭했을경우 이동할 url 주소를 입력해주면 된다.
         content: '<h4> [네이버 개발자센터]</h4><a href="https://developers.naver.com" target="_blank"><img src="https://developers.naver.com/inc/devcenter/images/nd_img.png"></a>'
    });
});

'API > NAVER' 카테고리의 다른 글

[NAVER] 네이버 검색 API 적용  (0) 2017.12.12
[NAVER] 네이버 아이디 로그인 (네아로) API 적용  (0) 2017.11.28



https://developers.naver.com/products/login/api/



위 링크로 접속해서 네아로 오픈 API를 신청해야한다.


https://developers.naver.com/docs/login/api/



개발 가이드에 원하는 언어로 스크립트를 따간다.

필자는 자바스크립트로 적용을 했다.


HTML 

<div id="naver_id_login"></div> //원하는 곳에 넣으면 된다.
<script type="text/javascript"> 
   var naver_id_login = new naver_id_login("
오픈 API 발급 아이디", "처리페이지 URL"); 
   var state = naver_id_login.getUniqState(); 
   naver_id_login.setButton("green", 10, 40); // 버튼의 이미지 변경이다 
   naver_id_login.setDomain("도메인 주소"); 
   naver_id_login.setState(state); 
   naver_id_login.setPopup(); 
   naver_id_login.init_naver_id_login(); 
</script>


처리 페이지

<script type="text/javascript"> 
    //변경하지말고 두도록 하자
    var naver_id_login = new naver_id_login("YOUR_CLIENT_ID", "YOUR_CALLBACK_URL"); 


    naver_id_login.get_naver_userprofile("naverSignInCallback()"); 
    function naverSignInCallback() {
        //넘어온 토큰 값이랑 네이버 메일을 전송받고 다시 넘겨줌 
       opener.setRegisterValue(naver_id_login.oauthParams.access_token, naver_id_login.getP  rofileData('email'), window); 
        //닉네임과 나이
        //naver_id_login.getProfileData('nickname')); 
       //(naver_id_login.getProfileData('age'));
    } 
</script>

필자는 로그인 적용 후에 나중에 네아로를 적용한 것이라서 아이디와 토큰을 재 전송해주는 것
처리 페이지에서 바로 처리해도 됨.

로그인 체크 페이지
function setRegisterValue(token, email, winObj){ 
     //네아로 페이지 닫기
     winObj.close();

     var form = document.register_write_form; 

     // 원하는 곳에 토큰과 메일 아이디 삽입
    $("#token").val(token); 
    $("#email").val(email); 
    
     // 삽입 후에 form 전송
     form.submit(); 
}

'API > NAVER' 카테고리의 다른 글

[NAVER] 네이버 검색 API 적용  (0) 2017.12.12
[NAVER] 네이버 지도 V3 API 적용하기  (0) 2017.11.28



이 에러는 mysqli에서 나는 에러로
mysqli일 경우 group by를 쓰게 되면
sum이나, min, max, avg를 쓰지 않은 모든 칼럼명을
다 group by에 집어넣어줘야한다.

예시

SELECT idx, {$key_product_number}, site_name, SUM(exposure_cnt) AS exposure_cnt, SUM(click_cnt) AS click_cnt, SUM(total_pay) AS total_pay, SUM(change_cnt) AS change_cnt, SUM(change_pay) AS change_pay, AVG(rank_ave) AS rank_ave FROM {$table_name} WHERE master_id='{$master_id}' {$w_sql} GROUP BY {$key_product_number}

일 경우 에러가 날것이다

하지만

SELECT idx, {$key_product_number}, site_name, SUM(exposure_cnt) AS exposure_cnt, SUM(click_cnt) AS click_cnt, SUM(total_pay) AS total_pay, SUM(change_cnt) AS change_cnt, SUM(change_pay) AS change_pay, AVG(rank_ave) AS rank_ave FROM {$table_name} WHERE master_id='{$master_id}' {$w_sql} GROUP BY {$key_product_number}, idx

이렇게 맨뒤에 idx 값을 준다면 에러가 나지 않는다



+ Recent posts