웹서핑중 괜찬은 사이트 몇개 찾아 링크 겁니다.
빨리 써보고 싶네요 이놈의 병 다시 도진듯.. ㅠㅠ
http://thebetterday.tistory.com/437
http://blogit.blogkorea.net/11269275/http://playppc.co.kr/24
http://blogit.blogkorea.net/9879957/http://donghaerang.com/278
코리아인터넷닷컴에 예제를 응용하여 만들었습니다. -_-V
<HTML>
<HEAD>
<script src="http://prototypejs.org/javascripts/prototype.js" type="text/javascript"></script>
<SCRIPT>
function saveCurrentPos (objTextArea) {
if (objTextArea.createTextRange)
objTextArea.currentPos = document.selection.createRange().duplicate();
}
function tab_event(objTextArea){
var text=' ';
if(event.keyCode==9 && objTextArea.createTextRange){
var currentPos = objTextArea.currentPos;
currentPos.text = currentPos.text.charAt(currentPos.text.length - 1) == ' ' ? text + ' ' : text;
// Event.stop(event); //Prototype
/* tab Event 없애기 */
if(!window.Event){
var Event = new Object();
}
if(event.preventDefault){
event.preventDefault();
event.stopPropagation();
}else{
event.returnValue = false;
event.cancelBubble = true;
}
}
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="myForm">
<TEXTAREA NAME="myTextArea" ROWS="5" COLS="80" WRAP="soft"
ONSELECT="saveCurrentPos(this)"
ONCLICK="saveCurrentPos(this)"
ONKEYUP="saveCurrentPos(this)"
onkeydown="tab_event(this.form.myTextArea);"
>
이벤트 테스트~!!!!
</TEXTAREA>
</FORM>
</BODY>
</HTML>
원하는 이전달의 값은 2008-06-01이라고 한다면
아래와 같은경우
date('Y-m-01',strtotime('-1 month'));
는 2008-06-01이 나올거 같지만 2008-07-01이 나온다.. -_-;;
그래서 다시 한게 아래다.. 아래로 하면 착하게 원하는 값이 나온다 ^^
$time = time();
date("Y-m-d",mktime(0,0,0,date('m',$time)-1,1,date('Y',$time)));
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-disposition: attachment; filename='.basename($filename));
header("Content-Type: application/pdf");
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. filesize($filename));
readfile($filename);
가장 빠르고 정확한 건설 입찰정보
http://info21c.net/
업계 점유율 25%를 차지하고 있는 info21c 사이트가 새로운 기능을 선보였네요.
기존의 개인서류함을 리뉴얼 하면서 새롭게 <나의폴더> 기능 추가했는데요.
진작에 필요한 기능이었는데 info21c가 젤 먼저 폴더개념을 도입해서 현명하게 풀어낸것 같습니다.
사실 하루에도 몇백건씩 공고가 쏟아지는데
매번 필요한 공고들을 찾아서 개인서류함에 저장을 한다 해도 한계가 있었죠.
원하는 폴더를 만들어서 필요한 공고를 얼마든지 나눠서 관리할 수 있다면 상당히 효율적인것 같습니다.
사이트에 있는 동영상 이용안내 링크 걸어둡니다.
궁금하신 분은 클릭해보삼!
dispatchEvent(new ListEvent(ListEvent.FILTER,sendData, true, false));
이런식으로 던져준다.. 앞에 상수, 뒤에 boolean 2개는 필수닷..
클래스 선언~(com.events.ListEvent)
package com.events
{
import flash.events.Event;
public class ListEvent extends Event
{
public static const FILTER:String = "filter";
public function ListEvent(type:String, data:Array=null, bubbles:Boolean=false, cancelable:Boolean=false){
super(type, bubbles, cancelable);
item = data;
}
public var item:Array;
}
}
받는 곳~
import com.events.ListEvent;
private function load():void{
connectDB();
Application.application.systemManager.addEventListener(com.events.ListEvent.FILTER, _filter);
}
private function _filter(e:com.events.ListEvent):void{
requestData = e.item;
selectData();
}
db파일위치때문에 한참 해멨다..
C:\Documents and Settings\BoKi\Application Data\sqlLife\Local Store/
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" applicationComplete="init()"
backgroundColor="0x003030" focusRect="false" layout="vertical">
<mx:Script>
<![CDATA[
import mx.effects.Fade;
import mx.controls.List;
import mx.controls.TextInput;
import mx.events.DataGridEvent;
import mx.collections.ArrayCollection;
import mx.utils.ArrayUtil;
import mx.controls.Alert;
import flash.data.SQLConnection;
import flash.data.SQLResult;
import flash.data.SQLStatement;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
import mx.events.ListEvent;
import flash.filesystem.File;
[Bindable]
private var resultData:Array;
private var conn:SQLConnection = new SQLConnection();
private var selectStmt:SQLStatement = new SQLStatement();
private function connectDB():void{
// 로컬 데이터베이스 존재 확인 그리고 열려져 있는지 또는 새 테이블 만들기
var dbFile:File = File.applicationStorageDirectory.resolvePath("aa.db");
trace(dbFile.nativePath);
if(dbFile.exists) {
conn.addEventListener(SQLEvent.OPEN, openHandler);
conn.open(dbFile);
}else {
conn.addEventListener(SQLEvent.OPEN, newDatabaseHandler);
conn.open(dbFile);
}
}
private function openHandler(event:SQLEvent):void{
// selectData();
trace("The database was opened");
}
// 데이터 가져오기
private function selectData():void{
selectStmt.sqlConnection = conn;
var sql:String = "SELECT * FROM employees";
selectStmt.text = sql;
selectStmt.addEventListener(SQLEvent.RESULT, selectHandler);
selectStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
selectStmt.execute();
}
private function selectHandler(event:SQLEvent):void{
resultData = selectStmt.getResult().data;
}
// 새 테이블 생성하기
private function newDatabaseHandler(event:SQLEvent):void{
createTable();
trace("Table created");
}
private function createTable():void{
var createStmt:SQLStatement = new SQLStatement();
createStmt.sqlConnection = conn;
var sql:String =
"CREATE TABLE IF NOT EXISTS employees (" +
"empId INTEGER PRIMARY KEY AUTOINCREMENT, " +
"firstName TEXT, " +
"lastName TEXT, " +
"salary NUMERIC CHECK (salary > 0)" +
")";
createStmt.text = sql;
createStmt.addEventListener(SQLEvent.RESULT, createTableResult);
createStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
createStmt.execute();
}
private function createTableResult(event:SQLEvent):void{
trace("Employees table created ");
}
//데이터 삽입
private function insertData():void{
var insertStmt:SQLStatement = new SQLStatement();
insertStmt.sqlConnection = conn;
var sql:String = "INSERT INTO employees (firstName, lastName, salary) VALUES ('Eric', 'Moon', 80000)";
insertStmt.text = sql;
insertStmt.addEventListener(SQLEvent.RESULT, insertHandler);
insertStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
insertStmt.execute();
}
private function insertHandler(event:SQLEvent):void{
trace("INSERT statement succeeded");
selectData();
}
// 데이터 삭제
private function deleteData():void{
if (resultAC.length >0)
var empid:int = dg.selectedItem.empId;
var deleteStmt:SQLStatement = new SQLStatement();
deleteStmt.sqlConnection = conn;
var sql:String = "DELETE FROM employees WHERE empID="+empid;
deleteStmt.text = sql;
deleteStmt.addEventListener(SQLEvent.RESULT, deleteHandler);
deleteStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
deleteStmt.execute();
resultAC.removeItemAt( dg.selectedIndex);
}
private function deleteHandler(event:SQLEvent):void{
trace("Delete statement succeeded");
selectData();
}
// 에러 처리
private function errorHandler(event:SQLErrorEvent):void{
var errMessage:String;
errMessage = "Error code: " + event.error.message + "\r";
errMessage += "Details : " + event.error.message ;
Alert.show(errMessage);
}
private function init():void{
//stage.displayState = StageDisplayState.FULL_SCREEN;
connectDB();
}
// 데이터 업데이트
private function updateData():void{
var updateStmt:SQLStatement = new SQLStatement();
updateStmt.sqlConnection = conn;
var sql:String = "UPDATE employees " +
"SET firstName = '" + dg.selectedItem.firstName + "', " +
"lastName = '" + dg.selectedItem.lastName + "', " +
"salary = '" + dg.selectedItem.salary + "' " +
"WHERE empID="+ dg.selectedItem.empId;
updateStmt.text = sql;
updateStmt.addEventListener(SQLEvent.RESULT, updateHandler);
updateStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
updateStmt.execute();
}
private function updateHandler(event:SQLEvent):void{
trace("Update statement succeeded");
selectData();
}
]]>
</mx:Script>
<mx:ArrayCollection id="resultAC" source ="{ArrayUtil.toArray(resultData)}" />
<mx:VBox height="100%">
<mx:DataGrid id="dg" dataProvider="{resultAC}" editable="true" height="100%" width="100%">
<mx:columns>
<mx:DataGridColumn headerText="Emp ID" dataField="empId"/>
<mx:DataGridColumn headerText="Last Name" dataField="lastName"/>
<mx:DataGridColumn headerText="First Name" dataField="firstName"/>
<mx:DataGridColumn headerText="Salary" dataField="salary"/>
</mx:columns>
</mx:DataGrid>
<mx:HBox width="100%">
<mx:Button label="Create Table" click="createTable();"/>
<mx:Button label="Select" click="selectData();"/>
<mx:Button label="Insert" click="insertData()"/>
<mx:Button label="Update" click="updateData();"/>
<mx:Button label="Delete" click="deleteData();"/>
</mx:HBox>
</mx:VBox>
</mx:WindowedApplication>
출처 : http://cafe.naver.com/flexcomponent.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=5203
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="load()">
<mx:Style>
</mx:Style>
<mx:Script>
<![CDATA[
import mx.events.ItemClickEvent;
import mx.collections.ArrayCollection;
include "spXML_List.as";
import mx.controls.Alert;
import mx.collections.ArrayCollection;
import mx.controls.Button;
[Bindable]
public var nav:ArrayCollection = new ArrayCollection();
private function ClickPrev():void
{
var page:int = spXML_List.page;
if(page <= 1){
Alert.show('처음 페이지 입니다.');
}else{
page-=1;
spXML_List.page = page;
}
}
private function ClickNext():void
{
var page:int = spXML_List.page;
if(page >= spXML_List.total_page){
Alert.show("마지막 페이지 입니다.");
}else{
page+=1;
spXML_List.page = page;
}
}
private function load():void{
for(var i:Number = 2; i < 50; i++){
spXML_List.newElement = <item>
<num>{i}</num>
<constnm>민방위 경보시스템 교체,보강조달구매 설치 </constnm>
<itemcode>통신</itemcode>
<basic>32,000,000</basic>
<yega>31,970,640</yega>
<success>31,493,000</success>
<spb>98.4156</spb>
<ypb>-0.0917</ypb>
<sypb>12.1609</sypb>
<constdt>08.06.20</constdt>
</item>;
}
pageing(spXML_List.page);
}
private function pageing(page:Number):void{
var p_min:Number = spXML_List.p_min;
var p_max:Number = spXML_List.p_max;
var total_page:Number = spXML_List.total_page;
nav.removeAll();
if(p_min > 1){
nav.addItem({label:"이전", data:p_min-1, id:"pre"});
}
//Alert.show(page.toString());
for(var j:Number = p_min; j <= p_max; j++){
nav.addItem({label:j, data:j});
}
if(p_max < total_page){
nav.addItem({label:"다음", data:p_max+1});
}
spXML_List.page = page;
}
private function navigatePage(event:ItemClickEvent):void{
var lb:String = event.item.label;
if(lb.indexOf("다음") > -1){
spXML_List.p_min = event.item.data;
spXML_List.p_max = event.item.data + 4;
lb = event.item.data;
}else if(event.item.id == 'pre'){
spXML_List.p_min = event.item.data - 4;
spXML_List.p_max = event.item.data;
lb = event.item.data;
}
pageing(Number(lb));
}
private function N_page(min:int, max:int):void{
trace(min);
}
]]>
</mx:Script>
<mx:Canvas id='listBox' width="80%" borderStyle="solid" backgroundColor="blue" showEffect="Fade" hideEffect="Fade" x="35" y="29">
<mx:Panel layout="absolute" title="List" width="100%" x="0">
<mx:DataGrid width="100%" height="285"
rowCount="12"
id="ListGrid"
dataProvider="{spXML_List.item}"
horizontalCenter="0"
fontSize="12"
fontFamily="Arial"
>
<mx:columns>
<mx:DataGridColumn headerText="번호" dataField="num" width="35" />
<mx:DataGridColumn headerText="공고명" dataField="constnm" width="300"/>
<mx:DataGridColumn headerText="업종" dataField="itemcode"/>
<mx:DataGridColumn headerText="기초금액" dataField="basic"/>
<mx:DataGridColumn headerText="예정가격" dataField="yega"/>
<mx:DataGridColumn headerText="1순위 투찰금액" dataField="success"/>
<mx:DataGridColumn headerText="1순위 기초대비" dataField="spb"/>
<mx:DataGridColumn headerText="예가/기초" dataField="ypb"/>
<mx:DataGridColumn headerText="1순위사정율" dataField="sypb"/>
<mx:DataGridColumn headerText="입찰일" dataField="constdt"/>
</mx:columns>
</mx:DataGrid>
</mx:Panel>
</mx:Canvas>
<mx:Text text="Total: {spXML_List.total_page} Page:{spXML_List.page} / {spXML_List.total_page}" fontSize="10" y="35" x="73"/>
<mx:Button label="Previous" click="ClickPrev()" x="780" y="32"/><mx:Button label="Next" click="ClickNext()" x="865" y="32"/>
<mx:ToggleButtonBar id="PageNav" x="73" y="394" dataProvider="{nav}" itemClick="navigatePage(event)" horizontalGap="5"/>
</mx:Application>
-----------------------------------------------------------------------------------------------
as파일
// ActionScript file
[Bindable]
public var spXML_List:XML =
<rr>
<total_num>49</total_num>
<total_page>10</total_page>
<page>1</page>
<p_min>1</p_min>
<p_max>5</p_max>
<item>
<num>1</num>
<constnm>민방위 경보시스템 교체,보강조달구매 설치 </constnm>
<itemcode>통신</itemcode>
<basic>32,000,000</basic>
<yega>31,970,640</yega>
<success>31,493,000</success>
<spb>98.4156</spb>
<ypb>-0.0917</ypb>
<sypb>12.1609</sypb>
<constdt>08.06.20</constdt>
</item>
</rr>;
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
>
<mx:states>
<mx:State name="w" >
<mx:SetProperty target="{left}" name="width" value="400"/>
</mx:State>
</mx:states>
<mx:transitions>
<mx:Transition fromState="*" toState="*">
<mx:Resize duration="100" target="{left}"/>
</mx:Transition>
</mx:transitions>
<mx:Canvas width="100%" height="100%"
backgroundColor="#eeeeee"
>
<mx:VBox width="40" height="100%" id="left" backgroundColor="#ffffff">
</mx:VBox>
<mx:Button x="{left.x+left.width}"
click="{
currentState = currentState==null ? 'w' : null;
trace(currentState);
}" />
</mx:Canvas>
</mx:Application>