티스토리 뷰
(2021.07.11 본인 네이버 블로그에서 작성한 글 옮겨옴)
나는 과연 컴공이 맞는가.
현타가 온다.
내 자존감..ㅠㅠ
빳팅
회사에서는 php로 공통 모듈을 만들어두고 그걸 가져와서 테이블을 간편하게 만든다고 한다.
우리도 실습에서 간단한 테이블 만들기를 해보았다.
4일차에는 간단히 회사의 모듈로 테이블이 구현된다~ 는 식을 이해하려고 노력했고
(워낙 공통 모듈이 많고 이를 통해 우리도 웹 컨버전을 해야하기 때문에!)
5일차인 오늘은 어제 만든 간단한 테이블을 토대로 DB와 연결하여 조회하는 테이블을 구현해 보았다.
우선 , 4일차 공통모듈 이해하고 초간단 테이블 만들기
여기서는 그냥 회사의 모듈 가져다가 한줄 더 추가한 정도밖에 안된다..!
그래서 5일차 아침에 출근하자마자 내용만 좀 더 넣어봤따!!
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
My friend list^~^ ㅋㅋㅋ 시간없어서 몇명만 해봄 ㅠㅠ
자 그리고나서
5일차 , DB 연결하여 조회 화면 만들기 / 내가 입력한 값 테이블에 저장하는 화면 만들기
1. 조회 화면 만들기
우선 중요한 부분 코드만 가져와봤다.
test.php
//1)
<?
include("include.inc");
//include("lib_sql.inc");
connect();
$TD_WIDTH = array(40,100,90,80,90);
$WIDTH = array_sum($TD_WIDTH);
$HEIGHT = 350;
?>
//2)
<html>
<script language=javascript>
function fn_submit() {
frm.action = './test.php';
frm.target = '';
frm.submit();
}
</script>
//3)
<body>
<form name="frm" method="get">
사용자 ID : <input type=text name="id" length="10">
<input type=button value="검색" onClick="fn_submit()">
</form>
<?
echo $id;
...
//4)
$table->table_head();
$table->td_align(middle);
$table->table_body("<font color=blue>안정음</font>");
$table->table_tail();
...
$table->table_head();
$table->td_width = $TD_WIDTH;
$table->table_body("NO","사용자ID","사용자명","지국코드","지국명");
$table->table_tail();
...
//5)
$qry = "SELECT ROWNUM NO
, A.USER_ID
, A.USER_NM
, B.JIKUK_CD
, B.JIKUK_NM
FROM MUSERSTB A
, MJIKUKTB B
WHERE A.CHAIN_NO = B.CHAIN_NO
AND A.JIKUK_CD = B.JIKUK_CD
AND A.USER_ID = '$id'
";
parse($qry);
execute();
...
//6)
while(fetchInto_assoc($col))
{
$table->td_width = $TD_WIDTH;
$table->table_body(
$col[NO]
, $col[USER_ID]
, $col[USER_NM]
, $col[JIKUK_CD]
, $col[JIKUK_NM]
);
?>
1) 코드
<?
include("include.inc");
//include("lib_sql.inc");
connect(); //서버연결
$TD_WIDTH = array(40,100,90,80,90); //테이블의 TD 넓이 조정
$WIDTH = array_sum($TD_WIDTH);
$HEIGHT = 350; //높이
?>
2) 코드
//2)
<html>
<script language=javascript>
function fn_submit() { //검색 버튼 클릭 시 실행될 함수
frm.action = './test.php'; //action을 지금 이 소스코드로 지정 해놨기 때문에 페이지 이동은 없다!
frm.target = '';
frm.submit();
}
</script>
3) 코드
//3)
<body>
<form name="frm" method="get">
사용자 ID : <input type=text name="id" length="10"> //사용자 id의 input 박스 만들어주고
<input type=button value="검색" onClick="fn_submit()"> //검색 버튼도 만들어 준다. 클릭 시 fn_submit()으로 이동
</form>
<?
echo $id; //이거는 내가 입력한 id가 제대로 변수에 들어갔는지 확인해보기 위해 검색 창 밑에 띄웠다.
4) 코드
//4)
$table->table_head();
$table->td_align(middle); //td 글씨는 가운데 정렬
$table->table_body("<font color=blue>안정음</font>");
$table->table_tail();
...
$table->table_head();
$table->td_width = $TD_WIDTH;
$table->table_body("NO","사용자ID","사용자명","지국코드","지국명"); //제일 윗부분
$table->table_tail();
5) 코드
//5) 조회하는 쿼리문
$qry = "SELECT ROWNUM NO //번호 순서대로
, A.USER_ID //A 테이블의 USER_ID
, A.USER_NM //A 테이블의 USER_NM
, B.JIKUK_CD //B 테이블의 JIKUK_CD
, B.JIKUK_NM //B 테이블의 JIKUK_NM
FROM MUSERSTB A //사용자 정보가 담긴 테이블
, MJIKUKTB B //지국 정보가 담긴 테이블
WHERE A.CHAIN_NO = B.CHAIN_NO //JOIN
AND A.JIKUK_CD = B.JIKUK_CD
AND A.USER_ID = '$id' //내가 입력한 id 값은 A 테이블의 USER_ID에서 찾아온다.
";
parse($qry); //
execute(); //
6) 코드
//6)
while(fetchInto_assoc($col)) //이 함수는 회사 모듈에 있는 함수인데 col에 내가 입력한 변수의 값에 대한 값들이 td/tr 별로 테이블에 뜨는거다!
{
$table->td_width = $TD_WIDTH;
$table->table_body(
$col[NO]
, $col[USER_ID]
, $col[USER_NM]
, $col[JIKUK_CD]
, $col[JIKUK_NM]
);
?>
그러면 결과는
아 원래는 이렇게 뜨는데 지금 위에 코드는 사용자 id를 입력했을 때, 그에 해당하는 것이 조회되게끔 해놨다.
그래서 실제로 저 코드를 돌리면 다음과 같이 뜬다.
사용자 id : 25520을 입력 후 검색
사용자 id를 입력 후 검색버튼을 누르면 위 그림처럼 사용자 id에 대한 내용이 뜬다.
2. 내가 입력한 사용자 id 값을 테이블에 저장하는 화면 만들기
<?
include("include.inc");
//include("lib_sql.inc");
connect();
$TD_WIDTH = array(40,100,90,80,90);
$WIDTH = array_sum($TD_WIDTH);
$HEIGHT = 350;
?>
<html>
<script language=javascript>
function fn_submit() {
frm.action = './save.php'; //action은 밑의 코드인 save.php로 지정
frm.target = 'iframe';
frm.submit();
}
</script>
<body>
<form name="frm" method="get">
사용자 ID : <input type=text name="id" length="10"> //사용자 ID 입력하는 text 박스
<input type=button value="저장" onClick="fn_submit()"> //저장 버튼
</form>
<?
?>
</body>
</html>
//save.php
<?
include("lib_sql.inc"); //sql문을 처리할거라서 inc함수를 불러온다.
connect();
$qry = "INSERT INTO AJE(USER_ID)VALUES ('$id') //AJE 테이블에 입력받는 id라는 변수의 값을 추가한다. (테이블은 미리 생성해놓기)
";
parse($qry);
execute();
disconnect();
echo "<script type='text/javascript'>
alert('저장되었습니다.'); //테이블에 저장되었다는 메시지 출력
window.close();</script>" //save.php 페이지로 이동해서 저장 ->저장메시지 출력이 되기 때문에 해당 창을
?> //메시지 출력 후 닫아주는 함수 실행
테이블은 미리 생성을 해놓는다.
CREATE TABLE AJE (
USER_ID INT NOT NULL);
이렇게 사용자의 id를 입력 하고 저장 버튼을 누르면,
저장되었다는 메시지가 출력되고 창은 닫아진다. (근데 실제로는 창이 안닫혀서 다른 방법을 사용했다! * 밑에서 설명 *)
암튼 그 후 AJE 테이블을 SELECT문을 통해 확인해 보면
내가 입력했던 값이 제대로 추가된 것을 확인할 수 있다.
window.close() 함수가 안먹혀서 다른 방법을 사용했는데,
나는 iframe 요소를 사용해주었다.
<iframe name=iframe src=/iframe.php width=0 height=0 frameborder=0></iframe>
이것만 저장 박스만드는 input 요소 밑에 추가해주면 된다!
iframe 요소를 이용하면 저장버튼을 눌렀을 때 실제로는 위에서 처럼 save.php로 화면 이동이 되지만
우리가 눈으로 보기에는 화면이 이동하지 않은 것처럼 보이게 해준다.
이렇게 iframe 요소를 추가한 후 다시 실행해보자.
사용자 id 입력 후 저장버튼을 누르면,
아까와는 다르게 화면이 그대로 있으면서 저장되었다는 메시지가 출력된다.

베리굿.
방금 입력한 20181194 도 제대로 저장이 된 것을 볼 수 있다.
3.삭제
자 이번에는 테이블에 있는 값을 삭제하는 화면이다.
근데 그냥 삭제하는 것이 아니라! 내가 지우고 싶은 값을 더블클릭해야 지워진다.
삭제하기 전, 맨 위에서 실습했던 것 처럼
먼저 사용자 id를 입력하여 조회를 한 후에 조회된 값을 더블클릭하여 삭제하는 방식이다.
이번 테이블은 팀장님께서 따로 만들어서 제공해주신 것을 이용했다,
먼저 코드를 보자!
//삭제 test.php
...
<html>
<script language=javascript>
function fn_submit() {
frm.action = './test.php';
frm.target = '';
frm.submit();
}
function fn_del(del_id) { //삭제 관련 함수
frm.del_id.value =del_id; // 조회한 값 (삭제하려는 값) id가 함수에 들어오면
// form 요소의 input name이 del_id 인 값이 된다.
if (del_id==null) { //만약 그 값이 null이면 삭제할 내용을 선택해 달라는 메시지가 뜨고,
alert('삭제할 내용을 선택해주세요!!');
}
else { //값이 null이 아니면
frm.action='./del.php'; //del.php가 실행된다.
frm.target = '';
frm.submit();
}
}
</script>
<body>
<form name="frm" method="post">
사용자 ID : <input type=text name="id" length="10">
<input type=button value="검색" onClick="fn_submit()"> //삭제하고자하는 사용자 id를 입력 후 검색한다.
<input type=hidden name="del_id" value=""> //
</form>
<?
echo $id;
...
//테이블 만드는 코드 (1. 조회하기랑 똑같음)
...
$qry = "SELECT ROWNUM NO //TEST TMP 테이블과 MJIKUKTB 테이블에서 체인코드와 지국코드를 조인하고
, A.USER_ID //내가 입력한 USER_ID를 가진 USER_ID와 사용자명, 지국코드, 지국명을 조회한다.
, A.USER_NM
, B.JIKUK_CD
, B.JIKUK_NM
FROM TEST_TMP A
, MJIKUKTB B
WHERE A.CHAIN_NO = B.CHAIN_NO
AND A.JIKUK_CD = B.JIKUK_CD
AND A.USER_ID = '$id' //내가 입력한 USER_ID는 변수 $id이다!! 이 id라는 변수가 밑에 더블클릭 하는 함수 id에 들어간다.
";
parse($qry);
execute();
while(fetchInto_assoc($col))
{
$table->td_width = $TD_WIDTH;
$table->tr_script = "ondblclick=fn_del('$id')"; //조회한 tr값을 더블클릭하면 그 id값이 fn_del 함수로 들어간다.
$table->table_body(
$col[NO]
, $col[USER_ID]
, $col[USER_NM]
, $col[JIKUK_CD]
, $col[JIKUK_NM]
);
}
...
?>
</body>
</html>
//del.php
<?
include("lib_sql.inc"); //쿼리문을 사용하기 때문에 sql.inc를 불러온다.
connect();
echo "아이디 확인".$del_id; //입력한 아이디 값을 확인할 수 있게 보여준다.
$qry = "DELETE FROM TEST_TMP //삭제 쿼리문
WHERE USER_ID='$del_id'
";
parse($qry);
execute();
disconnect();
echo "<script type='text/javascript'>
alert('삭제되었습니다.');
window.close();</script>"
?>
현재 TEST TMP 테이블에 있는 값 중, USER_ID가 156300인 값을 삭제해보자.
우선 조회를 해보았다. 사용자 ID와 사용자명, 지국코드, 지국명이 조회된다.
이는 맨 위에서 했던 것과 똑같다!
근데 우리는 삭제를 할 거니까 이제 저 tr 줄에서 아무 곳이나 더블클릭해본다. (1 | 156300 | 죽전 | 15630 | 죽전 부분에서 아무 곳이나 더블클릭)
그럼 이렇게 삭제되었다는 메시지가 정상적으로 출력된다.
그리고 del.php에는 내가 원하는 아이디가 삭제되었는지 알아보기 위해서
echo를 이용해 코드를 작성해주었다.
테이블을 SELECT해서 확인해보면 두번째에 있던 156300 이 제대로 삭제된 것을 확인할 수 있다.
말만 들으면 금방할 것 같은데 실제로 코드를 짜려니 내 기준에서는 너무 어려웠다..
별거 아닌 것 같은데 머릿속은 아무것도 안떠오르고 조금 생각 정리가 되면 이걸 어떻게 코드로 짜야할지 모르겠고 ..
결국은 잘 따라가서 칭찬을 받긴 했지만 실습하는내내 4년동안 컴공이었던 내가 이것밖에 못하나 싶어서 현타가 왔다 ㅋㅋ큐ㅠ
그래도 하나하나 배우다보니까 이제는 생각정도는 할 수 있게 된 것 같다.
물론 실습 많이한건 아니지만 .. 그래도 첫 실습때보다는! 머리가 굴러는 간다.
코드짜는게 헷갈리긴 아직도 마찬가지이다.
다행히 팀장님께서 한명한명 자세히 이해갈때까지 쉽게 알려주셔서 더 이해가 쉽게 되고 좋은 것 같다.
엉뚱한 질문도 많이하고 계속 안된다고 들러붙는데도
차근차근 꼼꼼하게 알려주셔서 더 열심히 하게된다.
그리고 뭔가 열심히 배우고 칭찬받으니까 뿌듯하고 더 잘하고 싶고 ,,ㅋㅋㅋㅋㅋㅋ
"그래도 잘따라오시네요! 좀 하실줄 아는 분 같으신데요?" 이 소리가 이렇게 행벅한 소리였는지 몰랐는데
어깨가 하늘까지 닿는 기분이라 너무 좋았다.
생전 처음해보는 php라 더 어렵고 힘들지만 열심히 하고싶다.
나만 열심히하면 얻을게 많을 것 같아서 기대된다.
[출처] [현장 실습]2021 하계 1주5일차 - PHP와 DB를 이용하여 사용자 조회/저장/삭제화면 만들기|작성자 jyongmi
'현장실습 🏙' 카테고리의 다른 글
[현장 실습]2021 하계 2주7일차 - PHP와 DB를 이용하여 사용자 정보 저장+조회 응용하기 2 (0) | 2021.10.22 |
---|---|
[현장 실습]2021 하계 2주6일차 - PHP와 DB를 이용하여 사용자 정보 저장+조회 응용하기 (input박스에 값 출력하기) (0) | 2021.10.22 |
[현장 실습]2021 하계 1주4일차 - 간단한 SQL문 실습 (0) | 2021.10.22 |
[현장 실습]2021 하계 1주4일차 - PHP GET/POST 방식 (0) | 2021.10.22 |
[현장 실습]2021 하계 1주4일차 - PHP 시큐어 코딩에 대해 조사 (XSS) (0) | 2021.10.22 |
- Total
- Today
- Yesterday
- 갤러리띄우기
- 이더리움
- indexOf()
- 현장실습 기록
- DAPP
- 백준
- 졸업작품
- 정보처리기사 실기
- 리액트
- HTML
- JavaScript
- 홈페이지 만들기
- 스마트컨트랙트
- php게시판만들기
- php
- 현장실습
- 정처기 실기 정리
- C언어
- 정처기 실기
- 정보처리기사 실기 정리
- 정보처리기사
- 블록체인
- 노마드코더
- css grid
- php 달력만들기 응용
- 프로그래머스
- set 객체
- 졸업작품준비
- MySQL
- CSS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |