CLIEN

본문 바로가기 메뉴 바로가기 폰트크기변경 색상반전보기
톺아보기 공감글 추천글
커뮤니티 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 임시소모임 ·AI당 ·AI그림당 ·아이포니앙 ·굴러간당 ·주식한당 ·자전거당 ·MaClien ·AI그림당 ·방탄소년당 ·일본산당 ·AI당 ·골프당 ·안드로메당 ·디아블로당 ·소셜게임한당 ·가상화폐당 ·나스당 ·키보드당 ·개발한당 ·바다건너당 ·노젓는당 ·콘솔한당 ·육아당 ·밀리터리당 ·땀흘린당 ·걸그룹당 ·날아간당 ·IoT당 ·와인마신당 ·꼬들한당 ·이륜차당 ·포뮬러당 ·덕질한당 ·클다방 ·VR당 ·냐옹이당 ·갖고다닌당 ·캠핑간당 ·스팀한당 ·레고당 ·소시당 ·PC튜닝한당 ·야구당 ·퐁당퐁당 ·시계찬당 ·리눅서당 ·빨콩이당 ·전기자전거당 ·방송한당 ·축구당 ·총쏜당 ·개판이당 ·테스트당 ·가죽당 ·그림그린당 ·사과시계당 ·DANGER당 ·뚝딱뚝당 ·라즈베리파이당 ·KARA당 ·젬워한당 ·임시소모임 ·패스오브엑자일당 ·LOLien ·물고기당 ·여행을떠난당 ·심는당 ·스타한당 ·윈태블릿당 ·활자중독당 ·창업한당 ·나혼자산당 ·맛있겠당 ·3D메이킹 ·오른당 ·X세대당 ·요리한당 ·날아올랑 ·테니스친당 ·WOW당 ·뽀록이당(당구) ·문명하셨당 ·e북본당 ·찰칵찍당 ·보드게임당 ·안경쓴당 ·배드민턴당 ·농구당 ·블랙베리당 ·곰돌이당 ·블록체인당 ·볼링친당 ·클래시앙 ·쿠키런당 ·대구당 ·동숲한당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·차턴당 ·내집마련당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·어학당 ·Mabinogien ·미드당 ·땅판당 ·헌팅한당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·소풍간당 ·품앱이당 ·리듬탄당 ·Sea마당 ·SimSim하당 ·심야식당 ·미끄러진당 ·파도탄당 ·공대시계당 ·터치패드당 ·트윗당 ·WebOs당 ·윈폰이당
© CLIEN.NET
공지오늘 밤 10시부터 약 15분간 서버 점검이 있습니다. 더보기
l

팁과강좌

기타 그누보드에 vue.js 집어넣어서 웹앱 만들어 보자!-(6)로또정보 얻어오기

5
까만콤
8,726
2023-03-18 21:07:30 수정일 : 2023-03-19 17:41:39 211.♡.68.38

1편 세팅편 : https://www.clien.net/service/board/lecture/17960697CLIEN

2편  VueJS적용 : https://www.clien.net/service/board/lecture/17962453CLIEN

3편 프론트작업1 : https://www.clien.net/service/board/lecture/17964735CLIEN

4편 프론트작업2 : https://www.clien.net/service/board/lecture/17966827CLIEN

5편 테이블작업 : https://www.clien.net/service/board/lecture/17969157CLIEN


저번편에서 테이블에 가장 숫자가 높은 회차가 몇인지 알아냈으니 그것을 근거로  

동행복권의 RestAPI호출을 하여 값을 가져오는 것을 해보도록 하죠.


1. 로직구상 


저희는 인터넷에서 검색하면 몇회차가 가장 최신 로또 회찬지 알수있지만

프로그램은 그걸 모르죠? 

그러니까 우선 로직이 우리가 가진 테이블에 가장 큰숫자(그래야 최신회차 일테니까요)를 꺼낸뒤에

그 숫자에서 1을 더해서 요청해 보도록 하죠.

저번 편에서 보셨듯이 저희 테이블에 회차가 아예 없으면 0이 나올테니까 그회차에 1을 더하면 1회부터 요청을 하게 될거에요.


5편 마지막 부분에 테이블에서 가져온 데이터를 var_dump 로 봤을때 가져온 숫자는 string(문자열) 으로 되어있어요.

숫자로 바꿔놔야 우리가 산수를 할수 있겠죠.


???? 2023-03-18 ?? 5.36.00.png

php는 형변환 자동으로 안되니까 저렇게 미리미리 타입을 변환해 놔야 원하는 대로 로직을 짤수 있대영


그런다음 3편 프론트 작업할때 잠깐 로또  RestAPI를 보여드린적이 있어요.

그 주소를 호출하여 php로 어떻게 받아올지 GPT한테 슬쩍 물어보죠

???? 2023-03-18 ?? 5.29.49.png


정말 대단합니다…

고민할 필요도 없군요. 

지금 예시로 보여드리는 거지만 사실 저기서 "https호출이 되는거냐" 같은 추가질문을 하면 그것도 잘 대답해 준답니다.

개발 공부할때도 나름 유용할거 같아요 ㄷㄷ


2. 동행복권 에서 데이터 요청


그럼 돌아가는 코드를 아래와 같이 짜도록 하고요.

???? 2023-03-18 ?? 5.36.00.png

제대로 가져왔는지 보려고 밑에 var_dump로 json에서 php에서 쓸수있는 값으로 변환된 데이터를 한번 웹에 출력해서 볼거에요.


???? 2023-03-18 ?? 5.35.35.png

데이터가 아직 하나도 없는 상태라고 가정하면 1회차를 가져올테고 출력되는 모양은 이것과 비슷할거에요


그리고 저는 이미 전주회차 까지 다 들어가 있으니까 다음과 같이 나옵니다.

???? 2023-03-18 ?? 5.36.38.png

실패했을 경우 어떤상태로 오는지 알아보는것도 의미가 있는게 그래야 DB에 기록을 할때 어떤조건에서 안할지 알수 있으니까요.


좀 허무하게 들릴지 모르지만 이렇게 해서 데이터를 가져온 겁니다. 

이제 저 $jsondata 에 있는 값들을 갖다가 써서 테이블에 저장하면 되는겁니다. 


3. DB Insert


그렇게 가져온 다음 데이터를 insert 하는 쿼리를 만들도록 해요.

혹시 비개발자 분중에 이거를 보신다면 쿼리를 짜는건 코드에서 실행시켜서 매번 확인하긴 힘드니까

phpMyAdmin이나 다른 sqldeveloper혹은 DBeaver 같은 DB IDE프로그램에서 실제로 코드를 작성해보고

예제를 실행시켜서 확인한다음 코드로 옮기시는게 좋아요.


코드를 짤때는 자기가 짜는 각각의 것들이 문제가 없는지 하나씩 점검하면서 돌려보고 확인해보는게 좋아요.

지금 여기서는 제가 많이 생략했지만 저도 중간에 코드가 잘 짜졌나 echo 나 var_dump로 꼭 값을 확인하면서 진행한답니다.


???? 2023-03-18 ?? 6.24.32.png

그냥 말로 간단하게 떼우면 

- restAPI요청이 실패하지 않았다면 

- json데이터를 우리가 쓸수있도록 바꾸고

- 거기서 나온 데이터가 fail 이 아니라면

- 받은 자료를 조립해서 sql 문장을 만들고 

- DB에 요청해서 자료를 넣는겁니다~


특이점은 별로 없습니다만 눈에 띄는건 문자열을 더할때 javascript와는 달리 점(.) 을 사용하여 붙인다는거 정도가 되려나요.


여기서도 그누보드가 준 함수셋을 사용하는데 sql_query 는 그누보드에서 insert 나 update 혹은 delete 같이 조회결과가 나오지는 않지만 실행시켜야 하는 구문에서 사용됩니다. 

성공하면 적용된 행의 카운트가 나옵니다.


그걸 받아서 성공여부를 확인할수 있죠.


4. 자동화


아래와 같이 진행하면 testRestAPI를 할때마다 한개의 로또회차가 저장이 될겁니다.

그럼 현재회차 까지 저장하려면 어떻게 하면 되죠?

1000번 이상을 돌리면 되긴 합니다…. 뭐 매크로로 만드셔도 되는데 … 그건좀 그러니까

우리는 우아하게 php로직에서 지금까지 한거를 최신회차가 나올때까지 계속 돌리도록 로직을 짜볼겁니다. 


처음 로직을 짤때 DB에서 높은값을 얻어와서 가져온 데이터가 fail 이 아닌경우 넣는것까지 했으니까

저 부분을 while로 감싸서 반복하게 하고 restapi에서 fail 이 나올때까지만 돌리면 될거 같습니다.

???? 2023-03-18 ?? 8.31.35.png

코드를 다음과 같이 수정했습니다. 


실행시키면 차례대로 insert 성공 메시지가 주르륵 나오면서 최신회차 상태라고 나오면서 종료라 될 것입니다.


5. 요약 및 첨언


2회에 걸쳐서 나눔 로또 데이터를 내 사이트로 가져오는 일련의 과정을 코딩을 했습니다.

한마디로 내 DB테이블에 최신자료를 보고 동행복권에서 요청해서 받아오는 로직을 짠거죠.


다음편에서는 드디어 프론트에서 백엔드로 최신회차를 요청해서 가져올수 있겠네용

사실 처음 php명을 쓰면서 최신회차 요구를 돌려주는 restapi 로 먼저 만들려 했는데 

데이터가 없는 상태에서는 좀 재미가 없을거 같아 데이터 작업을 먼저 했습니다.


한가지 해결해셔야 하는건 지금만든 php를 저같은경우는 나스에서 돌릴 수 있어서 

시놀로지의 예약작업으로 저녁 9시 이후에 한번 자동으로 실행시키는데..


Cafe24 같은 호스팅 업체에서는 그렇게 스케쥴로 자동으로 돌아가는 로직을 허용하지 않는것으로 알고있습니다.(컴퓨팅 자원 낭비문제)

수동으로 로또 결과가 나온후에 저걸 사이트 관리자가 실행시켜 주던지 

아니면 나스가 있다면 해당 주소를 예약해서 호출하는 쉘스크립트를 짜던지

혹은 사용자가 처음 사이트를 들어올때 저걸 실행 시키도록 하고 실행하면 쿠키에 저장해서 하루정도는 안하는 방법등이 있는데..


사실 답은 없습니다.… 저도 해봐야 아는거라(저는 시놀로지 스케쥴로 걸어놨기 때문에..)

이부분은 시스템에서 허용 안하는걸 어떻게 우회하냐의 문제라 본인이 사용할수 있는 장비나 상황에 따라 다를거 같습니다.


여튼 다음회에서 뵐게요~

댓글로 모르겠는걸 써주시면 제가 할수있는 범위에서는 이 전체로직 설명이 다끝나면 

한두회차를 빌어서 궁금증을 해결해 드리겠습니다


모두들 긴글 보시느라 수고하셨어요~


까만콤님의 게시글 댓글
  • 주소복사
  • Facebook
  • Twitter
5명
댓글 • [0]
메모동기화
을 누르면 회원메모를 할 수 있습니다.
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디·비번 찾기 회원가입
OTP 앱 인증코드
인증코드를 받지 못하는 경우
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
고객지원
  • 게시물 삭제 요청
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
GIF 파일 다운로드
0 0 0 0
GIF 파일을 다운로드 받으려면
화면에 표시된 4자리 번호를 입력해주세요.