2010년 11월 24일 수요일
[PHP] php에서 숫자표현할때 소수점 둘째자리까지만 나오게하는 방법은?
[ 방법1 ]
<?
$a=4.99*10;
echo sprintf("%2.2f" ,$a);
?>
%2.2f 부분이 실수형을 00.00식으로 표현하게 해줍니다.
%2.3f 는 00.000이겠죠?
[ 방법2 ]
숫자형으로 출력시 소수점과 1000단위 컴마 표시법
<?
$number = 1234.56;
// english notation (default)
$english_format_number = number_format($number);
// 1,234
// French notation
$nombre_format_francais = number_format($number, 2, ',', ' ');
// 1 234,56
$number = 1234.5678;
// english notation without thousands seperator
$english_format_number = number_format($number, 2, '.', '');
// 1234.57
?>
2010년 11월 11일 목요일
PHP Ajax MySQL 로그인 중복체크
로그인 중복체크가 이렇게 어려울줄이야~~ 여러가지로 검색을 해보아도 나오지가 않아서 저 나름데로 짜집기(?)를 하여 중복체크 성공을하게되었습니다.
혹여나~ 다른곳에서 찾아헤메지마시고~ 제가 쓴방법을 한번 써보시기 바랄께요~~
p.s - 완벽하지는 않습니다. ㅡ,.ㅡ;;
웹 사용환경
서버 : CentOS 5.5
APM : Apache 2.2.14, PHP5.2.12, MySQL5.1.41
사용언어 : PHP, Ajax
아래에 붙여질 소스코드에 대해서는 제가 사용하는 환경의 소스를 그대로 올리도록 하겠습니다.
클래스화 시켜 사용하던건데 일일이 풀기가 애매하네요.. 기억도 안나고 ㅎㅎ;;;
기능 1 - 로그인전이면 새로 데이터를 입력한다. → 로그인처리
기능 2 - 로그인된상태일때 다른곳에서 로그인이되면 먼저 로그인된 페이지는 자동 로그아웃된다.
기능 3 - 같은 브라우져에서 로그인을 중복해서하게되면 로그인정보의 시간만 업데이트가된다.
1. 중복체크를할 테이블 생성
Table: smstmember_session
| Field | Type | Comment |
| sesskey | varchar(50) NOT NULL | |
| expiry | int(10) NOT NULL | |
| sessvalue | varchar(50) NOT NULL | |
| sessid | varchar(30) NOT NULL | |
| security | int(1) NOT NULL | |
| remoteip | varchar(20) NULL |
2. 로그인 처리페이지 소스 추가 (ex> login_ok.php)
소스보기
$sesskey = session_id();
$expiry = time();
$value = "ID:".$id." _ Login OK";
$sessid = $id;
$security = 0;
$remoteip = $_SERVER['REMOTE_ADDR'];
$que = " SELECT sesskey, expiry, sessvalue, sessid, security, remoteip, NOW() as now_expiry FROM smstmember_session WHERE sessid='".$sessid."' ORDER BY expiry DESC ";
$lala3->query($que);
$LogSum = $lala3->nf();
$sessOutLogin = false; // 로그인 정보 삭제여부
$sessUpdate = false; // 로그인 시간 업데이트 처리여부
$sessInsert = false; // 로그인 처리여부
if ( $LogSum ) { // 로그인된 기록이 있다면
for ( $i=0; $i<$LogSum; $i++ ) {
$lala3->seek($i);
$lala3->next_record();
$tmpSid = Trim($lala3->f(sessid));
$tmpSkey = Trim($lala3->f(sesskey));
$tmpIp = Trim($lala3->f(remoteip));
$tmpExpiry = Trim($lala3->f(expiry));
$tmpNowExpiry = Trim($lala3->f(now_expiry));
// DBssid==ssid, DBip==ip - LoginTime Update
if ( $tmpSkey == Trim($sesskey) && $tmpSid == Trim($sessid) && $tmpIp == Trim($remoteip) ) { $sessUpdate = true; }
// DBssid==ssid, DBip!=ip - LogInfo Delete, Loginfo Insert
else if ( $tmpSkey == Trim($sesskey) && $tmpIp != Trim($remoteip) ) { $sessOutLogin = true; }
// DBssid!=ssid, DBip==ip - LogInfo Delete, Loginfo Insert
else if ( $tmpSkey != Trim($sesskey) && $tmpIp == Trim($remoteip) ) { $sessOutLogin = true; }
// DBssid!=ssid, DBip!=ip - LogInfo Delete, Loginfo Insert
else if ( $tmpSkey != Trim($sesskey) && $tmpIp != Trim($remoteip) ) { $sessOutLogin = true; }
} // end for
} else { // 로그인된 기록이 없다면
$sessInsert = true;
}
$lala3->free();
// 로그인 처리 - DB입력
if ( $sessInsert == true ) {
$que = " INSERT INTO smstmember_session (sesskey, expiry, sessvalue, sessid, security, remoteip) VALUES ('".$sesskey."', '".$expiry."', '".$value."', '".$sessid."', '".$security."', '".$remoteip."') ";
$lala3->query($que);
$lala3->free();
}
// 로그인 정보 삭제 - DB삭제
if ( $sessOutLogin == true ) {
$que = " DELETE FROM smstmember_session WHERE sessid='".$sessid."' ";
$lala3->query($que);
$lala3->free();
$que = " INSERT INTO smstmember_session (sesskey, expiry, sessvalue, sessid, security, remoteip) VALUES ('".$sesskey."', '".$expiry."', '".$value."', '".$sessid."', '".$security."', '".$remoteip."') ";
$lala3->query($que);
$lala3->free();
}
// 로그인 시간 업데이트
if ( $sessUpdate == true ) {
$que = " UPDATE smstmember_session SET expiry=UNIX_TIMESTAMP(NOW()) WHERE sessid='".$sessid."' AND sesskey='".$sesskey."' ";
$lala3->query($que);
$lala3->free();
}
$que = " SELECT * FROM smstmember_session WHERE sessid='".$sessid."' AND sesskey='".$sesskey."' ORDER BY expiry DESC LIMIT 1 ";
$lala3->query($que);
$lala3->next_record();
$lala3->free();
또한 같은 세션ID일때 로그인을 다시하게되면 로그인 시간이 업데이트됩니다.
3. 로그아웃 처리하기 (ex> logout.php)
소스보기
session_start();
$sesskey = session_id();
if ( $mode == "outlogin" ) {
$que = " DELETE FROM smstmember_session WHERE sessid='".$GLOBALS["C_id"]."' AND sesskey='".$sesskey."' ";
$lala3->query($que);
$lala3->free();
session_destroy();
echo "LogOut Success!!";
} else {
$que = " DELETE FROM smstmember_session WHERE sessid='".$GLOBALS["C_id"]."' ";
$lala3->query($que);
$lala3->free();
session_destroy();
echo "LogOut Success!!";
}
4. 중복 로그인 체크페이지 (ex> outlogin_check_session.php)
소스보기
<?php
$sessid = userid;
?>
<form name="regLoginCheck" id="regLoginCheck" method="post">
<input type="hidden" name="mode" id="mode" value="" />
<input type="hidden" name="sessid" id="sessid" value="<?=$sessid?>" />
</form>
이 페이지에서는 세션DB의 값과 비교하기위한 정보들을 담고 있는다.
header 페이지나 footer 페이지 즉, 항상 웹페이지에 표시되는 부분에 추가하면 되겠다.
5. 중복 로그인 체크값 추출 (ex> login_check_tender.php)
소스보기
$sessid = userid 변수값(GET,POST);
$sesskey = session_id();
$que = " SELECT sesskey, expiry, sessid, remoteip FROM smstmember_session WHERE sessid='".$sessid."' AND sesskey='".$sesskey."' ";
$lala3->query($que);
$LogSum = $lala3->nf();
if ( $LogSum ) {
$code = "success";
} else {
$code= "failed";
}
?>
<result><code><?=$code?></code><data><![CDATA[[<?
if( $LogSum ) {
$lala3->next_record();
$DBsesskey = Trim($lala3->f(sesskey));
$sesskey = Trim($sesskey);
if ( $DBsesskey == $sesskey ) { $sess_same = "success"; }
else { $sess_same = "failed"; }
?>{sC:'<?=$sess_same?>',sK:'<?=$DBsesskey?>'}<?
} else {
?>{sC:'<?=$code?>'}<?
}
?>]]]></data></result>
다음으로 설명된 js 파일에서 위의 페이지에서 생성된 xml 코드를 참조하여 로그인여부를 체크하게된다.
6. 중복로그인 체크 및 처리하기 (ex> login_check.js)
소스보기
if ( window.addEventListener ) { // 최초 웹 로딩시 불려지는 함수
window.addEventListener( "load", startTimeout_loginCheck_update, false )
} else {
window.attachEvent( "onload", startTimeout_loginCheck_update )
}
function startTimeout_loginCheck_update () { // 최초불려짐
chkTimeout_loginCheck_update ( self );
}
function chkTimeout_loginCheck_update ( self ) { // 매초마다 실행
LoginCheckTender();
self.t1 = setTimeout(function(){ chkTimeout_loginCheck_update ( self ); }, 1000); // 1초마다 데이터 참조
}
function LoginCheckTender() { // xml 형식 코드를 생성하도록 호출
new ajax.xhr.Request("login_check_tender.php", "sessid="+$("sessid").value, CheckLoginTender, 'GET');
stateCnt++;
}
function CheckLoginTender( xmlDoc ) { // xml 형식의 코드를 참조
var code = getNodeValue( xmlDoc.getElementsByTagName( 'code' ) );
if (code == 'success') { // 데이터 로딩 성공시 (로그인후)
var loaddata = eval( "(" + getNodeValue( xmlDoc.getElementsByTagName ( 'data' ) ) + ")" );
if ( loaddata.length > 0) {
for(var i = loaddata.length-1; i >= 0; i--) {
makeLoginCheck(loaddata[i], i);
}
}
} else { // 데이터 로딩 실패시 (외부에서 로그인이 되었을때)
var loaddata = eval( "(" + getNodeValue( xmlDoc.getElementsByTagName ( 'data' ) ) + ")" );
if ( loaddata.length > 0) {
for(var i = loaddata.length-1; i >= 0; i--) {
makeLoginFailed(loaddata[i], i);
}
}
}
}
function makeLoginCheck(data, i) { // 데이터 추출 확인
//if ( $("txtsesskey2") != null ) $("txtsesskey2").innerHTML = data.sK;
//if ( $("txtState") != null ) $("txtState").innerHTML = data.sC;
//if ( $("txtCnt") != null ) $("txtCnt").innerHTML = stateCnt;
}
function makeLoginFailed(data, i) { // 외부로그인이 되었을때
if ( $("sessid").value != "" && data.sC == "failed" ) {
//경고창
alert(" 외부에서의 로그인이 이루어졌습니다.\n 로그아웃을 합니다.");
//실행
Logout_Session("outlogin");
}
}
function Logout_Session(mode) { // 로그아웃 처리
$("mode").value = mode;
$("regLoginCheck").target = "_top";
$("regLoginCheck").action = "logout.php";
$("regLoginCheck").method = "post";
$("regLoginCheck").submit();
}
다른곳에서 로그인이 이루어졌는지를 판단 및 처리를하게되는 스크립트이다.
다른곳 또는 다른 웹브라우저로 로그인을하게되면 기존에 로그인된 웹페이지는 자동적으로 로그아웃이 이루어지게된다.
여기까지 섭군이가 대충 짜집기한 중복로그인 방지 소스코드였습니다.
실질적으로 구상은 쉽게되는데 짜맞추려니... 여간 힘든게 아니네요 ㅠㅠ;;
질문은 않받을래요~ 머리가 뽀개질꺼 같거든요 ㅎㅎ;;;
2010년 9월 30일 목요일
[MySQL] 두개(여러개) 테이블 데이터 합치기
잊어먹을라~ ㅠㅠ;;
- INSERT Ignore INTO A SELECT * FROM B;
테이블 A 와 B 가 같은 schema 일 때, 테이블 B의 데이터를 A 의 데이터에 넣는
쿼리문이다. A 와 B 의 중복 데이터를 제거하고 A와 다른 데이터만 추가하게 된다.
예를 들어
테이블 A 가
id name age
--------------------------
1 kim 20
2 lee 22
3 kim 23
이고
테이블 B 가
id name age
--------------------------
1 kim 20
2 lee 22
3 lee 24
4 park 20
일때 INSERT Ignore INTO A SELECT * FROM B; 쿼리 문을 실행 하게 되면 테이블 A는 아래와 같이 된다.
id name age
--------------------------
1 kim 20
2 lee 22
3 kim 23
4 lee 24
5 park 20 - SELECT * FROM A UNION SELECT * FROM B
1번과 같은 역할이지만 A테이블로 insert 하는것이 아니라
테이블 A, B 를 중복된 데이터 제거하고 테이블이 union 되여 화면에 출력된다.
이때도 테이블 A, B 는 같은 schema
2010년 9월 15일 수요일
PHP에서 UTF-8, EUC-KR 인코딩 변경
UTF-8을 EUC-KR로 변경
2010년 8월 25일 수요일
[CentOS 5.4] PHP에서 파일업로드 않될때
기본적으로 PHP에서 파일 업로드가 않되는 이유는 두가지정도로 알고있다.
첫번째, httpd 서비스 실행자인 nobody에게 read/write 권한을 주었느냐이다.
두번째, php.ini 환경설정에서 file_uploads 옵션이 off로 되어있는지 확인하는것이다.
첫번째 문제라면은 웹 루트폴더 (DocumentRoot)에 가서 권한설정 명령어를 때려준다.
# chown -R nobody htdocs/
두번째 문제일때
# cd /usr/local/apache/conf/
# vi php.ini
여기서 [ : ]을 누르면 화면하단에 [ : ] 표시가 보일것이다~
이것이 vi 편집기 명령어를 사용할수 있게해준다.
[ :/file_uploads ] 라고치고 엔터!! ( 동일 패턴을 검색해주는것이다~ 찾기기능 )
file_uploads = ON 으로 되어있는지 확인하고 저장 [ :wq ] 하고 나온다.
마지막으로 httpd (아파치) 서비스를 다시시작해준다.
# /etc/init.d/httpd restart
2010년 8월 20일 금요일
[클래스] 자리수 지정한 문자로 채우기 str_pad()
출처 : http://www.saybox.co.kr/bbs/board.php?bo_table=board02&wr_id=137
PHP에서 특정 자리수 만큼 지정된 문자로 변경하고자 할 때 간단하게 str_pad() 함수를 이용하면 편리 합니다.
예를들어 1~20까지의 숫자가 있는데 1~9까지는 2자리수로 맞혀 주기 위해 앞에 "0"을 붙이고자 할 경우
str_pad($a, 2, "0", STR_PAD_LEFT);
라고 하면 간단하게 1~9 인경우 앞에 "0"이 붙게 됩니다.
기타 옵션에 따른 결과를 간단히 설명하겠습니다.
$input = "test";
echo "<br>1:".str_pad($input, 8)."s";
echo "<br>2:".str_pad($input, 8, "*", STR_PAD_LEFT)."s";
echo "<br>3:".str_pad($input, 8, "*", STR_PAD_BOTH)."s";
echo "<br>4:".str_pad($input, 5 , "***")."s";
?>
결과 :
1:test s
2:****tests
3:**test**s
4:test*s
1번은 변경할 문자를 입력하지 않을 경우 " " 부족한 자릿수 만큼 우측에 공백으로 추가합니다.
2번의 경우는 LEFT 부족한 자리수 만큼 왼쪽부터 채우며,
3번 BOTH는 좌,우 모두 균등하게 배치합니다.
만약 남은 공백이 5칸인경우 좌측에 2칸, 우측에 3칸을 추가 합니다.
4번은 변경할 값이 *** 3자리 이지만 자리수를 5칸으로 지정 했기에 * 하나만 적용되었습니다.
다양한 옵션으로 상황에 맞게 적용 하시면 됩니다.
2009년 10월 10일 토요일
IIS7.5 - php 설정은 어떻게?? 도움 부탁드립니다 ^^
다들 즐거운 주말시간 보내고 계시져? 많은 웹개발관련 고수님들께 여쭙고자 포스팅글을 씁니다.
요즘 제가 웹개발관련에 대해 배움을 하고자 기초지식을 배우고 있습니다.
asp와 php 그리고 ms-sql을 배우고 있는데요
학원에서 배우는지라 학원에서는 대충시키는대로 하면 되더라구여 ^^
집에서 php를 사용해보려고하니 잘 되지를 않네욤 ㅠㅠ
제가 설치&설정했던 부분을 정리할텐데 잘못된 부분이 있으면 지적좀 해주시기 바랍니다~
1. mySQL 설치 -> 이놈은 정상작동합니다.
http://dev.mysql.com/downloads/ 여기서 5.1버전으로 다운받아서 설치했습니다.
2. PHP설치 -> 설치이후 php파일이 보이기는합니다.
단지 <?php ... ?> 라고 써주어야지만 보이네요
<? ... ?> 기본문구로 php를 제거한 문구로 사용해서 보이지가 않아요 ㅠㅠ
http://windows.php.net/download/ 다운버전은 5.3.0-nts-vc9.msi 로 다운받아서 설치해봤으며
다른것들도 다운받아서 설치해봤는데 똑같네요~ 5.2.11도 같은 증상이로군요 ;;
<? phpinfo(); ?> 이렇게치면 아무것도 안나옵니다 ㅠㅠ
근데 그냥 html코드로 코딩하고 php파일로 저장한놈은 잘 보입니다.
아... 검색해도 않나오고 미치겠네요 ^^;;;
요놈만 잘되면 설치사용기를 올려보려고 합니다 ^^;;
저같이 고생하시는분들이 계실까 하구염~
위 내용을 정리해보자면...
1. PHP문서를 작성할때 왜 <?php ... ?> 로만 해주어야지 실행되는지 ?
2. <? ... ?> 로 작성해서 작동이 잘되도록하는 설정법이 있는지 ?
3. <?php phpinfo(); ?> 와 <? phpinfo(); ?> 두개의 파일전부 PHP 정보가 않보이는데 보이게하는 설정법??
아무쪼록 즐겁고 편한 주말되시구요~ 작은도움이라도 주시면 감사하겠습니다 (--)(__) 꾸벅
- 섭군 -
2009년 10월 6일 화요일
PHP 날짜관련함수 - date()
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day z '); // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // It is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 15:16:08 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:17 m is month
$today = date("H:i:s"); // 17:16:17
?>
PHP 날짜 함수 정리 ( Write By Yaku)
오늘로부터 5일 후
echo date("Y-m-d",strtotime("+5 day"));
다음은 오늘로부터 3일 전이 되겠습니다.
echo date("Y-m-d",strtotime("-3 day"));
오늘로부터 6주 전
$calyoil = 5 - date("w"); //현재 요일에서 금요일을 구하기 위한 가감
$needday = strtotime("-6 week"); // 6주전
$needday = date("Y-m-d" , strtotime("$calyoil days",$needday));
echo $needday;
윤년
if(29==date('t',mktime(0,0,0,2,1,$year))
echo "윤년";
else echo "윤년아님";
--mktime(시,분,초,월,일,년도)--
그 달의 마지막 날짜 가지고 오기
$lastday = date('t',mktime(0,0,1,$month,1,$year));
금주의 시작일 구하기
$now=date("w");
$m=$now-1;
$start=date("Y-n-d",strtotime("-$m day"));
JS 날짜 정리 ..
Month ( 0 ~ 11까지 정의 된다 ) 현재월을 표시하려면 month -1 하여라 ..
날짜 객체 생성 var today = new Date( 년 , 월 , 일 ) ;
날짜 년 가지고 오기 today.getYear();
날짜 월 가지고 오기 today.getMonth(); ( 현재월 가지고 올경우 +1 )
날짜 일 가지고 오기 today.getDate(); (day 가 아니 getDate 이다)
날짜 월 짜리수 맞추기 위한 if 문 = parseInt(월) < 10 ? “-“ + parseInt(월) : parseInt(월);
Mysql 날짜 함수
select date_sub(now(), interval 5 day);5일후..
select date_add(now(), interval 5 day);
5일전...
PHP 날짜 함수 정리 ( Write By Yaku)
오늘로부터 5일 후
echo date("Y-m-d",strtotime("+5 day"));
다음은 오늘로부터 3일 전이 되겠습니다.
echo date("Y-m-d",strtotime("-3 day"));
오늘로부터 6주 전
$calyoil = 5 - date("w"); //현재 요일에서 금요일을 구하기 위한 가감
$needday = strtotime("-6 week"); // 6주전
$needday = date("Y-m-d" , strtotime("$calyoil days",$needday));
echo $needday;
윤년
if(29==date('t',mktime(0,0,0,2,1,$year))
echo "윤년";
else echo "윤년아님";
--mktime(시,분,초,월,일,년도)--
그 달의 마지막 날짜 가지고 오기
$lastday = date('t',mktime(0,0,1,$month,1,$year));
금주의 시작일 구하기
$now=date("w");
$m=$now-1;
$start=date("Y-n-d",strtotime("-$m day"));
JS 날짜 정리 ..
Month ( 0 ~ 11까지 정의 된다 ) 현재월을 표시하려면 month -1 하여라 ..
날짜 객체 생성 var today = new Date( 년 , 월 , 일 ) ;
날짜 년 가지고 오기 today.getYear();
날짜 월 가지고 오기 today.getMonth(); ( 현재월 가지고 올경우 +1 )
날짜 일 가지고 오기 today.getDate(); (day 가 아니 getDate 이다)
날짜 월 짜리수 맞추기 위한 if 문 = parseInt(월) < 10 ? “-“ + parseInt(월) : parseInt(월);
Mysql 날짜 함수
select date_sub(now(), interval 5 day);
5일후..
select date_add(now(), interval 5 day);
5일전...
2009년 10월 5일 월요일
PHP - 형변환
형식(바꿀자료형)$변수명
1> (int),(interger):정수형변환
2> (real),(double),(float) :실수형으로 변환
3> (string) :문자열으로 변환
4> (array) : 배열형으로 변환
5>(object) :객체로의 형 변환
예)3
/*filename test_type.php*/ <br>
<?
$a = 123.45 ;
$b = ( int ) $a ;
echo ("실수값 $a 를 정수 $b 로 형변환시킨 예입니다.");
?>
2009년 9월 29일 화요일
PHP와 DB(mySQL)의 연결 방법
1 번째. 먼저 MySQL에서 'php_exam'이라는 database 를 하나 만든다.
=====================================================================
Query OK, 1 row affected (0.06 sec)
mysql> show databases;
+----------+
| Database |
+----------+
| company |
| mysql |
| php_exam |
+----------+
3 rows in set (0.00 sec)
mysql> use php_exam;
Database changed
mysql> show tables;
Empty set (0.00 sec)
======================================================================
2번째. 웹에서 테이블을 만들수 있게 하는 php페이지를 작성한다.
======================================================================
// 1. 연결 : mysql_connect(호스트명, 아이디, 비밀번호)
$conn=mysql_connect('localhost', 'root', 'apmsetup'); //db 연결부분
/*
if($conn)
echo "db연결성공";
else
echo "db연결 실패";
*/
// DB 선택 : mysql_select_db(해당 db명, $conn)
$db=mysql_select_db("php_exam", $conn);
if($db)
echo "db 연결성공";
else
echo "db 연결 실패";
// DB에 table 쿼리(query 질의).
$sql="create table php_tbl(num int, name varchar(10))";
//mysql_query($sql, $conn) db에 질의 수행.
mysql_query($sql, $conn);
?>
// 테이블이 생성되었음을 알려주는 경고창. 물론, 쿼리와 직접적 상관은 없다;
<script>
alert("테이블 생성");
</script>
======================================================================
3번째. 웹에서 만든 테이블을 mysql에서 확인.
======================================================================
+--------------------+
| Tables_in_php_exam |
+--------------------+
| php_tbl |
+--------------------+
1 row in set (0.00 sec)
mysql> desc php_tbl;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| num | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
======================================================================
4번째. 이번에는 웹에서 테이블 내용을 입력하게 하는 php 페이지 작성.
======================================================================
$host="localhost";
$user="root";
$password="apmsetup";
$conn=mysql_connect($host, $user, $password);
mysql_select_db("php_exam", $conn);
$sql="insert into php_tbl values(1, '홍길동')";
mysql_query($sql, $conn);
$sql="insert into php_tbl values(2, '루피')";
mysql_query($sql, $conn);
?>
<script>
alert("DB 입력 성공! mysql에서 확인해보세요!");
</script>
======================================================================
5번째. 웹에서 입력한 테이블 내용을 MySQL에서 확인하기.
======================================================================
+------+--------+
| num | name |
+------+--------+
| 1 | 홍길동 |
| 2 | 루피 |
+------+--------+
2 rows in set (0.02 sec)
======================================================================
special test.. 내맘대로 만들어보기.
======================================================================
less..
펼쳐두기..
1. mysql에서 데이타베이스 만들기.
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+----------+
| Database |
+----------+
| company |
| my_ruffi |
| mysql |
| php_exam |
+----------+
4 rows in set (0.00 sec)
mysql> use my_ruffi;
Database changed
mysql> show tables;
Empty set (0.00 sec)
2. php로 웹에서 테이블 만들기.
// db 연결.
$conn=mysql_connect('localhost', 'root', 'apmsetup');
// db 선택
$db=mysql_select_db("my_ruffi", $conn);
// db에 쿼리(질의)하기
$sql="create table ruffi_friend(num int, name varchar(20))";
mysql_query($sql, $conn);
?>
//확인 메시지 보기
<script>
alert("테이블 생성, mysql에서 확인해보삼!");
</script>
3. mysql에서 확인하기.
mysql> show tables;
+--------------------+
| Tables_in_my_ruffi |
+--------------------+
| ruffi_friend |
+--------------------+
1 row in set (0.00 sec)
mysql> select * from ruffi_friend;
Empty set (0.00 sec)
4. 웹으로 테이블에 내용 입력하기.
$host="localhost";
$user="root";
$password="apmsetup";
$conn=mysql_connect($host, $user, $password);
mysql_select_db("my_ruffi", $conn);
$sql="insert into ruffi_friend values(1, '상디')";
mysql_query($sql, $conn);
?>
<script>
alert("DB 입력 성공! mysql에서 확인해보세요!");
</script>
5. 웹에서 입력한 테이블 내용 확인.
+------+------+
| num | name |
+------+------+
| 1 | 상디 |
+------+------+
1 row in set (0.00 sec)
less..
======================================================================
6 번째. 입력된 내용을 불러와 웹상에서 확인해보기.
======================================================================
http://localhost/db_m/dbselect.php
$conn=mysql_connect('localhost', 'root', 'apmsetup'); //MySQL 접속 및 설정 저장
mysql_select_db("php_exam", $conn); //DB 접속
$sql="select * from php_tbl"; //test 테이블의 레코드를 모두 뽑아오기
$sql_result=mysql_query($sql, $conn); //질의(위 내용)를 수행하라.
$count=mysql_num_rows($sql_result); //mysql_num_rows() 함수 : 행의 개수를 세는 함수.
echo $count; //mysql query 수행 후 반환되는 결과값을 매개변수로 받고 그 레코드의 개수를 반환
echo "<br><br>";
//mysql_result(쿼리실행결과, 행번호, 변수값) : 결과값을 행 단위로 화면에 출력해주는 함수.
/*
for($i=0; $i<$count; $i++)
{
$num=mysql_result($sql_result, $i, num);
$name=mysql_result($sql_result, $i, name);
echo "$num : $name <br>";
}
*/
//mysql_fetch_array($sql_result) 배열 형식으로 결과값을 화면상에 출력해주는 역할..
for($i=0; $i<$count; $i++)
{
$result_array=mysql_fetch_array($sql_result);
echo "$result_array[num] : $result_array[name] <br>";
}
?>
실행 결과