홈페이지를 만들다보니 SQL문을 종종 짜야할 때가 있다.

이번에는 게시물 하단에 LIST를 구현하는데, 해당 게시물을 중심으로 -5개부터 +5개를 만들었다.

이 경우 어떤 범위 내에 값을 DB로부터 끌고와야 하는데, 이 역할을 하는 문법이 바로 BETWEEN이다

단어의 뜻을 알면 당연하다.


WHERE id BETWEEN 시작값 AND 끝값


이렇게 작성하면 DB에 저장된 id값들 중 시작값부터 끝값까지 조건에 맞는 값만 추출해낼 수 있다.

만약,  현재 보고있는 게시물을 중심으로 5번째 이전 게시물부터 5번째 이후 게시물까지 보고싶다면


$sql01 = 'select * from student_table where id between ' .$bno. '-5 and ' .$bno.'+5';


이렇게 작성하면 된다. 이 문장의 의미는


student_table 테이블에서 id 속성을 현재 글 번호 bno에서 -5한 값부터 +5한 값까지 불러오는 코드다.

이렇게 하면 해당 게시물을 기준으로 상단, 하단으로 5개씩 리스트가 생기게 된다.


참고로, echo에서 php 변수를 HTML 태그와 혼용하는 경우에는 다음과 같이 작성한다

 

echo "<b>{$title}</b>";


이렇게 하면 title 변수를 b태그 처리 한 뒤, echo로 출력해준다.

Posted by sungho88
,

홈페이지를 리뉴얼하면서 게시판에 있는 게시물들을 다른 사이트로 옮기고 싶었다.

어떻게 해야할지 막막했지만, 엑셀 파일을 이용하면 간편하게 할 수 있다는 것을 알게되었다.

찾아본 결과 파일명.csv 형식의 파일로 만들면 집어넣을 수 있다고 한다. 

SCV도 아니고 CSV는 무슨 약자일까?


CSV = Comma Separated values

즉, 몇 가지 데이터 필드를 쉼표로 구분한 텍스트 데이터 및 텍스트 파일이다.


1. 일단 엑셀을 실행시키고, 데이터베이스에 삽입할 데이터를 작성한다.

(DB에 생성된 컬럼들을 맞춰주자)


2. 작성한 뒤, 다른이름으로 저장 -> 파일형식 -> CSV(쉼표로 분리)를 선택한 후 저장한다.


mysql에 접속한 뒤, DB를 선택하고 다음과 같은 문장을 써서 입력했다고 한다.


LOAD DATA INFILE '파일위치/파일명.csv' INTO TABLE 테이블명 FIELDS TERMINATED BY ',';


이렇게하면 다른사람들은 되는데 에러가 발생한다.


--secure-file-priv 옵션이 무엇인가? 


으... 오전 내내 이것때문에 진행을 못해서 점심먹고 오후부터는 다른 방법을 쓰기로 했다.


바로 phpmyadmin.


여기서 import를 사용해서 .csv파일을 넣을 수 있다고 한다.

해봤다.


이런!! 또다시 같은 에러가 발생한다.

검색하다보니 LOCAL을 써줘야 잘 작동한다고 한다.


1. 업로드 파일에서 -> 올리고자 하는 csv파일을 선택하고,

2. 파일 문자셋은 무난한 -> UTF-8

3. 형식은 -> CSV가 아닌 CSV using LOAD DATA

4. 열(컬럼) 구분자 -> ,

5. 열 감싸기 -> "

6. LOCAL 키워드 사용 에 체크!


이렇게 한 뒤 실행을 눌렀다. 그랬더니. 


에러 메세지가 바뀌었다. 오 뭔가 값을 읽는 느낌이 생겼다. 좋다.

UTF-8 설정했지만, 엑셀쪽이 UTF-8이 아닐 경우 이런 문제가 발생한다.

엑셀에서 문자 인코딩을 변경해주거나 아니면 txt 파일로 편집을 누른뒤에 메모장에서 인코딩을 바꿔도 된다.

어떻게하던지 인코딩만 바꿔주면된다.

자. 다시 도전 



오호라. 해결~ 빨간색보다 훨씬 기분이 좋은 녹색~

Posted by sungho88
,