mysql 데이터 구조.
database: class2 /
클래스명: baseball
team | varchar(10) | YES | | NULL | |
| player | varchar(20) | YES | | NULL | |
| batting | int(3) | YES | | NULL | |
| hit | int(3) | YES | | NULL | |
| average | decimal(5,3) | YES | | NULL |
1. 테이블 생성 및 자료 등록하는 칸 만들기
코드 이름과(iteam) 파일 명 등을 개선한 뒤 작성함.

input_copy
<?
echo("
<style type='text/css'>
td {text-align:center;}
</style>
<table border=0 width=600 align=center>
<tr>
<td>소속</td>
<td>이름</td>
<td>타수</td>
<td>안타</td>
<td></td>
</tr>
<form method=post action=process_copy.php>
<tr>
<td>
<select name=iteam>
<option>선택하세요</option>
<option value='NC'>NC</option>
<option value='LG'>LG</option>
<option value='두산'>두산</option>
<option value='롯데'>롯데</option>
<option value='삼성'>삼성</option>
</select>
</td>
<td><input type=text size=10 name=iplayer></td>
<td><input type=text size=10 name=ibatting></td>
<td><input type=text size=10 name=ihit></td>
<td><input type=submit value=입력></td>
</tr>
</form>
</table>
");
?>
process_copy
- ' ' 태그를 붙이지 말아야할 칼럼 값도 있었는데 붙여서 에러가 났음.
<?
$con = mysql_connect("localhost","root","apmsetup");
mysql_select_db("class2",$con);
$iaverage = $ihit / $ibatting;
// sql에 맞게끔 value값 작성. 그리고 괄호를 잘 닫도록하자.
mysql_query("insert into baseball values('$iteam', '$iplayer', $ibatting, $ihit, $iaverage)",$con);
mysql_close($con);
?>
화면에서 선택을 통해 mysql에 등록까지 완료한 모습.(database는 class2 )

2.동일팀, 동일 이름의 선수에 input 누적하기
웹에서는 HTTP 프로토콜을 사용하며, HTTP는 상태를 유지하지 않는(stateless) 프로토콜입니다. 즉, 각 요청(request)은 독립적입니다. 따라서, 여러분이 웹 페이지를 여러 번 요청하더라도 각각의 요청은 서로 독립적으로 처리됩니다.
변수 $iteam, $iplayer을 너가 post 두번해도 각각 독립적값이어서 이미 이전의 post요청된 정보는 공중분해되버린 상태.
이 공중분해되기 전에 데이터베이스에 계속 저장하는것.
아래의 구문은 $item이라는 방금 input한 값이 들어있는 독립적인 변수명일 뿐임.
같은 이름의 이전의 변수는 이전 post가 종료될때 같이 죽어서 사라졌음.
$result = mysql_query(select * from baseball
where team='$item' player='$iplayer',$con);
//지금 input한 값과 같은 값이 db에 있다면 그 데이터만 불러오기
예상결과: 황민태의 batting, hit 값이 누적되어 변경됨을 확인하기.



input_copy.php 코드는 동일.
process_copy.php
- $기호 변수앞에 안적고 빼먹은적 많음. 자잘한 오타주의
-mysql_result() 안에는 input 변수명이 아니라, 컬럼값을 기입
<?
$con = mysql_connect("localhost","root","apmsetup");
mysql_select_db("class2",$con);
$result = mysql_query("select * from baseball where team='$iteam' and player='$iplayer'",$con);
$total = mysql_num_rows($result);
if($total>0){ // 저장해놓은 데이터가 있다면 기존값 + input된 값
$obatting = mysql_result($result,0,"batting"); //이전에 같은 값 불러와서
$ohit = mysql_result($result,0,"hit"); // 동일
$nbatting = $obatting + $ibatting; // 새로운 변수에 저장
$nhit = $ohit + $ihit; // 동일
$naverage = $nhit / $nbatting; // 이전,현재값 반영해서 타율계산
//변경값 누적반영
mysql_query("update baseball set batting=$nbatting, hit=$nhit, average=$naverage where team='$iteam' and player='$iplayer'",$con);
}else{ // 저장해놓은 기존 데이터가 없다면 그대로 input시킨 값만 추가
$iaverage = $ihit / $ibatting;
mysql_query("insert into baseball values('$iteam', '$iplayer', $ibatting, $ihit, $iaverage)",$con);
}
mysql_close($con);
//명령실행 후, 원하는 화면으로 이동하기
echo("<meta http-equiv='Refresh' content='0; url=input_copy.php'>");
?>
3. db 데이터 화면에 출력
!!!!! input_copy.php에서 이미 다른 파일에서 검증된 코드로 복붙해서 코드를 실행시켜도 한글이 깨짐.
'_' 기호를 쓴게 문제인것 같아서 파일명 변경.
수정
input_copy => input2 .php
<form method=post action=process2.php>
수정
process_copy => process2 .php
echo("<meta http-equiv='Refresh' content='0; url=input2.php'>");
예상결과

input2.php (process2는 동일)
<?
echo("
<style type='text/css'>
td {text-align:center;}
</style>
<table border=0 width=600 align=center>
<tr>
<td>소속</td>
<td>이름</td>
<td>타수</td>
<td>안타</td>
<td></td>
</tr>
<form method=post action=process2.php>
<tr>
<td>
<select name=iteam>
<option>선택하세요</option>
<option value='NC'>NC</option>
<option value='LG'>LG</option>
<option value='두산'>두산</option>
<option value='롯데'>롯데</option>
<option value='삼성'>삼성</option>
</select>
</td>
<td><input type=text size=10 name=iplayer></td>
<td><input type=text size=10 name=ibatting></td>
<td><input type=text size=10 name=ihit></td>
<td><input type=submit value=입력></td>
</tr>
</form>
</table>
");
?>
<?
$con = mysql_connect("localhost","root","apmsetup");
mysql_select_db("class2",$con);
echo("
<table border=1 width=600 align=center>
<tr>
<td align=center>소속</td>
<td align=center>이름</td>
<td align=center>타수</td>
<td align=center>안타</td>
<td align=center>타율</td>
<td align=center>수정/삭제</td>
</tr>
</table>
");
?>
'🔓데이터베이스 > SQL' 카테고리의 다른 글
| (php + mysql)(3) [수정(modify)/삭제(delete) 기능 만들기] (0) | 2023.10.28 |
|---|---|
| 야구 기록 관리 메인 프로그램 만들기(php + mysql)(2) (0) | 2023.10.26 |
| sql 보충[데이터 삭제, decimal 자료형, binary] (0) | 2023.09.22 |
| sql +php(1) 연결하기[연결 후 post로 db에 데이터 저장해보기] (0) | 2023.09.21 |
| mysql database 쿼리문 익히기(1)[mysql문 오타 빠져나오기 ';] (0) | 2023.09.19 |