PHP를 이용한 MYSQL 데이타 연결과 쿼리 주기
 * MYSQL과 ORACLE 는 별도 접속함수를 이용
 *  PHP ; server side script-x 서버에서 처리후 크라이언트
              결과 전송
 * 에디터, vi 편집기로 작성후  ***.php (ex, bbs.php)
    서버에 업로드후 실행.
* PHP는 HTML과 병행하여 작성할수 있다.
-----------------------------------------------------------------------------------------
<br>한줄 뛰기
<?php   //php시작
 $name="hban" ;
 echo "일반텍스트문 ";
 echo "<font size=3 color=red>HTML 문  $name </font> ";
 echo "<img src=이미지경로>";
 echo "<table>.....";
?> 
************************************************************************
 MySQL함수 (PHP와 MYSQL연결)
 mysql_connect ("host명","유저명","비밀번호")
* Mysql에 연결한다.
 ex) <?php
 $db=mysql_connect("localhost","korea","0000") or
 die ("접속실패");
 echo "MYSQL에 접속되었습니다.";
 mysql_close($db);
//오라클의 경우(Oracle 사용시 8i, 9i 인지 ID/Pass)
OCILOGON ("localhost","korea","0000") 의 형태이다.
 ?>
*mysql_pconnect :  영구히 데이터베이스접속
   --> 접속이 많은 DB에 효율적이다.
<?php
 $db=mysql_pconnect("localhost","korea","0000") or
 die ("접속실패");
if ($db) {
echo "데이터베이스 접속이 되속되고 있습니다. ";
}
?>
******************************************************************
MYSQL 데이터베이스 선택하기
mysql_select_db ("DB명");
ex)mysql_select_db ("korea");
MYSQL 쿼리(질의)문 전달하기
mysql_query ( "질의문");
ex) mysql_query ("select * from zip ");
*******************************************************************
MYSQL 데이터베이스를 생성
  mysql_create_db()
ex) mysql_create_db ("my_db")
MYSQL 데이터베이스 삭제
  mysql_drop_db()
ex) mysql_drop_db ("my_db")
*********************************************************************
MYSQL질의 결과로 부터 열의 개수를 반환
 mysql_num_rows ( )
ex) <?php
 $db=mysql_connect ("localhost","korea","0000");
 $query="select * from zipcode";
 $result =mysql_db_query("zip", $query, $db);
 $num=mysql_num_fields($result);
 echo "총 $num 개의 컴럼이 있습니다.";
 -----------------------------------------------------------------------
 $db=mysql_connect ("localhost","korea","0000");
 mysql_select_db("zip",$db);
$result=mysql_query("select * from zipcode", $db);
$total_num=mysql_num_rows($result);
echo "총 $total_num 이 검색 결과로 되었습니다.";
?>
-------------------------------------------------------------------------
결과를 필드 이름 혹은 숫자색인으로 배열 반환
 mysql_fetch_array( )
 ex) mysql_connect ("localhost","korea","0000");
       mysql_select_db("zip");
      $result=mysql_query("select sido,gugun, dong from zip where
       ");
      $gesu=mysql_num_rows($result);
  echo "총 검색된 수는 $gesu 입니다.";
$si="$row[sido]";
역삼동이며  
while ($row=mysql_fetch_array($result))
  {
    echo "<table width=600 border=1  bgcolor=#fofofo>
<tr><td> $row[sido]</td>
<td>  $row[gugun] </td>
<td> $row[dong] </td>
</tr></table>
 <br>";
}
    echo " $row[0]  $row[1]  $row[2]";
************************************************************************
MYSQL 작업의 결과로 처리된 행(row)의 개수를 얻는다.
mysql_affected_rows ( )
--> insert, update, delete 질의로 처리된행의 갯수
--> where 절이 있어야 된다.
 ex) $db=mysql_connect ("localhost","korea","0000");
       mysql_select_db("zip,$db");
       $result=mysql_query("delete * from zip where ......", $db);
      $total_num=mysql_affected_rows($result);
     echo "총 $total_num 개의 데이터가 삭제되었습니다.";
   ?>
  만약,where 절이 없다면 mysql_num_rows 를 사용
  
}
   mysql_free_result ($result);
  ?>
 
 
 
 
 
--------------------------------------------------------------------------------
 
 
 
 
 
* 문자열 함수 *
 MYSQL DB 에서 쿼리로 자료를 추출하다.=> $변수
 echo "<html><body><font size=2>Hellow</font>";
 echo "<font size=2> $name </font>";
   홍길동   2004-10-7    전자/유아/도서/      경리-회계-인사
 (1) addslashe($변수)  슬래쉬 문자를 인용한다.
      디비 쿼리와 같이 인용된 부분에 백슬러쉬 붙여 반환
       예) ' , " , \ , NULL
      <?php
      $st="select * from member where id='test'";
      echo addslashes($st);  ==> .... id=\'test\'
      ?>
      stripslashes ($변수)
      백슬러쉬가 있는것을 제거하여 반환한다.
      $ss="/'test/'";
      echo stripslashes($ss);
*************************************************
echo 출력한다.
 = 변수를 포함하여 출력할수 있다.
  
 ex)<?php
      echo "<font size=2>Hellow
       World
       $num 와 $bbs 입니다.</font>";   ?>
  ----------------------------------------------------------
 <html>
 <body>
 <form><input  type="hidden" name="cooki"  vale="123 12">
 <font size="2" color="red">Hellow
       World  <?php echo "$num"; ?> 와
      <?php echo "$bbs"; ?> 입니다.</font>
  ----------------------------------------------------------------
 (2) explode  (매우중요)
       문자열을 주어진 문자열을 기준으로 분리한다.
       문자열을 separator 경계로 나누어 반환
      $pizza = "piece1-piece2-piece3";
      $pieces = explode ("-",$pizza);
      echo $pieces[1];
     예) 새로운 화일 class.conf 를 만들자
           여기에 도서분류카데고리를 만든다.
           $book_class="교양/여성/유아/과학/원서/컴퓨터/건축';
          위의 explode 가 작동할 php 문을 편집한다.
     예) 옵션컬럼 $option='빨강-노랑-은색-검정";
                           $size="200cm/350cm/750cm";    
        
    require "class.conf";   
     ==> 변수, 함수, 페이지를 호출할수 있다.   
     global $book_class, $member, $welcome;
     ==> GLOBAL은 전역변수 선언으로 페이지 루틴 모두 적용
     $book_category = explode ("/",$book_class);
   
      echo "<font> 도서분류 : $book_category[0]<br>";
      echo "<font> 도서분류 : $book_category[1]<br>";   
      echo "<font> 도서분류 : $book_category[2]<br>";
      echo "<font> 도서분류 : $book_category[5]<br>";
      echo "<font size=5 color=red>
      $member 님 안녕하세요 $welcom</font>";
  ***********************************************************
    implode ()
    배열의 내용을 하나로 묶는다.
    (explode와 반대 개념, join과 기능 동일)
   ex) $book = array("과학","여성","컴퓨터");
          $class = implode (" ", $book);
         echo $class;
  ***********************************************************
   nl2br
   뉴라인을 HTML 라인 브레이크(BR)로 변환
  <?php             <br>
  $st = "hellow \n Wlecome to\n PHP world";
  echo nl2br($st);
  /*  PHP주석   */  <!--  HTML주석 -->
  echo "<html><body><!-- 회원비밀정보출력 -->";
  ?>
 ****************************************************************
  strlen ($변수) 문자열의 길이를 반환
  $st = "hellow Linux Mysql";
  echo strlen($st);
  문자열의 길이를 알수 있다.
 
  strstr ($변수, '기준자') => 기준자부터 문자열 반환
  ex) $email = 'korea@samsung.com';
      
         $domain = strstr ($email, '@');
         echo "현재 회원님의 도메인은 $domain 입니다.";
 strrev ($변수)  => 문자열을 역순으로 반환
   $url = 'www.oi.co.kr';
   echo stttev($url);
 
 str_repeat  ("반복할문자", 반복수)
  <?php
    echo str_repeat("--", 20);
   ?>
 substr ("값", 수1, 수2 );
 주어진 문자의 일부분을 반환
 echo substr("abcdef", 1)   ==> bcdef
 echo substr("abcdef", 1,3)   ==> bcd
 echo substr("abcdef", -1)   ==> f
 echo substr("abcdef", -2)   ==> ef
 echo substr("abcdef", -3,1)   ==> d
 ..("나의이상형은전지현입니다",  6,3)  => 전지현
***************************************************
   mysql table 상품 테이블을 등록한다.
   상품코드           
   상품명  CHAR   전지현                             소나타3   
   가격  INT            1000                               2000000
   제조사  CHAR    한국                                 현대
   옵션 CHAR         /미팅/친구/애인/부인       오토/수동/CDP
   마일리지 INT      0                                       2000
   설명 TEXT           국내 최고 여인                2004년 최신형
 ****************************************************
  table에 레코드를 기록
 ******************************************************
  sangpum.php
mysql_connect ("localhost","korea","0000");
       mysql_select_db("zip");
 $result=mysql_query("select sido,gugun, dong from zip ");
      $gesu=mysql_num_rows($result);
  echo "총 검색된 수는 $gesu 입니다.";
while ($row=mysql_fetch_array($result))
  {
    echo "<table width=600 border=1  bgcolor=#fofofo>
  <tr><td> $row[sido]</td>
  <td>  $row[gugun] </td>
  <td> $row[dong] </td>
  </tr></table>
  <br>";
}
  * HTML <select name=option>
    <option value=nn>nnn</option>  형태이다.
    /친구/부인/애인..옵션을 나누어 아래 스크롤로 만든다.
   if($row["option"]) {
       echo "<select name=option>";
       $sizes = expolde("/",$row["option"]);
       $tot = sizeof($sizes);
       for($i=0;$i<$tot;$i++)
       {
        echo "<option value='$sizes[$i]'>$sizes[$i]</option>";
        }
         echo "</select>";
         }
***********************************************************
*** 이메일 보내기 ****************************************** 
$titles="$title";    
$subject="$title";  //제목
$mail_txt="$name님 안녕하세요 $id 입니다.....";
$admin_mail="nnn@nnn.com";  //보내는이메일주소
$mailto = $mail;
$mailheaders = "Return-Path: $admin_mail\r\n";
$mailheaders = "From: $title<$admin_mail>\r\n";
$mailheaders .= "Content-Type: text/html;charset=euc-kr\r\n";
//mail("보내는사람","제목","본문","메일헤더");
 mail("$admin_mail", "$titles",
            "$mail_txt", "$mailheaders");
 echo " 성공적으로 메일이 발송되었습니다. 감사합니다.";
 echo "<img src= rrrr.gif >";
 
 
 
 
-----------------------------------------------------------------------------
 
 
 
 
 
***************************************************
   mysql table 상품 테이블을 등록한다.
   상품코드           
   상품명  CHAR   전지현                             소나타3   
   가격  INT            1000                               2000000
   제조사  CHAR    한국                                 현대
   옵션 CHAR         /미팅/친구/애인/부인       오토/수동/CDP
   마일리지 INT      0                                       2000
   설명 TEXT           국내 최고 여인                2004년 최신형
 ****************************************************
  table에 레코드를 기록
 ******************************************************
  sangpum.php
mysql_connect ("localhost","korea","0000");
       mysql_select_db("zip");
 $result=mysql_query("select sido,gugun, dong from zip ");
      $gesu=mysql_num_rows($result);
  echo "총 검색된 수는 $gesu 입니다.";
while ($row=mysql_fetch_array($result))
  {
    echo "<table width=600 border=1  bgcolor=#fofofo>
  <tr><td> $row[sido]</td>
  <td>  $row[gugun] </td>
  <td> $row[dong] </td>
  </tr></table>
  <br>";
}
  * HTML <select name=option>
    <option value=nn>nnn</option>  형태이다.
    /친구/부인/애인..옵션을 나누어 아래 스크롤로 만든다.
   if($row["option"]) {
       echo "<select name=option>";
       $sizes = expolde("/",$row["option"]);
       $tot = sizeof($sizes);
       for($i=0;$i<$tot;$i++)
       {
        echo "<option value='$sizes[$i]'>$sizes[$i]</option>";
        }
         echo "</select>";
         }
***********************************************************
*** 이메일 보내기 mail.php ******************************************    
global $subject, $email,$color,$message;
$subject="$subject";  //제목
$mail_txt="$message";
$admin_mail="email";  //보내는이메일주소
//$mailto = $mail;
$mailheaders = "Return-Path: $admin_mail\r\n";
$mailheaders = "From: $title<$admin_mail>\r\n";
$mailheaders .= "Content-Type: text/html;charset=euc-kr\r\n";
//mail("보내는사람","제목","본문","메일헤더");
 mail("$admin_mail", "$subject",
            "$mail_txt", "$mailheaders");
 echo " 발송된 메일의 확인입니다..";
 echo "제목: $subject <br>이메일 $email <br> $color,$message";
echo "<img src= rrrr.gif >";

***************************************************
<html><body>
<form action=mail.php method=post>
<input type=text name=subject size=30><br>
<input type=text name=email size=30><br>
<input type=text name=color size=30><br>
<textarea  rows=10  cols=30  name=message></textarea>
 <input type=submit name="[[[[ 확   인 ]]]">
 
 
 
 
-----------------------------------------------------------------------------
 
 
 
 
 
PHP 의 제어 구조
(1) if-else 구문 (가장 많이 쓰이는 구문)
    ex) if (조건) { 조건에 따른 처리; }
          if ( $point > 90 ) { echo " 잘했습니다."; }
   ex) if (조건) { 조건에 다른 처리; }
         elseif (조건) { 조건에 따른 처리; }
         else { 조건에 따른 처리; }
     <?php
     $oracle=85;
     $linux=75;
     $jumsu = ($oracle+$linux)/2;
     if ($jumsu >= 90)  {
        echo "<table>...전지현";
     }
     elseif ($jumsu >=80 && $jumsu <90 )
      {
       echo "<img src=essay.gif>";
      }
     else {  echo "book3.gif";  }   ?>
 **********************************************
  while (조건)  { ~~동안 조건에 따른 처리 }
    ( = while (조건): 조건에 따른처리; endwhile; )
  <?php
  $a=1;
  while ($a <=10) {
  echo "<font size=5 color=red>$a</font><br>";
  $a++;   (1씩 증가하여 반환한다)
  }
 ***************************************************
  do while 구문
  do {  조건에 따른 처리 }
  while (조건);
 ****************************************************
 for (초기값; 끝나는조건; 반복처리)
  { 조건에 따른 처리 }
 echo "<table width=500 border=1>";
 for ($a=1; $a <=10; $a++)
        { echo "
     <tr><td bgcolor=yellow>
     <font size=3 color=red> $a 번 자료 입니다. </font>
     </td></tr>";
  }
 echo "</table>";
**********************************************************
 foreach (배열변수 as 로컬변수) { 처리구문 }
   ex) <?php
    $odd_num = array (1,3,5,7,9);
    foreach ($odd_num as $value) {
    echo "$value 입니다.<br>";
    } ?>
**********************************************************
 break, continue 구문
 break ==> for, while, switch 에서 해당 구문 빠져 나감
 continue ==> for, while 에서 현재 루프의 처음으로 돌아감
 <?php
 for ($a=1; $a<=10; $a++) {
 $value=$a;
 if ($value >30) { echo "$value";  
      break;
 }
***********************************************************
   require (파일명) - 지정파일의 함수,변수사용 (config..)
   include(파일명) - 지정파일의 읽기 실행
************************************************************
 함수(function) :
 특정 기능을 모아서 필요할때마다 불러서 사용
 중복된 기능을 피하고 동일 기능을 여러번 수행시 필요
****함수 설정하는법 ***********
 function  함수명($변수) {
  수행할 구문 
  return;   }
*****함수를 호출하여 이용하는 방법********
 함수명($변수);
*************************************************************
ex) <?php
 functin test($value) {
 echo "$value";
  return; }        test(1234); ?>
 
 function  squre($num) {
 return; }
 echo square(10); 
 function 
*********************************************
함수를 이용하여 구구단을 2단부터 9단까지 출력하는
프로그램을 만들어 보자.
(각 단 하나의 테이블로 출력하게하자)
.
*************************************************
<?php
echo "[구구단 출력 프로그램]<br>";
// 2부터 9까지 함수를 반복 호출
for ($i=2; $i<=9; $i++)
{
 show_gugudan($i);
}
 
// 숫자를 넘겨받아서 구구단을 출력
function show_gugudan($num)
{
echo "<table border=1 width=120>\n";
echo "<tr><th>$num 단</th></tr>\n";
 
for ($i=1; $i<=9; $i++)
{
echo "<tr><td align=center>$num X $i = ";
echo $num * $i;
echo "</td></tr>\n";
}
return;
}
?>
*******************************************************
변수의 사용 범위
전역변수(Global) 프로그램전체에서 사용 가능
  global $변수,$변수;
지역변수(Local) 선언된 지역(함수)에서만 사용 가능
정적 변수(static) 함수가 종료되어도 유지 사용 가능
$변수=숫자;
    -> 숫자등 정수인경우 " " 불필요
$변수="문자열";  
   -> 문자열 또한 변수 입력 $nnn등 문자열 인경우 ' " 로 처리한다.
**********************************************************
<?php
$message="구매를 합니다.";
golbal $message,$nnnn,$kkkk;

function test() {
global $message;
echo "귀하의 전달 사항은 $message 입니다.";
}
test();
?>
***********************************************************
1. FROM 변수
 폼값 ---> 서버 --->  크라이언트
 <HTML>의 형태로 만들어져 서버에 전달된다.
 FORM은 프로그램언어의 처음과 끝이다.==>폼생폼사
<HTML>
<form action="웹경로" method="get 혹은 post">
웹경로 : form value(폼값)을 받는 cgi,php,jsp경로
method
(1) get : 브라우져상단에 폼값 인수가 전달
   ex) action=mail.php
     전달방법 :..mail.php?id=korea&code=333&name=ho
 (2) post : 데이터가 표준입력 방식으로 전달
                  외부에 보이지 않는다.
-----------------------------------------------------------------
DATA를 보내는 방법---> server
한줄로 입력칸이 출력
<input type="text" name="korea" size="10"
  maxlenght="20">
name=korea 서버에 전달시 변수명(name)
size= 입력칸의 크기
maxlenght = 입력칸의 최대입력수제한
----------------------------------------------------------------
<input type=password name=ppp...>
비밀번호 입력으로 입력값이 보이지 않는다.->******
<input type=hidden name=cooki value=04010>
<input type=hidden name=id value=골뱅이>
출력되지 않지만 전달될 폼의 값
-----------------------------------------------------------------
<input type=checkbox name=취미 value=독서  checked>
<input type=checkbox name=취미 value=운전>
=>여러개의중에 다수 선택 가능
<input type=radio name=성별 value=남자>
=>한개만 선택
</form>
******************************************************
<select name=option>
<option value=노랑 checked>노랑색 우산</option>
<option value=빨강>빨강색 중간 우산</option>
<option value=파랑>파랑색 큰 우산</option>
</select>
********************************************************
내용이 긴 문장을 쓰는 입력칸
<textarea name=변수명 rows=행의길이   cols=열의길이
  wrap=virtual or physical or off>
</textarea>
wrap=virtual  화면에 맞게 자동 줄바꿈, 전송시는 입력대로 전송
wrap=physical 화면에 자동 줄바꿈 및 전송시에도 줄바꿈
wrap=off 기본적으로 자동 줄바꿈 하지 않는다.
 
*********************************************************
입력한 내용을 전달하는 버튼을 만들기
*이 버튼 위에 </form>이 있으면 전달 불능
<input type=submit  name=보내기 value="[[[[보내기]]]]">
</form>
**********************************************************
 
 
 
-----------------------------------------------------------------------------
 
 
 
 
 
php.ini -> register_global=On -> apachectl restart
 (웹상에서 POST,GET 받게함)  

 <?php
   echo "$name";
모든 전송 변수를 반는것을 선언
      extract($_GET); extract($_POST);
      echo "$name<br>";
      echo "$id"
    
전송된 변수를 받을수 있도록 설정(개별)
       echo "$_GET[name]";
       echo "$_POST[name]";
******************************************************************
MYSQL에 데이타 입력하기
mysql_connect ("localhost","korea","0000");
mysql_select_db("zip");
$query= "insert into goods(id,name,number)
             values(''id,'$name','$number")";
mysql_query($query);
****************************************************
데이타 출력하기
member.php
mysql_connect ("localhost","korea","0000");
mysql_select_db("zip");
$result=mysql_query("select id,name, address from zip ");
$gesu=mysql_num_rows($result);
echo "총 검색된 회원수는 $gesu 입니다.";
while ($row=mysql_fetch_array($result))
  {
    echo "
<form action=mem_modify.php method=get>
<table width=600 border=1  bgcolor=#fofofo>
<input type=hidden name=act value=modify>
  <tr><td>아이디: <input type=text name=id value='$row[id]'></td>
  <td> <input type=text name=id value='row[name]'> </td>
  <td> $row[address] </td>
********************************************************
   checkbox  나 select 박스의 처리는
if ($habby == 도박) {  $check1="checked"; $check2=""; }
elseif ($habby == 독서 ) {$check1=""; $check2="checked";}
echo "<input type=checkbox name=도박 $check1>
           <input type=checkbox name=독서  $check2>";}
수정된 정보는 업데이트 쿼리를 이용한다.
mysql_query("update member  set  id='newid',address='주소' 
             where  name='홍길동';
************************************************************
<input type=submit name=kkk value="확실히보냅니다.">
  </tr></table>
  <br>";   }
*************************************************************
*******************************************************************
폼값을 넘기는 버튼에 대해
-- 확인버튼
(이미지버튼)
<input type=image src=aaa.gif></form>
(기본 버튼)
<input type=submit  value="[[[ 확인 ]]]" name=aaa >
-- 뒤로 가는 버튼
 <a href=JavaScript-x:clickOn=history.go(-1)><img src=back.gif></a>
--웹 링크 설정
 <a href=경로>버튼</a>
--메타 리다이렉션 자동 이동하기
<meta http-equiv='Refresh' content='0; URL=index.php'>
 
 
 
-----------------------------------------------------------------------------------
 
 
 
 
 
php.ini -> register_global=On -> apachectl restart
 (웹상에서 POST,GET 받게함)  

 <?php
   echo "$name";
모든 전송 변수를 반는것을 선언
      extract($_GET); extract($_POST);
      echo "$name<br>";
      echo "$id"
    
전송된 변수를 받을수 있도록 설정(개별)
       echo "$_GET[name]";
       echo "$_POST[name]";
******************************************************************
MYSQL에 데이타 입력하기
mysql_connect ("localhost","korea","0000");
mysql_select_db("zip");
$query= "insert into goods(id,name,number)
             values(''id,'$name','$number")";
mysql_query($query);
****************************************************
데이타 출력하기
member.php
mysql_connect ("localhost","korea","0000");
mysql_select_db("zip");
$result=mysql_query("select id,name, address from zip ");
$gesu=mysql_num_rows($result);
echo "총 검색된 회원수는 $gesu 입니다.";
while ($row=mysql_fetch_array($result))
  {
    echo "
<form action=mem_modify.php method=get>
<table width=600 border=1  bgcolor=#fofofo>
<input type=hidden name=act value=modify>
  <tr><td>아이디: <input type=text name=id value='$row[id]'></td>
  <td> <input type=text name=id value='row[name]'> </td>
  <td> $row[address] </td>
********************************************************
   checkbox  나 select 박스의 처리는
if ($habby == 도박) {  $check1="checked"; $check2=""; }
elseif ($habby == 독서 ) {$check1=""; $check2="checked";}
echo "<input type=checkbox name=도박 $check1>
           <input type=checkbox name=독서  $check2>";}
수정된 정보는 업데이트 쿼리를 이용한다.
mysql_query("update member  set  id='newid',address='주소' 
             where  name='홍길동';
************************************************************
<input type=submit name=kkk value="확실히보냅니다.">
  </tr></table>
  <br>";   }
*************************************************************
*******************************************************************
폼값을 넘기는 버튼에 대해
-- 확인버튼
(이미지버튼)
<input type=image src=aaa.gif></form>
(기본 버튼)
<input type=submit  value="[[[ 확인 ]]]" name=aaa >
-- 뒤로 가는 버튼
 <a href=JavaScript-x:clickOn=history.go(-1)><img src=back.gif></a>
--웹 링크 설정
 <a href=경로>버튼</a>
--메타 리다이렉션 자동 이동하기
<meta http-equiv='Refresh' content='0; URL=index.php'>
**************************************************
  04.10.12
  PHP 파일 조작 함수 및 FILE UPLOAD 처리
  (FORM 을 이용한 mysql 연동 처리)
  PHP를 이용한 방명록 만들기
(1)파일 함수
   fopen("경로명","속성")
   : 파일이나 URL를 연다.
   r :읽기전용 r+ :읽기쓰기 
   w: 쓰기전용(없으면새파일생성)
   W+ : 읽기쓰기가능(없으면새파일생성)
   a : 쓰기전용 (파일포인터맨끝,없으면 만듬), a+
-----------------------------------------
  <?php
  fopen("http://www.naver.com/","r");
  fopen("/home/text.txt", "w+");
  ?>
------------------------------------------
 <?php
  $file=fopen("http://www.yahoo.co.kr/","r");
  if (!$file) {
   echo "존재하지 않는 파일이거나 경로입니다.";
   exit;
  }
  while (!feof($file))
  {  $line = fgets($file,1024);
     echo $line;
   
   }
 fclose($file)  ?>
 
 fclose ($열린파일) :열려있는 파일 포인터를 닫는다.
 fgets (파일명,길이) :파일로 부터 하나의 줄 읽어옴
   ex) $buffer=fgets($file,4096);
        echo $buffer;
       --> $file의 파일에서 4096바이트씩 출력
 fgetc() : 파일로 부터 하나의 문자를 읽어 온다.
 ex) $fp = fopen("user.txt","r");
      while ($chr = fgetc($fp))
      {   echo $chr;  }
      fclose($fp);   
 ------------------------------------------
  fputs(파일명,길이); 파일포인터에 문자열 저장
  file () 파일 전체를 읽어서 배열로 반환
ex)
<?php
$fcontent=file('http://www.naver.com/');
    //배열로 웹 페이지를 가져오고 저장
while (list($line_num,$line)=each($fcontents))
   //each는 각각배열을 가져오고 list는배열변수로 할당
{
 echo "줄수: $line_num"
        .htmlspecialchars($line). "</br>"; }
?>  //특수문자를HTML로전환htmlspecialchars()
********************************************
 file_exists 파일이 있는지 확인
 if (file_exists("img1001.jpg"))
 { echo "<font size=3>화일이 존재합니다. 크기는</font>"
    .filesize("img1001.jpg");
    }
-------------------------------------------
 filesize () 파일의 사이즈를 구한다.
  $size=filesize($img);
   if ($size > 10000 ) { echo "용량초과화일";}
********************************************
  chmod ("php.htm", 0755);
  화일의 권한을 변경한다.
   <?php chmod("php.htm",0755); ?>
  copy(화일명,경로) :  파일을 복사한다.
  <?php copy("php.htm","/home/img/");
    echo "파일복사가 성공적으로 완료되었습니다."; ?>
  unlink(파일명); 파일을 삭제한다.
  <?php
   $file="php.htm";
   if (file_exists($file)) {
   if (unlink($file))
    {  echo "$file 이 삭제되었습니다."; }
   else { echo "파일 삭제하지 못했습니다."; }
   }
   else { echo "$file 이 존재하지 않습니다."; }
   ?>  
  exec(chmod 707 ./picture) ;
-------------------------------------------
  mkdir 경로를 만든다.
  mkdir("/tmp/dir", 0700)
  rmdir 경로를 삭제한다.
  rename(oldname, newname)
         파일 이름을 변경한다.
*******************************************
 기타함수
 mail 함수
 ex) mail("info@naver.com", "제목입니다.",
      "본문내용입니다.", "$header");
     
     *MAIL헤더는 상단에 정의하여 준다.
  $header .="X-mailer:l/n";
  $header .="content-type:text/html...";
-----------------------------------------
  sleep 지정한 시간만큼 실행을 지연
  <?php
   echo "5초후 실행됩니다.";
   flush();  //버퍼를 비운다
   sleep(5);
   echo "모든 처리가 완료되어습니다";
   ?>
  system() 명령어 실행및 출력
   <?php echo system('ls');
     exec('chmod 707 php.htm'); ?>
   * 보안상 문제가 유발될수 있다.
*****************************************
  * 문자열 암호화하기 (%와 16진수 코드,공백은 +)
    (웹에서 노출을 피하려는 문자에 이용
     ex) GET 방식 혹은 정보등)
 
   urlencode($문자변수) : 문자열이 알파벳이아닌
     문자를 인코딩(encoding)한다.
   <?php
   $myurl = "id=korea&name=홍길동";
   echo urlencode($myurl);
   echo urldecode($myurl);
   $origin='urldecode($myurl)';
    echo "<font size=5>현재 번역된 값은 $origin 입니다.";
   ?> 
  
  urldecode($문자변수) : 인코딩값을 원래문자로 변환
*************************************************************
   parse_url :
   URL를 파싱해서 각 항목을 연상 배열로 반환
   sheme, host, port,user,pass,path,query
   <?php
   $url=
parse_url(
'http://dnshop.net/gg/Category?CID=D5191');
//위의 줄은 한줄로 입력한다.
  echo "scheme : $url[scheme]<br>";
  echo "host : $url[host]<br>";
  echo "path : $url[path]<br>";
  echo "query : $url[query]<br>";
?>
***************************************************************
 
 
---------------------------------------------------------------------------------
 
 
 
 
 
*gb_write.php  ->쓴글의 변수를 받아서 DB연동및 처리
<?php
extract($_GET); extract($_POST);
//함수정의
function popup_msg($msg) {
 echo("<script-x language=\"javascript-x\">
                    <!--
                            alert('$msg');
                               history.back();
                                  //-->
                          </script-x>");
}  //함수정의끝
if (!$gb_name) { echo popup_msg('이름를 기입하세요'); }
if (!$gb_email) { echo popup_msg('e-mail 기입하세요'); }
//////////////////////////////////데이터베이스접속함수
mysql_connect ("localhost","korea","0000");
mysql_select_db("zip");
mysql_query("insert into guestbook
(gb_date,gb_ip,gb_name,gb_email,gb_location,bg_url, gb_note)
value( sysdate(),'$REMOTE_ADDR','$gb_name','$bg_location',
         '$gb_url','$gb_note')";
/////////////////////////////////////////////////////////
//// 등록후 결과 알려주기
echo "<table width=500><tr><td>
        <font size=5>등록이 완료되었습니다. 당신의 IP는 $REMOTE_ADDR</font>
        </td></tr>
         <tr><td><a href=gb_list.php>
        <font size=5>[목록 리스트] 돌아가기</font></a>
        </td></tr>
       </table>";
echo "<meta http-equiv='Refresh' content='0; URL=gb_list.php'>";
     ?>
*********************************************************************************
gb_list.php
mysql_connect ("localhost","korea","0000");
mysql_select_db("guestbook");
$result=mysql_query("select * from guestbook");
$gesu=mysql_num_rows($result);
echo "총 검색된 방문록는 $gesu 입니다.<br>";
while ($row=mysql_fetch_array($result))
  {
echo "<table width=600 border=1 bgcolor=yellow>
<tr><td>이름</td><td> $row[gb_name] 이메일; $row[gb_email] </td></tr>
<tr><td>날짜</td><td> $row[gb_date] $row[gb_ip] </td></tr>
<tr><td>주소</td><td> $row[gb_location] </td></tr>
<tr><td>홈페이지</td><td> $row[gb_url]
<a href=delete.php?idx=gb_index> [삭제] </a> </td></tr>
<tr><td>한마디</td><td> $row[gb_note] </td></tr>
</table>  ";
}
echo "<a href=gb_write_form.php>[글쓰기]</a> | [삭제] | [목록] ";
?>
**************************************************************************
delete.php
global $idx;
echo "<center><table width=600 bgcolor=fofofo>
      <tr><td align=center>
      <form action=delete_process.php method=post>
      <input type=hidden name=idx value=$idx>
      관리자 ID  <input type=text name=admin_id><br>
      비밀번호  <input type=password name=admin_pass>
     </td></tr></table></center>";
****************************************************************************
delete_process.php
global $idx, $admin_id, $admin_pass;
//관리자비밀번호설정
$admin="korea';
$passwd="0000";
//비밀번호 및 아이디 비교하기
if ( $admin_id == $admin && $admin_pass == $passwd )
{ 쿼리문으로 삭제 실행 ;
echo "<meta http-equiv='Refresh' content='0; URL=gb_list.php'>";
}
else { echo "<font size=4 color=red> 관리자만 삭제할수 있습니다.!!
      </font>";
echo "<a href=JavaScript-x:clickOn=history.go(-1)>뒤로 가기</a> <br>
        <meta http-equiv='Refresh' content='2; URL=gb_list.php'>";
}
 
 
--------------------------------------------------------------------------------
 
 
 
 
 
2004.10.13
이론) PHP 시간함수, 비교연산자 알기
실습) PHP를 이용한 설문조사
******************************************************************
touch date.php
date(형식);  => 주어진 포멧의 날자 표시
 Y : 년도 1999  y  : 2자리년도 99
 A : AM or PM  a : am or pm
 d : 2자리 숫자 날짜 (01-31)
 g : 12시간(1-12) G :24 시간(0-23)
 i : 분 (00-59) 
 m : 월 (01-12)
 s 초 : 2자리 (00-59)
 T : 시스템의 타임존
 w : 요일숫자 (0 -sun~6-sat)
$yoil=date(w);
if ($yoil=0) { $yo=일;}
  회원님 입찰은  년  월  일 (요일) 시  분 초 입니다.
 오늘은  **8월 8일 8일 (금요일)
ex) echo date();
     echo date("Y : m : d");
     $date=date();
*********************************************************
getdate() 날짜/시간 정보를 연상배열 반환
<?php
$today=getdate();
second : 초  minutes : 분
hours : 시     mday :날짜
wday :요일   mon 월(숫자)
year : 년   weekday :요일(문자)
-----------------------------------------
$month=$today['mon'];
$mday=$today['mday'];
$year=$today['year'];
echo "회원님 가입일은 $month $mday $year 입니다";
-------------------------------------------
time () : UNIX의 기준시간부터 지금까지 시간을
            초단위로 반환(Jan 1 1970 00:00:00)
ex) $time=time();
      echo "현재시간 $time";
*****************************************************************
 환경변수
 : PHP는 실행시 미리 정의된 변수를 제공한다.
  버젼에 따라 다르지만 기본적인 변수가 있다.
  (apache와 PHP 환경변수)
  <?php
  phpinfo();
  ?>
  HTTP_USER_AGENT :사용자의 브라우져 정보
   ex) echo "$HTTP_USER_AGENT";
  REMOTE_ADDR : 사용자 IP
  SERVER_ADDR : 서버의 주소
  SERVER_PORT : 웹서버에 접속하는 포트번호
  SCRIPT-x_FILENAME : 현재 실행된 스크립 절대 경로
  SERVER_SOFTWARE : 서버에 설치된 웹 서버명과 모듈
********************************************************************
 예) 회원님은 현재 _________에 시간에 접속하였고
     사용하신 브라우져는 ________이고
    ______________IP에서 접속하였고, 우리 서버의 __포트
    로 접속하였습니다. 본사 서버는 ________입니다.
 
 
 
-----------------------------------------------------------------------------------
 
 
 
 
 
<?php
extract($_GET); extract($_POST);
//userfile 넘어오면서 파일명은 _name를 붙여 생성한다.
echo "$userfile_name";
copy ("$userfile","/upload/$userfile_name");
?>
---------------------------------------------------------------------------  
$file_name = substr( strrchr($userfile_name,"."),1);
$filea_name = substr( strrchr($userfilea_name,"."),1);
if ($file_name!="gif" && $file_name!="jpg" &&
   $file_name != "asf")
  { error('자기사진 확장자는 gif, jpg, asf 이어야함');}
  if ($filea_name!="gif" && $filea_name!="jpg")
 { error('앨범그림의 확장자는 gif 또는 jpg 이어야함');}
$img_file = "$id"."."."$file_name";
$simg_file = "s-"."$id"."."."$filea_name";
copy($userfile, "/upload/$img_file");
       unlink($userfile);
copy($userfilea, "/upload/$simg_file");
       unlink($userfilea);
논리연산자
----------------------------------------------------
a and b   a와 b가 모두 참
a or b   a 와 b 중 하나가 참인경우
! a   a 가 참이 아니면
a && b   a 와 b 가 모두 참
a || b  a 와 b중 하나가 참일때
ex) if ($a && $b)  {  실행 }
     => a 와 b 의 값이 모두 있다면...
      if ($a > 10 && $b < 20 )
      if ($a || $b ) {실행}
     => a 와 b 의 값이 하나라도 있다면...
      if (!$a) { }
     => a의 값이 없다면...
--------------------------------------------------
비교연산자
a == b    a 와 b 가 같다면
a != b    a와 b가 같지 않다면
a < b , a > b , a <= b, a >=b
--------------------------------------------------
if ( $ a == $price ) { 실행 }
 ==> a 의 값이 price 와 같다면
if ( $a != $price ) {실행}
 ==> a 의 값이 price 와 같지 않다면
--------------------------------------------------
<?php
$sonnim=20000;
if ( $sonnim == $bonus )
 { echo "<font size=3 color=red>손님은 보너스해당자입니다.
    </font>"; }
else { echo "아직 보너스에 해당되지 않습니다."; }
?>
<?php
echo "<table width=500 border=1>";
for ( $a=1; $a <=20; $a++ )  {
  skin1.php   skin2.php
gb_list.php
 
if ($hit >100 ) { $icon="hot.gif";
 if ( $a%2 == 0 ) { $color="fofofo";  $icon="crown.gif";}
 else { $color="white";  $icon="gift.gif"; }
echo "<tr><td  gbcolor=$color><img src=/img/$icon>  </td></tr>";
 }
echo "</table>";
?>
********************************************************
$a=12;
$b=6.7;
$tot=$a + $b;
$tot=$a - $b;
$tot=$a * $b;
$tot=$a / $b;
$tot=$a % $b;
echo "$tot";
************************************************************
ARRAY (배열)
$data = array ( "사원"=>"홍길동",
"대리"=>"박진영", "과장"=>"춘삼이",
"대표"=>"코코넛" );
while ( list($jikgub,$name) = each($date) )
{
 echo $jikgub ."님은" .$name ."입니다.<br>";
}
?>
------------------------------------------------------------------
SWITCH 구문
$price=200;
switch ($price) {
 case (100) :
echo "옥션에서 입찰은 불가능합니다. ";
 break;
 case (200) :
echo "입찰 가능한 금액입니다.";
 break;
 case (300) :
echo "금액이 높은 입찰은 매우 환영 반갑습니다.";
 break;
default;  echo "옥션에 참여하고 있습니다.";
}
____________________________________
require "error.php";
if (!$name) { error("name");  exit;}
if (!$name) { error("id");  exit;}
if (!$name) { error("password");  exit;}
PHP출력및 디비 연동 프로그램 페이지
____________________________________
<?php
function popup_msg($msg) {
   echo("<script-x language=\"javascript-x\">
   <!--
   alert('$msg');
   history.back();
   //-->
   </script-x>");
}
********************************************************
function error($errcode) {
   switch ($errcode) {
      case ("name") :
         popup_msg("이름을 입력하세요.");
         break;
      case ("id") :
         popup_msg("아이디를 입력하세요.");
         break;
      case ("password") :
         popup_msg("비번을 입력하세요");
         break;
  default ;
}
 
---------------------------------------------------------------------------------
 
 
 
 
[[[[[ 에러출력페이지 만들기 ]]]]]
____________________________________
require "error.php";
if (!$name) { error("name");  exit;}
if (!$id) { error("id");  exit;}
if (!$password) { error("password");  exit;}
*위의 $변수들은 정규 패턴을 검사하면 좋다.
PHP출력및 디비 연동 프로그램 페이지
____________________________________
error.php 의 핵심 스크립
<?php
function popup_msg($msg) {
   echo("<script-x language=\"javascript-x\">
   <!--+
   alert('$msg');
   history.back();
   //-->
   </script-x>");
}
********************************************************
function error($errcode) {
   switch ($errcode) {
      case ("name") :
         popup_msg("이름을 입력하세요.");
         break;
      case ("id") :
         popup_msg("아이디를 입력하세요.");
         break;
      case ("password") :
         popup_msg("비번을 입력하세요");
         break;
  default ;
}
<?php
//공용 라이브러리에서 설정한다. (ex, lib.php)
$dburl = "localhost";  //db URL
$dbuser = "korea";  //DB 사용자 ID
$dbpasswd = "0000";  //비밀번호
$dbname = "korea";  //DB이름
$dbconn = mysql_connect("$dburl","$dbuser","$dbpasswd");
  mysql_select_db("$dbname",$dbconn);
---------------------------------------------------------------
   book.php
ex) require "lib.php";
      global $dbconn;
       $dbresult = mysql_query
               ("select * from member where id='$id' ",$dbconn);
        $row=mysql_fetch_array($dbresult);
        각 변수로 받아옴 ex) $row[name];
       echo "$row[name]";
       $dbresult = mysql_query
               ("select * from order where oid='$oid' ",$dbconn);
        $row2=mysql_fetch_array($dbresult);
        echo "$row2[name];
------------------------------------------------------------------
전송된 폼 값을 받아 화일을 작성하는 핵심PHP 코드
lib.php를 만드는 admin_processing.php
----------------------------------------------------------
<?
global $ntitle,$url,$dbname;
//기존화일을 연다
$fp = fopen("/lib/lib.php","w");
fwrite($fp," <?php
\$title = \"$ntitle\"; //사이트 이름
.....
");
fclose($fp);
<name type="text" name="title" value="<?php echo "$title"; ?> ">
 
 $url="http://211.254.138.191/gb/gb_write_form.php";
           $title="????????????";
           $id="root";
           $passwd="rlagmlwns";
           $listwidth="600";
           $bgcolor="green";
           $listbg="gray";
           $imgwidth="400";
           $dbname="guestbook_hj";
           $dbuser="root";
           $usedb="guestbook_hj";

 echo "
<script-x language = javascript-x>
        function imgopen(){
        winstate =
window.open('large_view.php?image=$row[id]','image','width=600,height=500,resizable=yes,scrollbars=yes');
        }
</script-x>";
 <a href=javascript-x:imgopen()><img src=ala.gif border=0></a>

<\>
 
블로그 이미지

세이박스

세이박스는 세상의 모든 이야기를 담는 소통박스 입니다.

댓글을 달아 주세요

보통 데이타를 DB에 집어 넣을 때 load data infile 을 이용해서 화일로 부터 집어 넣습니다.
이런 방법도 무쟈게 빠름니다.

하지만 insert를 써서 데이타를 집어넣는 방법도 빠르게 할 수 있습니다.
예 1)
for($i=0;$i<4000;$++){
$j=$j+1;
$query=mysql_query("insert into table_name values('',$i,$j)");
}
예 1같은 경우는 insert를 4000번 이나 계속합니다. 좀 무리가 가겠죠..

예 2)
for($i=0;$i<4000;$++){
$j=$j+1;
$query_insert .="('',$i,$j),";
}
$query_insert=eregi_replace("[,]$","",$query_insert);//마지막에 붙는 ,를 제거합니다.
$query=mysql_query("insert into table_name values $query_insert");//한꺼번에 집어넣습니다.
예제 2와 같이하면 순식간에 데이타가 들어갑니다.
이렇게 하면 10만 집어넣는것도 몇분이면 끝납니다.
주의할점은 메모리에 따라서 인서트할 수 있는 수가 결정되는 거 같더라구요!..

이상 허접팁이었습니다.
블로그 이미지

세이박스

세이박스는 세상의 모든 이야기를 담는 소통박스 입니다.

Tag db, php, 데이타

댓글을 달아 주세요

SELECT ex_no, from_unixtime(`reg_date`,'%Y%m%d%H') as hh,
COUNT(ex_no) AS `cnt_reg_date`
FROM expose_log
Where from_unixtime(reg_date,'%Y%m%d%H') >= '04050406'
AND from_unixtime(reg_date,'%Y%m%d%H') <= '04050723'
GROUP BY from_unixtime(`reg_date`,'%Y%m%d%H'), `ex_no`
ORDER BY from_unixtime(`reg_date`,'%Y%m%d%H')

'데이타베이스' 카테고리의 다른 글

MYSQL unix time을 date 형식으로 보기 쿼리  (0) 2008.10.10
MYSQL DB 사용자 추가  (0) 2008.10.10
MYSQL root 패스워드 바꾸기  (0) 2008.10.10
MYSQL group by 의 예  (0) 2008.10.09
MYSQL 날짜와 시간별 데이타 뽑아내기  (0) 2008.10.09
MYSQL 백업과 복구 상세 설명  (0) 2008.10.09
MYSQL DB 원격 접속  (0) 2008.10.09
MYSQL 중복 체크한 쿼리  (0) 2008.10.09
MYSQL Table 복사  (0) 2008.10.09
블로그 이미지

세이박스

세이박스는 세상의 모든 이야기를 담는 소통박스 입니다.

댓글을 달아 주세요