우겨대는 전여옥, 어이없는 이종석

[노컷뉴스   2006-10-11 01:11:16]

田 “무슨 근거로 ‘핵실험 절대 없다’ 했나”, 李 “그런 말 한 적 없다”

북한 핵실험과 관련한 대정부 긴급현안질의가 벌어진 10일 국회 본회의… 한나라당 전여옥 의원이 이종석 통일부 장관을 불러낸 뒤 다짜고짜 “10월 4일까지도 ‘핵실험 징후가 없고 절대로 할 리 없다’ 무슨 근거로 그렇게 얘기 했냐”고 추궁했다.

이종석 장관은 “핵실험 징후는 특별히 발견하지 못했다’는 말을 한 건 사실이지만 ‘(핵실험을) 할 리가 없다’고 말한 적은 없다”고 답변했다.

그러자 전여옥 의원은 “속기록에 그렇게 얘기한 것으로 되어 있다”고 반박했다.

여유로운 웃음을 입가에 머금고 이 장관을 응시하는 전 의원의 표정에는 자신감이 넘쳤다.

하지만 이종석 장관도 흔들림이 없었다.

이 장관은 “그렇게 되어 있다면 속기록이 잘못된 것이다. 그렇게 말한 적 없다”고 맞섰다.

뜻밖에 이종석 장관이 강하게 나오자 전여옥 의원은 단상 위의 문서들을 뒤적거렸다.

일순간 전 의원의 얼굴에 당혹감이 스쳐 지나는 듯 했다.

전여옥 의원은 “자, 속기록에 이렇게 되어 있다. 내가 다 읽어주겠다”고 더듬거리며 말을 이어갔다.

그러나 전여옥 의원은 ‘(핵실험을) 절대 할 리 없다’는 구절을 자신이 손에 들고 있던 속기록 사본에서 찾을 수 없었다.

실제 이종석 장관이 그런 말을 한 사실이 전혀 없기 때문이었다.

북한이 외무성 성명을 통해 핵실험 계획을 발표한 바로 다음날인 지난 4일 긴급 소집된 국회 통외통위ㆍ국방위 연석회의에서의 이 장관 보고 내용을 정확하게 옮기면 이렇다.

“이 성명(북한 외무성 성명)은 저희들이 파악할 때는 미국의 태도 변화를 유도하기 위한 대미 압박 카드의 성격이 강한 것으로 파악하고 있습니다. 특히 지금 한미 간에 포괄적 접근 방안이 한참 협의 중에 있고, 또 다음 주에 중일, 한일, 한중 정상회담이 예정되어 있으며, 11월에 미국 중간선거가 있다는 점 등이 북한에게 고려됐던 걸로 보여집니다. 그러나 6자회담 재개와 관련된 노력이 불발로 끝날 경우에는 핵실험을 할 가능성이 높다고 보고 있습니다. 현재 핵실험을 실시하기 위한 구체적 징후는 없습니다”

‘핵실험 징후는 특별히 발견하지 못했다’는 말을 한 건 사실이지만 ‘(핵실험을) 할 리가 없다’고 말한 적은 없다는 이종석 장관의 주장 그대로다.

속기록을 통해 자신이 착각했음을 확인했다면 깨끗하게 잘못을 인정하면 될 일이건만, 전여옥 의원은 논점(이 장관이 ‘핵실험을 절대 할 리 없다’고 말했는지 여부)을 흐리는 발언을 이어가며 계속 목소리를 높였다.

그러더니 전 의원은 느닷없이 “북한 핵실험이라는 최악의 상황에 대한 가장 큰 책임자인 만큼, 대통령의 부담을 덜어주기 위해 사퇴를 해야 되는 것 아니냐”고 이 장관을 다그쳤다.

북한 핵실험이라는 초유의 사태를 수습하느라 정신이 없는 마당에, 하지도 않은 말을 ‘했다’고 우겨대는 야당 의원의 공세에 시달리는 주무 장관의 표정에는 ‘어이가 없다’는 기색이 역력했다.

CBS정치부 이희진 기자 heejjy@cbs.co.kr

Internet Explorer의 검색창에서 한글 입력이 안될때

1) 종합편

===========완벽한 해결법 입니다~========================================================
윈도우 xp 에서 이 문제가 자주 발생하는데요
(윈도우 2000에서도 발생되었음)

먼저

시작 – 설정 – 제어판 으로 들어 가셔서
‘국가및 언어옵션’ 에 들어가세요.
그다음
위에 [국가별옵션] [언어] [고급] 중에서
[언어] 에 들어가시구요. [자세히]로 들어가세요.
그리고 보시면 네모칸에
   키보드
    *한국어     <-여기 한국어 를 누르시구요
밑에 [키 설정] 을 누르세요.
[★만약에! 가끔 키설정이 않눌러 지는 경우도 있는데요. 그럴때는
     거기  키보드 누르시고 옆에 [추가] 를 누르신 다음
     한국어 로 해서 아무렇게나 하나 만들어 주세요
     그리고 만드신걸 누르시고 [키 설정] 을 누르시면 됩니다~]

그럼 고급 키 설정 창이 뜨는데요
거기서~!!
설정으로 되어있는 것 을 보시면
★셰프트+알트+마우스 왼쪽키 누르면 변환으로 되어있죠~?!
   (어떤분은 오른쪽 키로 되있는 분도 계실꺼에요)

이것이 문제 입니다~’-‘;; 이걸 누르게 되면 언어변환이 되게 설정이되어있쬬 `,.`;;
거기 3개를 두번 클릭 하셔서 설정을 없에 주세요~
(설정되있는 동그라미를 한번 더 누르시면 취소 됩니다)

입력 언어간 전환                                                  (없음)
한국어-한국어(으)로 전환                                      (없음)
한국어-한국어 입력 시스템(MS-IME2002)(으)로 전환 (없음)

이렇게요~!

그리고 다른거 전부 확인 확인 해주시면서 꺼주시면 됩니다~^^;;

이렇게만 해주시면 다시~~는 한/영 변환이 이상하게 되지 않죠^^
맘놓고 Alt+Shift+마우스 왼쪽 실컷 누르죠 ㅎ_ㅎ;

☆ 아참. 아까 [키 설정]이 안눌러져서 새로 하나 추가해서 만드신 다음
    옵션 변경하신 분들은 설정 다 하신다음
    위에 [기본 입력 언어] 에서
    아까 추가해서 만드신 걸로 골라주시고 확인 누르시고 나오시면 됩니다~’-‘/]

2) Internet Explorer의 검색창에서 한글 입력이 안될때 (win98.ME)

1. [시작] – [실행]을 클릭
2. "Regsvr32.exe /u msimtf.dll"을 입력후 확인후 메세지가 나오면 [확인]
3. "Regsvr32.exe /u msctf.dll"을 입력후 확인후 메세지가 나오면 [확인]
4. [시작] – [실행] – "regedit"를 입력후 [확인] 또는 Enter를 눌러 레지스트리 편집기를 실행.
5. HKEY_CURRENT_USER->Software->Microsoft->Windows->CurrentVersion->Run 항목에서
   "ctfmon.exe" 삭제
   KEY_CURRENT_USER->Software->Microsoft->Windows->CurrentVersion->Run
에서, ctfmon.exe ->삭제

3) Internet Explorer의 검색창에서 한글 입력이 안될때 (XP계열)

한글입력/한영전화기능 도움말 – (주로)대법원관련자료

주로 윈도우 xp에서 나타나는 현상으로, 일부xp의 경우 아래항목중 없거나 비활성화 되어있는 경우 무시하고 다음처리로 넘어가시면됩니다.

1.[제어판->국가 및 언어 옵션->언어 탭] ‘자세히’버튼선택
2.[택스트서비스 및 입력언어화면->설정 탭]설치된 서비스->한국어->키보드:한국어와 한글입력기 설치여부확인(둘다 설치되어 잇어야 하며,설치되어 있지 않은 항목은 오른쪽의 ‘추가’버튼을 선택하여 추가함)
3.[텍스트서비스 및 입력언어화면->설정 챕]기본설정-> ‘키설정’ 버튼선택
4.[고급키 설정 화면] ‘키시퀀스변경’버튼 선택->채크박스를 모두(입력언어전환,자판배열전환) 해제
5.[텍스트서비스 및 입력언어화면->고급 탭] 시스템구성->고급텍스트 서비스 사용안함 체크
   ( 저는 이것만해도되더군요^^)
6.시스템 재부팅
7.동일한 현상이 나타나면다음과 같이 수행하여 주시기 바랍니다

1. 시작->제어판->키보드->하드웨어->속성->드라이버->드라이버 업데이트 클릭
2. 하드웨어 업데이트 마법사 창에서 목록 또는 특정 위치에서 설치(고급) 선택
3. 검색안함. 설치할 드라이버를 선택할 것임 을 선택 후 다음 누름
4. 호환가능한 하드웨어 표시에 체크표시를 해제함
5. 제조업체에서 표준키보드를 선택하고 PC/AT 101키 호환 키보드를 선택, 한/영 키가 키보드에 있다면 한글 103/106키를 선택하고, 한/영변환키가 없다면 101키 호환 키보드를 선택

spoolsv.exe의 문제 cpu점유률 100%

이상하게 PC가 느려서 Task Manager를 봤는데 spoolsv.exe의 cpu점유률이 100% 인 경우가 있는가?

십중팔구 프린터 스풀 문제로 사료된다.

다음의 방법으로 슬기롭게 해결해보자.

방법1) 스풀러 리스트 클리어

지식 검색후 나랑 같은 문제에 봉착한 사람들이 많은 것 같아
알고있는 것을 나눌려고 합니다.

Spoolsv.exe이 cpu를 다잡아 먹을 때,

우선 control + alt + del 키를 누르고 Task manager에서 지금 동작 중인 Spoolsv.exe의 작업을 강제 종료시킵니다.

그런 다음 C:WINDOWSsystem32spoolPRINTERS 에 가셔서 모든 파일을 지우세요

그럼 작업 끝

P.S : 나중에도 이런 현상이 나타날 수 있습니다. 왜냐면 웹상에서 인쇄하다 보면 필요없는 것들이 스풀되는데 이것들을 프린터에서 처리할 수 없다면 계속 남아서 스풀처리를 할려고 할테고 그럼 전과 같이 Spoolsv.exe가 높아질 것이기 때문입니다.


방법2) 프린터 공유 문제 의심

제어판 -> 프린터 및 팩스 -> Microsoft Office Document Image Writer 에서 오른쪽 마우스 클릭 -> 속성 -> 공유

보시면 혹시 공유로 되어 있지 않나요?

공유 안함으로 해보세요^^

http-2.2.3에서 ssl 설치

httpd-2.2.3, php-5.2.0 + ssl 의 설치내용입니다.
ssl설치하다 아파치의 conf파일설정이 2.2.0부터는 변경되 삽질을 좀 했습니다.
그래서 변경된 설정내용을 적었습니다.
httpd.conf 가 여러개로 나누어졌다는 것이 주내용입니다.
conf/extra 아래 여러 conf 파일이 있습니다.

기본적인 설치내용이며 ssl은 rpm으로 기본설치된 상태에서 했습니다.
php 컴파일시 xml관련 필요한 프로그램을 요구하는데,
설치하거나 옵션을 disable 해야합니다.


————————————————————————————
위치 : /usr/local/src/httpd-2.2.3

./configure –prefix=/usr/local/apache2 –enable-so –enable-ssl –with-ssl=/usr
make
make install


위치 : /usr/local/src/php-5.2.0

./configure –prefix=/usr/local/php5 –with-mysql –with-apxs2=/usr/local/apache2/bin/apxs
make
make install

cp php.ini-dist /usr/local/php5/lib/php.ini



위치 : /usr/local/apache2/

vim conf/httpd.conf
    DocumentRoot “/www/htdocs”
    ServerAdmin ADMIN@DOMAIN.COM

    # <Directory “/”>
    # Order deny,allow
    # Deny from all
    # </Directory>
    # 이런설정이 디폴트여서 사용하는 디렉토리의 Allow를 해주지 않으면
    # 웹에서 접근시 403에러가 난다.
    # 웹에서 사용되는 가상호스트의 디렉토리에 대해 Allow from all 한다.
    <Directory “/www/htdocs”>
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>

    <Directory “/www/htdocs2”>
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>

    AddType application/x-httpd-php .php

    # 가상호스트사용을 위해서는 주석을 제거
    Include conf/extra/httpd-vhosts.conf

    # ssl사용을 위해서는 주석을 제거
    Include conf/extra/httpd-ssl.conf



vim conf/extra/httpd-vhosts.conf
    # 가상호스트설정 내용이 파일에 들어 있으니 수정해야 한다.



vim conf/extra/httpd-ssl.conf
    # DocumentRoot, ServerName, SSLCertificateFile, SSLCertificateKeyFile
    # 이와 관련된 내용만 수정하면 됨
    # 인증관련파일은 인증서 구입한 곳에서 인증서생성 메뉴얼을 주더군요.
    # 구입한 인증서 crt, key 파일 위치로 변경

    DocumentRoot “/www/htdocs”
    ServerAdmin ADMIN@DOMAIN.COM
    SSLCertificateFile /usr/local/apache2/conf/server.crt
    SSLCertificateKeyFile /usr/local/apache2/conf/server.key




실행
/usr/local/apache2/bin/apachectl start
   # startssl 이 더이상 되지 않는다. 그냥 start이다.

https://WWW.DOMAIN.COM 에 들어가서 확인.







httpd.conf, httpd-vhosts.conf, httpd-ssl.conf 파일내용.


httpd.conf
—————————————————-
ServerRoot “/usr/local/apache2”
Listen 80
LoadModule php5_module        modules/libphp5.so
<IfModule !mpm_netware_module>
User nobody
Group nobody
</IfModule>
ServerAdmin ADMIN@DOMAIN.COM
DocumentRoot “/www/htdocs”
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>
<Directory “/www/htdocs”>
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
<Directory “/www/htdocs2”>
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>
<FilesMatch “^.ht”>
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>
ErrorLog logs/error_log
LogLevel warn
<IfModule log_config_module>
    LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” combined
    LogFormat “%h %l %u %t “%r” %>s %b” common
    <IfModule logio_module>
      LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i” %I %O” combinedio
    </IfModule>
    CustomLog logs/access_log common
</IfModule>
<IfModule alias_module>
    ScriptAlias /cgi-bin/ “/usr/local/apache2/cgi-bin/”
</IfModule>
<IfModule cgid_module>
</IfModule>
<Directory “/usr/local/apache2/cgi-bin”>
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
DefaultType text/plain
<IfModule mime_module>
    TypesConfig conf/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType application/x-httpd-php .php
</IfModule>
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-ssl.conf
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>



httpd-vhosts.conf
—————————————————-
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin ADMIN@DOMAIN.COM
    DocumentRoot /www/htdocs
    ServerName WWW.DOMAIN.COM
    ServerAlias DOMAIN.COM
    ErrorLog logs/www_error_log
    CustomLog logs/www_access_log common
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin ADMIN@DOMAIN.COM
    DocumentRoot /www/htdocs2
    ServerName WWW2.DOMAIN.COM
    ErrorLog logs/www2_error_log
    CustomLog logs/www2_access_log common
</VirtualHost>



httpd-ssl.conf
—————————————————-
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
SSLSessionCache        shmcb:/usr/local/apache2/logs/ssl_scache(512000)
SSLSessionCacheTimeout  300
SSLMutex  file:/usr/local/apache2/logs/ssl_mutex
<VirtualHost *:443>
DocumentRoot “/www/htdocs”
ServerName www.DOMAIN.COM:443
ServerAdmin ADMIN@DOMAIN.COM
ErrorLog /usr/local/apache2/logs/error_log
TransferLog /usr/local/apache2/logs/access_log
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /usr/local/apache2/conf/server.crt
SSLCertificateKeyFile /usr/local/apache2/conf/server.key
<FilesMatch “.(cgi|shtml|phtml|php)$”>
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory “/usr/local/apache2/cgi-bin”>
    SSLOptions +StdEnvVars
</Directory>
BrowserMatch “.*MSIE.*”
         nokeepalive ssl-unclean-shutdown
         downgrade-1.0 force-response-1.0
CustomLog /usr/local/apache2/logs/ssl_request_log
          “%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x “%r” %b”
</VirtualHost>

초간단 php-oracle 연동 클래스

PHP에서 오라클 연동하려면 좀 고통스럽다.

뭔가 mySQL이랑 좀 다른 부분도 있는것 같고..

하여 클래스로 만들어보았다.



class Oracle
{
  var $DBID = “id”;
  var $DBPW = “pw”;
  var $DBSID = “sid”;

  var $conn;
  var $stmt;
        
  var $error = false;    // 에러 발생하면 true 로 수정됨. commit,rollback 결정에 사용
  var $transaction = false;    // true 면 auto commit 않함

  var $bind = array();
  var $data_size = array();

  // php4 의 생성자
  function Oracle(){    
            
    $this->connect();
  }
  // php5 의 생성자
  function __construct(){    
            
    $this->connect();
  }
  // php5 의 소멸자
  function __destruct(){    
            
    $this->disconnect();
  }

  function connect(){

    if(!$this->conn)
      $this->conn = OCILogon($this->DBID,$this->DBPW,$this->DBSID);
  }
        
  function disConnect(){

    if($this->stmt)
      @OCIFreeStatement($this->stmt);
    if($this->conn)
      @OCILogoff($this->conn);
  }
  // 바인드변수 값 지정
  // 같은 값이라도 executeDML() 호출전에 반드시 매번 호출해야 함(executeDML() 함수호출후 초기화되므로)
  function setBind($bind){

    if(is_array($bind))
      $this->bind = $bind;
    else if($bind)
      $this->bind = array($bind);
  }
  // 바인드변수 사이즈 지정. 지정안하면 해당변수의 최대사이즈가 기본값임
  function setDataSize($data_size){

    if(is_array($data_size))
      $this->data_size = $data_size;
    else if($data_size)
      $this->data_size = array($data_size);
  }
  // 쿼리문 결과를 ‘다중배열($rs[필드명][인덱스])’로 리턴한다
  // $preferch_size는 가져올 레코드건수를 지정함(옵션)
  function selectList($query,$preferch_size=1){
            
    $this->connect();
    $this->stmt = OCIparse($this->conn,$query);

    if($this->stmt){

      $this->bindByName();                                                        
      $this->prefetch($preferch_size);                                        

      if($this->transaction){                        
        @OCIexecute($this->stmt,OCI_DEFAULT);
        $this->error();
      }else{
        @OCIexecute($this->stmt);
      }
      $rows = @OCIFetchStatement($this->stmt,$rs);                
    
      if($rows){                    
        if(!$this->transaction)
          @OCIFreeStatement($this->stmt);
        return $rs;
      }
    }            
    return array();
  }
  // 쿼리문 결과 1건을 ‘배열($rs[필드명 or 인덱스])’로 리턴한다
  // $option 은 OCI_ASSOC(필드명) or OCI_NUM(인덱스) 을 지정(옵션)
  function selectRow($query,$option=OCI_ASSOC){
            
    $this->connect();
    $this->stmt = OCIparse($this->conn,$query);

    if($this->stmt){

      $this->bindByName();

      if($this->transaction){                        
        @OCIexecute($this->stmt,OCI_DEFAULT);
        $this->error();
      }else{
        @OCIexecute($this->stmt);
      }
      if(@OCIFetchInto($this->stmt,$rs,$option+OCI_RETURN_NULLS)){
        if(!$this->transaction)
          @OCIFreeStatement($this->stmt);
        return $rs;
      }                    
    }            
    return array();
  }
  // 한개 값만 리턴하는 쿼리문을 처리한다
  // ROWID,LOB,FILE 등 외에는 스트링으로 반환한다
  function selectOne($query){

    $this->connect();
    $this->stmt = OCIparse($this->conn,$query);        

    if($this->stmt){

      $this->bindByName();

      if($this->transaction){                        
        @OCIexecute($this->stmt,OCI_DEFAULT);
        $this->error();
      }else{
        @OCIexecute($this->stmt);
      }
      if(@OCIFetch($this->stmt)){

        // 인수 1은 컬럼순서 인덱스(1부터 시작함에 주의!,컬럼명 지정도 가능)
        $value = @OCIResult($this->stmt,1);    
        if(!$this->transaction)
          @OCIFreeStatement($this->stmt);
        return $value;
      }
    }
  }
  // insert,update,delete등을 실행후 영향받은 로우의 갯수를 리턴한다(auto commit일 경우만 갯수를 리턴함)
  // $transaction=true 일 경우 마지막에 반드시 commit() 함수를 호출한다
  function executeDML($sql){

    $this->connect();
    $this->stmt = OCIparse($this->conn,$sql);    
            
    if($this->stmt){

      $this->bindByName();

      if($this->transaction){    // auto commit 이 아닐 경우
        @OCIexecute($this->stmt,OCI_DEFAULT);
        $this->error();
      }else{
        @OCIexecute($this->stmt);
        $num = @OCIRowCount($this->stmt);
        @OCIFreeStatement($this->stmt);
                    
        return $num;                    
      }
    }
  }
  // auto commit 않하고 명시적으로 transaction 시작
  // executeDML() 호출후 마지막에 반드시 commit() 함수를 호출한다
  function transaction(){

    $this->transaction = true;
  }
  // transaction 완료후 commit 이면 true를 리턴함
  // executeDML() 에서 에러가 하나라도 발생하면 자동 rollback 됨
  function commit(){

    if(!$this->error){
      @OCICommit($this->conn);
      $commit = true;
    }else{
      @OCIRollback($this->conn);
      $commit = false;
    }
    if($this->stmt)
      @OCIFreeStatement($this->stmt);

    $this->transaction = false;
    $this->error = false;

    return $commit;
  }
  // $transaction=true 일 경우 매번 executeDML 에서 자동호출된다
  // 에러 발생할 경우 commit,rollback의 판단기준인 $error 값을 변경
  function error(){

    if($error = @OCIError($this->stmt)){                
      //echo “<p> Error is : ” . $error[“code”] . ” – ” . $error[“message”] . “<p>”;
      $this->error = true;
    }
  }
  // :b1,:b2,:b3…에 바인드 변수 지정
  // 바인드변수명은 반드시 :b1,:b2,:b3… 으로 지정한다
  function bindByName(){

    $size = sizeof($this->bind);

    for($i=0 ; $i < $size ; $i++){

      $ds = $this->data_size[$i];
      if(!$ds) $ds = -1;

      @OCIBindByName($this->stmt,”:b”.($i+1),$this->bind[$i],$ds);
    }
    $this->bind = array();                                                        
    $this->data_size = array();
  }
  // 오라클 클라이언트 버퍼에 저장되는 레코드의 수를 지정
  // 여러 레코드를 select할 경우 디폴트 값이 작아서 비효율적이면 가져올 건수만큼 지정
  function prefetch($preferch_size){

    if($preferch_size > 1)
      @OCISetPrefetch($this->stmt,$preferch_size);
  }
}

################# 여기서부터 사용예 입니다 #################

1. 여러건의 레코드를 select 할 경우
$db = new Oracle();
$query = “select title,name,date from tb where … 생략”;
$rs = $db->selectList($query);
for( $i=0 ; $i < sizeof($rs[“TITLE”]) ; $i++ ){
    echo $rs[“TITLE”][$i] . $rs[“NAME”][$i] . $rs[“DATE”][$i] . “<br>”;
}
* 주의하실건 꼭 배열에 대문자로 적으셔야 한다는 겁니다

2. 한건의 레코드를 select 할 경우
$query = “select title,name,date from tb where rownum=1”;
$rs = $db->selectRow($query);
echo $rs[“TITLE”] . $rs[“NAME”] . $rs[“DATE”];

3. 한개값을  select 할 경우
$query = “select count(*) from tb”;
$value = $db->selectOne($query);
echo “총 ” . $value . ” 건 입니다”;

4. insert,update,delete 할 경우
$sql = “insert into tb (title,name) values (‘$title’,’$name’)”;
$rs = $db->executeDML($sql);
if($rs){
 echo $rs . ” 건의 데이터를 처리하였습니다”;
}    

5. 트랜젝션 처리
$sql1 = “insert into tb1 … 생략”;
$sql2 = “insert into tb2 … 생략”;
$sql3 = “insert into tb3 … 생략”;
$db->transaction();
$db->executeDML($sql1);
$db->executeDML($sql2);
$db->executeDML($sql3);
$rs = $db->commit();
if($rs){
  echo “처리 성공!”;
}else{
  echo “에러 발생!”;
}
transaction() 함수를 호출하면 auto commit 이 false 가 되며 마지막에 commit() 함수를 호출하면 에러가 하나라도 발생하면 자동으로 롤백됩니다 물론 에러가 없으면 커밋되구요 함수명이 commit 이라고 무조건 커밋되는거 아닙니다 ^^
transaction() 함수를 호출않하고 executeDML()을 사용하면 항상 auto commit 입니다

6. 바인드변수 사용
$query = “select name from tb where id=:b1 and pw=:b2”;
$bind = array($id,$pw);
$db->setBind($bind);
$name = $db->selectOne($query);
echo $name;

바인드 변수명은 꼭 :b1,:b2,:b3… 이런식으로 지정하며 setBind() 함수에 배열로 값을 넘겨줍니다
바인드변수가 :b1 한개만 사용된 경우는 배열이 아니라 값하나만 넘겨도 됩니다(아래예 처럼)
넘겨진 값은 selectXxx(),executeDML()등의 함수사용후에 초기화되므로 함수 실행전에 매번 setBind() 함수를 호출해야 합니다
아래예는 틀린 사용예입니다 $cnt2 에는 아무값도 없습니다
$query1 = “select count(*) from tb1 where id=:b1”;
$query2 = “select count(*) from tb2 where id=:b1”;
$db->setBind($id);
$cnt1 = $db->selectOne($query1);
$cnt2 = $db->selectOne($query2);

아래예가 옳은 사용예입니다
$db->setBind($id);
$cnt1 = $db->selectOne($query1);
$db->setBind($id);
$cnt2 = $db->selectOne($query2);

7. 트랜젝션 처리와 바인드 변수 사용
$sql1 = “insert into tb(title,name) values(:b1,:b2)”;
$sql2 = “update tb2 set addr=:b1 where id=:b2”;
$bind1 = array($title,$name);
$bind2 = array($addr,$id);
$db->transaction();
$db->setBind($bind1);
$db->executeDML($sql1);
$db->setBind($bind2);
$db->executeDML($sql2);
$rs = $db->commit();
if($rs){
  echo “처리 성공!”;
}else{
  echo “에러 발생!”;
}

금액을 입력할때 세자리마다 컴마찍기

IE 6.0에서는 되는데 다른곳에서는 어떨지………???


<html>
<head>
<title>컴마찍기</title>
<Script Language=’Javascript’>
<!–
function comma(comma_rstr) {                
    var nocomma = comma_rstr.value.replace(/,/gi,”); // 불러온 값중에서 컴마를 제거
    var b = ”; // 값을 넣기위해서 미리 선언
    var i = 0; // 뒤에서 부터 몇번째인지를 체크하기 위한 변수 선언
    for (var k=(nocomma.length-1); k>=0; k–) { // 숫자를 뒤에서 부터 루프를 이용하여 불러오기
        var a = nocomma.charAt(k);
        if (k == 0 && a == 0) {  // 첫자리의 숫자가 0인경우 입력값을 취소 시킴
            comma_rstr.value = ”;
            return;
        }
        else {
            if (i != 0 && i % 3 == 0) { // 뒤에서 3으로 나누었을때 나머지가 0인경우에 컴마 찍기 i가 0인 경우는 제일 뒤에 있다는 것이므로 컴마를 찍으면 안됨
                b = a + “,” + b ;
            }
            else { // 나머지가 0인 아닌경우 컴마없이 숫자 붙이기
                b = a + b;
            }
            i++;
        }
    }
    comma_rstr.value = b; // 최종값을 input값에 입력하기
    return;
}
//–>
</Script>

</head>

<body>
<form name=commatest>
<input type=text name=commatestinput onKeyup=comma(document.commatest.commatestinput)>
</form>
</body>
</html>