2009年12月23日 星期三

OGame私服問題

==========================================
OGame私服問題,前情提要
==========================================

前幾天發現FACEBOOK有OGAME

就很開心的想要回鍋一下

不過卻遇到很多伺服器的問題

於是就找阿找的竟然發現OGAME有私服 = ="(恕我孤陋寡聞 顆顆~)

而且竟然還有可以下載的

就很開心的下載了(想要的人GOOGLE一下就有了)

然後就下載了第一個版本,並且安裝~ = ="

不過問題超多的,就放棄了

於是就用了第二個版本,發現還蠻正常的

就照著步驟安裝下去...

一切都很正常

但是到了要註冊新帳號的時候卻出現了
================================================

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id_planet' at row 1
INSERT INTO ugml_errors SET `username`='newUSER', ' at line 5


OH NO~

於是就很努力GOOGLE找找,找不太到 = ="

只好靠自己了 顆顆~

於是仔細觀察了一下程式碼

就發現了一些問題

可能是和MYSQL版本有關吧!!(實際上我也不知道)

不過問題最後還是有解決了

解決方法:(版本不同我就不知道了)
在 reg.php
(141行) `id_planet`='',
這邊改成
`id_planet`='0',

不過之後卻出現了另一個問題

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'b_hangar_id' doesn't have a default value
INSERT INTO ugml_errors SET ' at line 5

解決方法:

將 MYSQL內

TABLE
`ugml_planets`

內的欄位
b_hangar_id

改成
NULL屬性

就可以正常註冊新帳號了

至於後續問題就有碰到再說吧

顆顆~~只是自己架開心的,(當然不會笨笨的當單機玩 顆顆~ )

2009年12月10日 星期四

簡單後端控制之檔案上傳

簡單後台控制之檔案上傳
(WINDOWS)
================================
原由:
主要是從老師那邊拿到了一個空間
也就是拿到一台電腦的掌控權
不過卻很難控制(學校裡面防護多多)
都只能以遠端控制的方法
要傳檔案只有慢慢慢
所以就乾脆寫了一個簡單的PHP上傳的程式
顆顆顆~~
================================
功能
可以瀏覽整台電腦
可以在指定位置上傳檔案(就是當下瀏覽的位置)
可以覆蓋已經存在的檔案
應該可以中文(要以BIG5,看電腦是甚麼編碼吧)
================================
警告
此程式很危險,最好不要亂放
要記得加上防護,EX帳號密碼認證等等

================================
PHP程式碼
================================

<?php

$localhost = 'http://localhost/';//這邊要改成實際網址初目錄

//$path = 'http://xxx.xxx.xxx.xxx/';

$path = $wwwpath = 'c:\\wamp\\www\\';//對電腦來說放網站的實際位置

//$path = 'c:\\apache\\htdocs\\';

//路徑變好看用

if(isset($_GET['path'])){

$path = $_GET['path'];

$temp = $path = explode('\\',$path);

foreach($temp as $a => $b){

if($b == '..'){

unset($path[($a+1)]);

unset($path[($a)]);

$path[($a-1)] = '';

}

}

$path = implode('\\',$path);

}

//上傳用

if(isset($_POST['submit'])){

if($_FILES['file']['error'] > 0){

switch($_FILES['file']['error']){

case 1 : die("檔案大小超出 php.ini:upload_max_filesize 限制");

case 2 : die("檔案大小超出 MAX_FILE_SIZE 限制");

case 3 : die("檔案僅被部分上傳");

case 4 : die("檔案未被上傳");

}

}else{

if(is_uploaded_file($_FILES['file']['tmp_name'])){

$DestDIR = $path;

if(!is_dir($DestDIR) || !is_writeable($DestDIR))

die("目錄不存在或無法寫入");

//$File_Extension = explode(".", $_FILES['file']['name']);

//$File_Extension = $File_Extension[count($File_Extension)-1];

//$ServerFilename =date("YmdHis") . "." . $File_Extension;

$ServerFilename = $_FILES['file']['name'];

copy($_FILES['file']['tmp_name'] , $DestDIR . "/" . $ServerFilename );

echo $ServerFilename."<br>";

echo $DestDIR."<br>";

echo 'SUCCESS'."<br>" ;

}

}

}

//瀏覽用

$opdir = dir($path);

while($entry = $opdir->read()){

if(is_dir($path.$entry) && $entry != '.'){

echo '<a href = "dealfile.php?path='.$path.$entry.'\\" >'.$entry.'</a> <br />';

}elseif(!is_dir($path.$entry)){

if(strstr($path.$entry,$wwwpath)){

$url = str_replace($wwwpath,$localhost,$path.$entry);

echo '<a href = "'.$url.'" >'.$entry.'</a> <br />';

}else{

echo $entry.'<br />';

}

}

}

$opdir->close();

?>

</p>

<form action="dealfile.php?<?php echo 'path='.$path.$entry ; ?>" method="post" enctype="multipart/form-data" name="form1"

id="form1">

<input type="file" name="file" />

<input name="MAX_FILE_SIZE" type="hidden" id="MAX_FILE_SIZE" value="2000000" />

<input type="submit" name="submit" value="upload" />

</form>

2009年10月10日 星期六

php facebook API 自寫FACEBOOK遊戲

http://apps.facebook.com/fqygame/

最近BLOG很久沒更新

主要是把時間花在研究FACEBOOK 和 PHP 之間的關係

最一開始是偶然在網路上看到了,可以利用JAVA將PHP寫入GOOGLE內

之後就在研究這個東西

不過幾天後又很偶然的發現了!!

原來FACEBOOK可以直接支援PHP

於是研究兩天之後就決定用PHP來寫FACEBOOK遊戲了

目前已經架構OK!!

名稱暫定 :

FQbattle


http://apps.facebook.com/fqygame/


大家可以來玩玩看!!
目前介面還不是很好看啦 = ="

其實說實在的FACEBOOK開發手冊上面

寫的很詳盡

而且他還有一個語法測試機

也都不錯用

而且期時會用到的語法就那些吧!!

有興趣的話 大家也可以試看看喔!!

2009年9月16日 星期三

GOGOBOX 搜尋引擎(PHP程式碼公開)

=======GOGOBOX 搜尋引擎(註記)===========

從寫好到現在已經過了一段時間了
大概搜到有五十多萬筆就停止了
原因主要是 :
  • 資料庫目前還是在自己的小筆電上面,要公開搜尋要移到"大主機"上
  • 本人沒有付費空間或是"大主機",只有免費空間
  • 免費空間放三十萬筆就爆了(修一修頂多放五十萬筆),但GOGOBOX有上百萬筆
  • 已經有人寫出來了,而且也夠好了
大概在前個禮拜停止之後,至今已經快要淡忘了= ="
所以決定在忘記之前,快點先寫出來 (BLOG+福球亂彈)

=======GOGOBOX 搜尋引擎(原理)===========

其實只是使用最簡單也最笨的搜尋方法 "蜘蛛爬行法" (不太清楚是不是這樣叫)

爬行的只有會員ID,然後每個ID裡面都有許多檔案

這些檔案就用內建的GOGOBOX搜尋器,去搜尋

本人是一次搜尋最多五百筆(當然,你要一次用更多都沒關係),如果超過五百筆就跳頁

(使用瀏覽器看最多五十筆,他是記錄在COOKIE,改成五百)

(程式碼裡面全部都可以很清楚的看到方法,歡迎大家討論)


=======GOGOBOX 搜尋引擎(PHP程式碼)===========
//(因為是邊測試邊寫,所以寫的超亂的,未整理過,請包含)
//(邊碼為UTF8)
//(PS此篇還需要先用CURL登入,並將SESSION記錄起來才可使用GOGOBOX內建搜尋)

//這邊是開始使用"蜘蛛爬行法"
//30000000 前面開頭的"3"也等於網址的開頭 http://box3.gogobox.com.tw
//要修改的話要全部修改(約有兩三個)
//由於PHP有時間限制,所以要先改過,本人約改成兩個小時
//然後一次五千筆(可以開好多個網頁一次進行)
for($a=20001;$a<=25000;$a++){

$no = $a + 30000000; //GOGOBOX 會員ID 也是BOX ID

gogo_load($no);//呼叫主程式

}


//GOGOBOX 搜尋引擎 主程式
function gogo_load($no){

$post['box_no']=$no;//GOGOBOX 會員ID 也是BOX ID

$post['nPageNo']='1';//搜尋第幾頁

$row_page=500;//一次筆數(使用GOGOBOX內建搜尋)

$cookie_file_path = "d:\cookie.txt";//紀錄SESSION的地方,GOGOBOX內建搜尋必須登入

$ch = curl_init();

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);

curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie_file_path);

//get info


//這行為登入的網址,要先登入一次GOGOBOX然後把記錄的SESSION記錄到上面的//d:\cookie.txt
//不過因為只用一次,之後都可以使用,所以登入的程式碼刪了 =="
//其實主要是因為是邊研究邊寫,所以之後覺得沒用,就...
//$login ='http://client.gogobox.com.tw:8000/caccessX';

$url = 'http://box3.gogobox.com.tw:8037/app/list_file.cgi?box_no='.$post['box_no'];

curl_setopt($ch, CURLOPT_URL,$url);

$num = curl_exec($ch);

$num = strip_tags($num,'');

$num = strstr($num,'全部資料夾');

$num = strstr($num,'(');

$num = (int)substr($num,1,6);

//以上是判斷是否有資料,如果有才執行以下"使用GOGOBOX內建搜尋 搜尋檔案"
//不過之後覺得這邊可以改一下,速度可以更快
if($num !=0){

$page = ceil($num/$row_page);

//===============================================

$url = 'http://box3.gogobox.com.tw:8037/app/list_file.cgi';



//$post['nPageNo']='1';

$once_num = 0;

for($i=1;$i<=$page;$i++){



load_gogobox($post['box_no'],$i,$num,$row_page,$page); //呼叫 使用GOGOBOX內建搜尋



}



}else{

echo $no.'&nbsp;';//if

}

curl_close ($ch);

}



//這邊就是發送資訊給GOGOBOX叫他搜尋某BOX的所有檔案
//一次搜尋五百筆(預設)

//然後取得資料
function load_gogobox($post_no,$i,$num,$row_page,$page){

$chx = curl_init();

$cookie_file_path = "d:\cookie.txt"; //登入SESSION都記錄在這邊

curl_setopt($chx, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($chx, CURLOPT_COOKIEJAR, $cookie_file_path);

curl_setopt($chx, CURLOPT_COOKIEFILE,$cookie_file_path);



$url = 'http://box3.gogobox.com.tw:8037/app/list_file.cgi';

$post['box_no'] = $post_no; //GOGOBOX會員ID,BOX ID

$post['nPageNo'] = $i; //第幾頁

if($i==$page){

$once_num = $num%$row_page;

}else{

$once_num=$row_page;

}

curl_setopt($chx, CURLOPT_POST,1);

curl_setopt($chx, CURLOPT_URL,$url);

curl_setopt($chx, CURLOPT_POSTFIELDS, $post);


//GOGOBOX 是利用COOKIE來記錄要顯示幾筆
//很久以前看的時候沒有發現
//是前個月(應該吧)看他的JAVASCRIPT 才發現的 =="

curl_setopt($chx, CURLOPT_COOKIE, "CbFileBoxListCnt=".$row_page." ; path=/"); //顯示X筆

$result = curl_exec($chx);

gogobox($result,$once_num);//開始把GOGOBOX內建搜尋的結果(五百筆) 紀錄出來

curl_close ($chx);



}





function gogobox($content,$once_num){ //取回 分析 GOGOBOX內建搜尋
//主要就是一些字串處理


$content = strstr($content,'<!-- list table -->');

$content = substr($content,0,strpos($content,'<!-- list table END -->'));

//echo $content;

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

$content = substr($content,strpos($content,'colspan=\'6\'')+10);



$content_link = strip_tags($content,'<td><a>');

$content_data = strip_tags($content,'<td>');





$title = strstr($content_data,'class=\'box_f_name\' valign=\'middle\'>');

$title = strstr($title,'>');

$title = trim(substr($title,1,strpos($title,'</td>')-1));



$name = strstr($content_data,'class=\'box_f_info_01tdu\'>');

$name = strstr($name,'>');

$name = trim(substr($name,1,strpos($name,'</td>')-1));

$size = strstr($content_data,'class=\'box_f_info_02\'>');

$size = strstr($size,'>');

$size = trim(substr($size,1,strpos($size,'</td>')-1));

$date = strstr($content_data,'class=\'box_f_info_04\'>');

$date = strstr($date,'>');

$date = trim(substr($date,1,strpos($date,'</td>')-1));



$link = strstr($content_link,'onClick="Copy_Link');

$link = strstr($link,'\'');

$link = substr($link,1);

$link = trim(substr($link,0,strpos($link,'\'')-1));

$return['file_title']=mysql_escape_string($title);

$return['file_name']=mysql_escape_string($name);

$return['file_size']=mysql_escape_string($size);

$return['file_link']=mysql_escape_string($link);

$return['db_date']=mktime();

//data_creat_some("gogobox",$return); //最後將字串都整理好後,建立到資料庫去
//這邊就不把此FUNCTION寫出來了,可以用var_dump($return)看資料
//之後即可自行應用


}

}


===============引用先前====================
引用先前發的 "GOGOBOX 搜尋引擎"
以下是之前研究GOGOBOX的原由

GOGOBOX 搜尋引擎
想必有許多人都也有想過吧!!
當初FINDBOX出來的時候,可是為之驚人啊!!
每天流量都爆破!!顆顆
但是不知怎麼的後來就消失了
======題外話======
(知道的人還請跟我說說吧!THX!~)
只知道之後GOGOBOX有改版
檔案的下載位置好像都有改變的樣子(不太記得了)
所以FINDBOX就失效了??? (I REALLY DONT KNOW)
(或是被警察伯伯抓了???這樣有犯法嗎??)
這一值都是我現在的疑問 顆顆

不過現在好像又有很多人有架類似的站吧!!
顆顆~~這邊也是其中之一
======題外話======

所以就決定再來試做一個 GOGOBOX搜尋引擎
於是就花了許多時間在研究他的檔案位置
最後是有得出一些結論 :
第一個 GOGOBOX 每個會員都有編號
第二個 GOGOBOX 每個檔案也都有編號
第三個 GOGOBOX 每個檔案下載位置都有加上會員編號
第四個 不知道怎麼不列會員編號就下載到檔案
最後 GOGOBOX 必須要有會員編號 和檔案編號才能下載 (不知道對不對)

但是還有一個線索,就是他每個會員BOX裡面都可以搜尋到他所PO的所有檔案

結合以上幾點就用PHP寫出了一個搜尋器

因為不可能直接使用GOGOBOX的搜尋引擎,所以大概就是要像GOOGLE一樣
把檔案都先搜索過然後存到資料庫,使用者再直接搜尋這個資料庫
這樣速度才OK

SO...

目前今天花了一個下午,大概寫出了一些,已經可以廣搜GOGOBOX了
不過速度有點慢 == 十分鐘 約 幾千個檔案而已
(過了幾天,目前約四十萬筆吧!!)
一切還在測試中,...至於公開程式碼 大概會慢一點公開
ps 目前搜了兩萬五千筆左右 == 離全部還好遠好遠
===============宣告====================
此篇內容僅供測試,如果有利用做不法行為,與本人無關

2009年9月12日 星期六

PHP SMARTY樣板處理程式

PHP SMARTY樣板處理程式

轉自福球亂彈(其實也是我自己打的 = =")

這是一個很好用的外掛程式

安裝極為簡單

只要解壓縮後

把下面的資料夾複製到你的網站資料夾下面即可

接下來只要引用即可



==================================

SMARTY簡介

==================================

1.smarty是甚麼?

是一個樣板處理程式,他主要是方便管理HTML和PHP之間的聯繫關係,也有將HTML和PHP分開的功能,"以便使用者管理網站"。而且在實際使用上,程式碼會簡潔許多。

2.為什麼非要用smarty?

當然不一定要使用,不過你一用,就會愛上的。

smarty主要功能就是把PHP和HTML程式分開放,這樣就能使專門設計HTML美觀方面的人,和專門寫PHP程式的人可以方便分工合作,使事情處理上更有效率。

而且使用smarty,也可以大量減少網頁數量。

一個PHP => 一個樣板 = 同性質所有功能的兩個檔案就可以處理完

一個PHP => 少量樣板 = 一個中小型網站可處理完畢。

多個PHP => 少量樣板 = 大型網站(論壇、多樣的互動網站)

3.甚麼時候用到smarty?

測試性PHP程式基本上不會用到,但只要有"介面"出現,用就對了!!



==================================

簡單教學

==================================

一開始在先看一下

smarty資料夾下面有兩個php程式

main.PHP

smarty_php.php

這兩個是最一開始處理SMARTY的程序

main.php 算是最原始的

smarty_main.php 是本人稍稍改過的(建議使用,已排除JAVASCRIPT問題)

基本上就不需要動這個檔案了

我們開始使用SMARTY

在PHP程式上面先 require('smarty/smarty_main.php');

此時就已經算是建立一個樣版了(smarty_main.php)



PHP部分

<?php

require('smarty/smarty_main.php'); //路徑沒問題吧!! 已經建立摟

//接下來可以直接使用,由於引入檔開啟CLASS的建立是用 $tpl 所以之後都要用$tpl

//將字串傳到樣板,用assign

$tpl -> assign("trans_title","我是要給HTML顯示的抬頭");

$tpl -> assign("trans_body","我是要給HTML顯示內容");

//可以用很多次,意思是可以設定很多個變量(自己隨便設)



//接下來就可以展現樣版了,很EASY吧

$tpl -> display('tmp/test.html'); //路徑應該知道吧!!

?>





HTML樣板部分

<html>

<title>{{$trans_title}}</title>

<body>

{{$trans_body}}

</body>

</html>



這樣就可以了,php就會開啟此樣板,並把變量傳過來,然後顯示



最後的輸出結果(看到的)



網頁的標題就會是 "我是要給HTML顯示的抬頭"

內容只有 "我是要給HTML顯示內容"



最後的輸出結果(html)



<html>

<title>我是要給HTML顯示的抬頭</title>

<body>

我是要給HTML顯示內容

</body>

</html>



就是這樣,簡單吧!!

這樣就可以隨便把變數放在自己想要的地方

如果不用樣版的話,就必須在php裡面寫html,會變得很麻煩的喔!!



先這樣吧!! 以後再打稍為進階一點的 =="


smarty.rar (93.54 KB)

2009年8月29日 星期六

GOGOBOX 搜尋引擎

GOGOBOX 搜尋引擎

========================================
9/17
現在已經公布 "GOGOBOX搜尋引擎PHP程式碼" 摟!!

請到 福球亂彈 (方便討論喔!!)

GOGOBOX 搜尋引擎 PHP程式碼公開

或是

本BLOG (有意見或建議可留言喔!!)

GOGOBOX 搜尋引擎 PHP程式碼公開


觀看最新版本
========================================
9/1
剛剛把已經把搜到的GOGOBOX檔案部分上傳到免費空間了
(三十萬筆,因為空間不夠= =)
可以測試看看,不過此空間的廣告有點討厭 = ="
福球亂彈 => 福球程式設計(PHP) => PHP主題討論 => GOGOBOX搜尋引擎測試
順便廣告一下論壇 ==

歡迎大家來討論!!

========================================


最近和朋友想說要架一個論壇
主要是要放一些和興趣相關的內容
當然有程式設計的版面摟!!

福球亂彈 歡迎大家參觀,也歡迎一起經營喔(誠摯的邀請版主ING)!!
PHP版
(還在計畫中,請不要嫌棄)

再分配管理版面的時候,當然我就是負責"電腦"這方面的板塊~呵呵
但是想阿想的!
最重要的,還是要有主打的東西吧!!
這樣才有吸引人的地方。

再想阿想的,就想到了 GOGOBOX 搜尋引擎
想必有許多人都也有想過吧!!
當初FINDBOX出來的時候,可是為之驚人啊!!
每天流量都爆破!!顆顆
但是不知怎麼的後來就消失了
======題外話======
(知道的人還請跟我說說吧!THX!~)
只知道之後GOGOBOX有改版
檔案的下載位置好像都有改變的樣子(不太記得了)
所以FINDBOX就失效了??? (I REALLY DONT KNOW)
(或是被警察伯伯抓了???這樣有犯法嗎??)
這一值都是我現在的疑問 顆顆

不過現在好像又有很多人有架類似的站吧!!
顆顆~~這邊也是其中之一
======題外話======

所以就決定再來試做一個 GOGOBOX搜尋引擎
於是就花了許多時間在研究他的檔案位置
最後是有得出一些結論 :
第一個 GOGOBOX 每個會員都有編號
第二個 GOGOBOX 每個檔案也都有編號
第三個 GOGOBOX 每個檔案下載位置都有加上會員編號
第四個 不知道怎麼不列會員編號就下載到檔案
最後 GOGOBOX 必須要有會員編號 和檔案編號才能下載 (不知道對不對)

但是還有一個線索,就是他每個會員BOX裡面都可以搜尋到他所PO的所有檔案

結合以上幾點就用PHP寫出了一個搜尋器

因為不可能直接使用GOGOBOX的搜尋引擎,所以大概就是要像GOOGLE一樣
把檔案都先搜索過然後存到資料庫,使用者再直接搜尋這個資料庫
這樣速度才OK

SO...

目前今天花了一個下午,大概寫出了一些,已經可以廣搜GOGOBOX了
不過速度有點慢 == 十分鐘 約 幾千個檔案而已
(過了幾天,目前約四十萬筆吧!!)
一切還在測試中,...至於公開程式碼 大概會慢一點公開
ps 目前搜了兩萬五千筆左右 == 離全部還好遠好遠
(目前想辦法讓論壇人氣多一點,所以想讓此搜尋變成主打 顆顆 (作夢ing))
最後 歡迎大家來參觀福球亂彈

==============END=================

2009年8月22日 星期六

PHP 自動更新進入yahoo 搶拍賣 PART II 新版

之後又寫了一個版本的


搶拍賣(日貨)用的程式,就是會固定幾秒就搜索一次賣家的帳號,只要最上面的連結改變(表示PO新貨)

馬上就會進去新的頁面
==============================================
使用方法

第一格式輸入YAHOO賣家的網址(清單瀏覽,新貨出現在最上面)

然後可以按送出試試看

下面會出現一行 就是目前最新的物品

如果不是出現現在最新的物品

可以在第二格輸入數字

從 0 開始 01234...

就是要列出目前最新的物品連結

OK之後就點 START 就會開始每X秒自動掃一次

在後面的 下面這行的5就是每五秒掃一次 可以自己改變

echo '<meta http-equiv="refresh" content="5; url=test.php">';

PS 不過此版本還是不能脫逃 YAHOO 999的命運
每五秒一次 大概十五分鐘就壽命終結 ==

目前努力研究逃脫YAHOO 999 的命運

歡迎一起討論^^

最新發現!!!

最近測試發現
用APACHE 傳送過多造成999
IE FIREFOX 還是可以正常瀏覽
因此這裡可能就是可以破解的地方!!

==============================================

<form name="form1" method="get" action="test.php">

<input type="text" name="url" id="textfield">

<input type="submit" name="button" id="button" value="送出">

<input name="num" type="text" id="num">

<input type="submit" name="star" id="star" value="star">

<input type="submit" name="stop" id="stop" value="stop">

</form>

<?php

session_start();

if(isset($_GET['url']) and @$_GET['url'] != ''){

$_SESSION['url']=$_GET['url'];

}

if(isset($_SESSION['url'])){

$url = $_SESSION['url'];

}else{

$url ="http://tw.user.bid.yahoo.com/tw/user/lainjp98?userID=lainjp98&catID=&catIDselect=&clf=&u=:lainjp98&s1=ptime&o1=d&at=false";

}

if(isset($_GET['num']) and @$_GET['num'] != ''){

$_SESSION['num']=$_GET['num'];

}

if(isset($_SESSION['num'])){

$next = $_SESSION['num'];

}else{

$next = 1;

}

$fp =fopen($url,"r");

$content = stream_get_contents($fp);

$content = str_replace('刊登時間','||',$content);

$content = strstr($content,'||');

$content = strip_tags($content,'<a>');

$content = substr($content,60);

$i=0;

//$next = 5;

while($content = strstr($content,'<')){

//$content = strstr($content,'<');

$pos = strpos($content,'>')+1;

$pos = strpos($content,'>',$pos)+1;

$content_link = substr($content,0,$pos);

$content = substr($content,$pos);

if($i==$next){

if(@$_SESSION['check'] ==1){

if($_SESSION['temp'] != $content_link){

$content_link = strstr($content_link,'"');

$content_link = substr($content_link,1);

$pos = strpos($content_link,'"');

$content_link = substr($content_link,0,$pos);

echo '<meta http-equiv="refresh" content="1; url='.$content_link.'">';

}



}

if(@$_GET['star'] =='star'){

$_SESSION['temp']=$content_link;

$_SESSION['check'] =1;

}

echo $content_link."<br>";

}

$i++;

}

if(@$_GET['stop'] =='stop'){

$_SESSION['check'] =0;

}

if(@$_SESSION['check'] ==1){

echo '<meta http-equiv="refresh" content="5; url=test.php">';

}

fclose($fp);

?>

2009年8月12日 星期三

C++學習檔案 < 亂數列排大小+輸入值列出位置 >

C++學習檔案 < 亂數列排大小+輸入值列出位置 >


< 亂數列排大小+輸入值列出位置 >

#include <iomanip>

#include <iostream>

#include <time.h>

#include <stdlib.h>

using namespace std;

int main() {

srand(time(0));

int o[15],n[15],m=0,t;

for(int i=0;i<15;i++){

o[i] = rand()%100;

n[i] = 0;

cout << setw(3) << o[i];

}

cout <<endl;

for(int j=0;j<15;j++){

for(int i=0;i<15;i++){

if( o[i] > n[j]){

n[j] = o[i];

m=i;

}

}

o[m] =0;

cout << setw(3) << n[j];

}

cout <<endl<<"plz input integer value" << endl;

cin >> t;

for(int i=0;i<15;i++){

if(n[i]==t){

cout << "integer " << n[i] << " was fount in site " << i+1 <<endl;

}

}

system("pause");

return 0;

}


================END==============

C++學習檔案 < 河內塔 (1.FOR迴圈)+(2.遞迴) >

C++學習檔案 < 河內塔 (1.FOR迴圈)+(2.遞迴) >

1. 河內塔 for迴圈寫法
(包含實體位置)(單陣列從零開始)

當三個的時候
陣列位置

2 | 5 | 8
1 | 4 | 7
0 | 3 | 6
---------
1 | 2 | 3 (塔)
---------
以此類推 (每行最後兩個)

心得:
物品123
柱子ABC
河內塔最簡單的原理就是
1->2->3->1->2->3.... 一直巡迴
每一次都判斷柱子a->b->c->a.....
(請看程式碼,有點亂= =)


#include <iomanip>

#include <iostream>

using namespace std;


int main() {

int b,n,t=0,p=1,j=0,n2,n3,sum=0;

cin >> n;


int *a = new int[n*3] ;



b=1;

for(int i=(n*3-1);i>=0;i--){

if(i<n)

a[i]=b++;



else

a[i]=0;

}


while(1){

n2=j%(n*3);

n3=t%(n*3);


//cout <<p <<n2<<a[n2]<<n3<<a[n3]<<endl;

if(p==a[n2]){

for(int k=0;k<n;k++){//判斷上面是否有東西

if(n2%n==k){

if(a[(j+1)%(n*3)] !=0){

//cout<<"b";

t=j;

p==n?p=1:p++;

}

}

}

}

if(p==a[n2]){

t=j;//暫存

//cout <<p <<endl;

// cout <<n2<<endl;

}

if((a[n3]==p &&a[n2]==0 && n2%n==0)||(a[n3]==p &&a[n2]==0 && n2%n!=0 && a[(j-1)%(n*3)] > p )){//移動+判斷

a[n2]=p;

a[n3]=0;

cout<<"item:"<<setw(3)<<p <<" from:"<<setw(3)<< n3/n+1<<" to:"<<setw(3)<<n2/n+1<<setw(5)<< n3<<setw(3)<<n2<<endl;

sum++;


}



if(n2 ==(t-1)%(n*3) ){

p==n?p=1:p++;//j=0;



}


j++;




if(a[(n*2-1)]==1 || a[(n*3-1)]==1)

break;



}

cout << "sum:" <<sum<<endl;

system("pause");



}




====================================
2. 河內塔 遞迴寫法

不包含位置


#include <iostream>

using namespace std;


void hanoi(int,char*,char*,char*);


int main()

{

cout << "input a number:";

int number;

cin >> number;


char p1[]="A";

char p2[]="B";

char p3[]="C";


hanoi(number,p1,p2,p3);

system("pause");

return 0;

}


void hanoi(int n,char* p1,char* p2,char* p3)

{

if(n==1){

cout << "no." << n << " from " << p1 << " to " << p3 << endl;

}else{

hanoi(n-1,p1,p3,p2);

cout << "no." << n << " from " << p1 << " to " << p3 << endl;

hanoi(n-1,p2,p1,p3);

}

}



=======END======

C++學習檔案 <亂數數列並列出大小順序>

C++學習檔案 <亂數數列並列出大小順序>

EX

14 59 60 23
4 2 1 3




#include <iomanip>

#include <iostream>

#include <time.h>

#include <stdlib.h>


using namespace std;


int main() {

int n,max=0,maxo=0;

cin >> n;

int *s = new int[n] ;

srand ( time(NULL) );

for(int i=1;i<n;i++){

s[i] = rand () %100;

cout << setw(3)<<s[i] ;

}

cout << endl;

for(int k=1;k<n;k++){

int j=0; for( j=1;j<n;j++){

if(s[j]>max){

max = s[j];

maxo=j;

}

}

cout << setw(3) << maxo;

s[maxo]=0;

max=0;

}


system("pause");

return 0;

}

2009年8月9日 星期日

C++學習檔案

C++學習檔案 n階


1*2*3*4*5*6...


#include
using namespace std;
int nn(int,int,int);
int main() {
int i=1,n,s=1;
cout << "輸入數:起始 和 結束"; cin >> i;
cin >> n;
cout << s =" s*i;">




======================

N階別種寫法

輸入起始值和結束值
EX
4
7
就是
4*5*6*7

#include <iostream>

using namespace std;

int nn(int,int,int);

int main() {

int i=1,n,s=1;

cout << "輸入數:起始 和 結束";

cin >> i;

cin >> n;

cout << nn(i,s,n) << endl;


system("pause");

return 0;

}



int nn(int i,int s,int n) {

if(n < i) {

return s;

}else{

s = s*i;

i++;

return nn(i,s,n);

}

}


==============================

N階遞迴寫法


#include <iostream>

using namespace std;

int nn(int,int,int);

int fun(int n);

int main() {

int i=1,n,s=1;

cout << "輸入數" << endl;



cin >> n;


cout << fun(n);

system("pause");

return 0;

}


int fun(int n){

if(n==1)

return 1;

else

return fun(n-1)*n;

}


2009年8月8日 星期六

C++學習檔案 <數列前兩項相加>

C++學習檔案 <數列前兩項相加>

就是要顯示

1 1 2 3 5 8 13 21 ....

這樣的數列 ,每項都是前兩項相加


#include <iostream>

#include <iomanip>

using namespace std;

int main(){

int n,n1=1,n2=1,sum = 0;

cin >> n;

cout << setw(4) << n1 << setw(4)<< n2 ;

for(int i=0;i<n;i++){

i%2==0?n1=n1+n2:n2=n1+n2;

i%2==0?cout<< setw(4) << n1:cout << setw(4) << n2;

//if(i%2 == 0){

// n1=n1+n2;

// cout << n1 << endl;

// }else{

// n2=n1+n2;

// cout << n2 << endl;

// }

}

system("pause");

return 0;

}


============================
別種寫法



#include <iostream>

using namespace std;

int main() {

int fib[100];

int n;



cin >> n;

cout << endl;



for(int i=1;i<=n;i++){

if(i==1||i==2){

fib[i]=1;

}

else{

fib[i]=fib[i-1]+fib[i-2];

}

cout << fib[i] << endl;

}





system("pause");

return 0;

}

2009年8月6日 星期四

楓之谷外掛教學&測試(詳細圖片)(ME MoonlightEngine)(CT)(2009/8)

楓之谷外掛教學&測試(詳細圖片)(ME MoonlightEngine)(CT)
另外需求檔: 超炫彩繪CT檔
系統:VISTA
測試時間: 2009/8
測試程式: ME MoonlightEngine
原理: 修改記憶體
結果 : 成功(一開始失敗,將防毒(記憶體問題)暫時關閉即可)
====================================================
檔案位置: http://www.badongo.com/file/16621226
下載
PS 之前忘記放了,原本想說就算了,不過應觀眾要求!!顆顆
(掃毒會掃到毒,自行決定是否使用,還有 "僅供測試")
====================================
發表此篇目的僅為測試,文章僅供參考,使用外掛也請小心被鎖帳號,本人一律不負責
由於程式非本人寫的,如果電腦當機、中毒(目前沒有發現),本人一律不負責

PS 此文章已經久遠
================================



圖看不到可以點進去看喔!

1.解壓縮後

ME【雙核心單核心都可用】的資料夾內容

(PS. *.tmp 一開始沒有,應該是使用後楓之谷之後的暫存檔案)
寄件者 楓之谷外掛


2.開啟 MoonLight Engine HS.reg

會出現,點 "是"
寄件者 楓之谷外掛


在點"確定"
寄件者 楓之谷外掛


3.開啟 Systemretriever.exe
點選 "YES"
寄件者 楓之谷外掛


接下來程式會跑

寄件者 楓之谷外掛


然後 點 OK

寄件者 楓之谷外掛


4.開啟主要外掛程式 MoonlightEngine.exe

會出現一個視窗 點 "OK"
(如果有出現錯誤 八成是 防毒軟體 的原因 , 防毒會防止記憶體修改)

寄件者 楓之谷外掛


接下來會出現主程式

寄件者 楓之谷外掛


5.接下來開啟楓之谷
進入遊戲
寄件者 楓之谷外掛


6. 然後按 Tab + Alt跳出楓之谷 回到外掛程式

寄件者 楓之谷外掛


點選上面有一個開啟的圖案(main ct 的下面) ,然後會出現下面

寄件者 楓之谷外掛


接下來選取 CT檔案

寄件者 楓之谷外掛


7.然後選擇 CT (main的右邊)
會出現CT檔的內容

寄件者 楓之谷外掛


8.接下來就是重點了,要改記憶體了

先打勾下列(打勾一個就會全打勾)

寄件者 楓之谷外掛


接下來右邊 ADDRESS 和 VALUE 的值就會改變

寄件者 楓之谷外掛


然後在你想要的功能的下面 "輸入EIP" 點右鍵
(這邊是 跳怪+走怪掉落)

寄件者 楓之谷外掛


寄件者 楓之谷外掛


然後選最下面一個
出現

寄件者 楓之谷外掛


然後將 EIP 前面打勾

寄件者 楓之谷外掛


然後在 EIP 輸入 上面 EIP ("輸入EIP" 上面一行) 右邊的ADDRESS

寄件者 楓之谷外掛

然後點選 OK

這樣就可以 走怪和跳怪掉落

9.接下來是使用綠色部分的功能

寄件者 楓之谷外掛


綠色字後面都會有說明使用方法
一樣 右鍵 然後選最後一個 (這邊是移動加速)

寄件者 楓之谷外掛


然後 "移動加速" 後面是 ZF[V][]
就將右邊的 ZF 後面打勾 (這邊只有左邊打勾)

寄件者 楓之谷外掛


這樣就會移動加速摟!!

10.接下來是動態數據的功能

寄件者 楓之谷外掛


打勾即可(如果效果失效,在打勾取消 然後 再打勾即可)

寄件者 楓之谷外掛
================================
最近好像是不是有改版啊 ? 如果有改版的話,可能就要換一個CT檔摟!!
還請各位大大告知~ 已經有一段時間沒碰楓之谷了
(因為前些日子帳號被鎖,有些@%&am#*)
================================
PS 要自動練功 就把 攻擊不停,MISS OR 閃避 開啟,怪物掉落 等等(請自行測試)
然後再用 "掛機程式" >> "MapleGM.exe" 即可。
================================
發表此篇目的僅為測試,文章僅供參考,使用外掛也請小心被鎖帳號,本人一律不負責
由於程式非本人寫的,如果電腦當機、中毒(目前沒有發現),本人一律不負責
================================

本人目前沒有在玩了...

2009年8月4日 星期二

C++學習檔案

1.產生6位學生的成績 (宣告一整數陣列)
2.依序輸入學生成績
3.如果學生成績>=60,該變數存該整數
4.如果學生成績未滿60 該變數存0
5.第3跟4點必須使用 ? : 寫出
6.產生下表

例如 int stu[6];
依序輸入60,72,100,42,6
stu[6]內容為{60,72,100,0,0}

100:*
90~99:
80~89:
70~79:*
60~69:*
60-:**
average:(六位學生總和平均)


1.普通寫法

2.第3跟4點必須使用 ? : 寫出

進階版
3.可輸入要幾位學生(動態配置)


4.輸入一整數畫出n*n的矩形中間空 o
5.摩方陣
6.gcd

========================

#include <iostream>

using namespace std;


int main(){

int score[6],sc,sun;

string output[6];



for(int i=0;i<6;i++){

cin >> sc;

sun += sc;

if(sc >= 60){

score[i] = sc;

}else{

score[i] = 0;

}

if(sc == 100){

output[0] += "*" ;

}else if(sc >=90){

output[1] += "*";

}else if(sc >=80){

output[2] += "*";

}else if(sc >=70){

output[3] += "*";

}else if(sc >=60){

output[4] += "*";

}else{

output[5] += "*";

}

}

cout << "100 : " << output[0] << endl;

cout << "90~99 : " << output[1] << endl;

cout << "80~89 : " << output[2] << endl;

cout << "70~79 : " << output[3] << endl;

cout << "60~69 : " << output[4] << endl;

cout << "<60 : " << output[5] << endl;

cout << "average : " << sun/6 << endl;



system("pause");

return 0;

}


===========用 ? : 寫出========

#include <iostream>

using namespace std;

int main(){

int score[6],sc,sun = 0;

string output[6];

for(int i=0;i<6;i++){

cin >> sc;

sun += sc;

sc >= 60 ? score[i] = sc : score[i] = 0;

sc == 100 ? (output[0] += "*"): sc >=90 ? output[1] += "*" : sc >=80 ? output[2] += "*" : sc >=70 ? output[3] += "*":sc >=60 ? output[4] += "*" : output[5] += "*" ;

}

cout << "100 : " << output[0] << endl;

cout << "90~99 : " << output[1] << endl;

cout << "80~89 : " << output[2] << endl;

cout << "70~79 : " << output[3] << endl;

cout << "60~69 : " << output[4] << endl;

cout << "<60 : " << output[5] << endl;

cout << "average : " << sun/6 << endl;

system("pause");

return 0;

}

=============3.可輸入要幾位學生(動態配置)========

#include <iostream>

#include <string>


using namespace std;

int main(){

int n,sc,sun = 0;

string output[6];

cout << "how many students?" << endl;

cin >> n;

int *score = new int[n];

for(int i=0;i<n;i++){

cout << "plz input " << i+1 << " student's score" << endl;

cin >> sc;

sun += sc;

//sc >= 60 ? score[i] = sc : score[i] = 0;

score[i]=(sc>=60?sc:0);

sc == 100 ? (output[0] += "*"): sc >=90 ? output[1] += "*" : sc >=80 ? output[2] += "*" : sc >=70 ? output[3] += "*":sc >=60 ? output[4] += "*" : output[5] += "*" ;

}

cout << "100 : " << output[0] << endl;

cout << "90~99 : " << output[1] << endl;

cout << "80~89 : " << output[2] << endl;

cout << "70~79 : " << output[3] << endl;

cout << "60~69 : " << output[4] << endl;

cout << "<60 : " << output[5] << endl;

cout << "average : " << sun/n << endl;

system("pause");

return 0;

}


==============================

4.輸入一整數畫出n*n的矩形中間空

#include <iostream>

using namespace std;

int main(){

int n;

cout << "input num" << endl;

cin >> n;

for(int i=1;i<=n;i++){

for(int j=1;j<=n;j++){

i==1 || i==n ? (cout << "*") : j==1 || j==n ? (cout << "*") : (cout << " ");

}

cout << endl;

}

system("pause");

return 0;

}

==============================
5.摩方陣

#include <iostream>

using namespace std;

#include <iomanip>

using std::setw;

int main(){

int n,ns,x=0,y=0;

cout << "input num" << endl;

cin >> n;

cin >>x >> y;

ns = n*n;

int **s = new int*[n];



for(int i=0;i<n;i++) s[i] = new int[n];

for(int d=0;d<n;d++){

for(int f=0;f<n;f++){

s[d][f] = ns+1;

}

}





for(int j=1;j<=(ns); j++){

x=x%n;

y=y%n;

if(s[x][y]<ns){

x=x-2;

y=y-1;

}

if(x <= -1){

x=x+n;

}

if(y <= -1){

y=y+n;

}



s[x][y] = j;

x++;y++;

}

cout <<endl;

for(int a=0;a<n;a++){

int sum=0;

for(int b=0;b<n;b++){

sum += s[a][b];

cout << setw(4) << s[a][b] ;

}

cout << "=" << sum <<endl;

}

system("pause");

return 0;

}



==============================
6.gcd 找出最大公因數

#include <iostream>

using namespace std;

#include <iomanip>

using std::setw;

int main(){

int n1,n2,min=0,gcd=0;

cout << "plz input two numbers" <<endl;

cin >> n1 >> n2;

min = n1<n2?n1:n2;

for(int i=1;i<=min;i++){

if(n1%i == 0 && n2%i == 0) gcd = i;

}

cout << "gcd = " << gcd << endl;



system("pause");

return 0;

}



2009年7月17日 星期五

NEW!!樹狀分類程式碼生產器 (網頁介面)

樹狀分類產生器


更新 : 新增網頁介面樹狀分類生產器,不用安裝PHP即可使用!!
更新 : 增加了帳號功能(提供紀錄功能,存入MYSQL),大家可以將自己的樹狀分類原始碼記錄下來,不過由於沒有密碼,請不要修改到別人的
TEST 帳號 : fqstory
請輸入 fqstory 然後按 read 即可知道

樹狀分類生產器 網頁介面

來用用看吧!!

===============源由===============
由於BLOG文章日益增加
但是GOOGLE blogger本身提供的"分類"
只能做大致上的分類
他只能提供一層的聯結
但是BLOG中的文章主題分類有很多
所以已經不夠使用,連自己都找不太到之前寫的文章
所以就上網找看看有沒有別人寫好的 "樹狀分類"
這樣才能夠快速找到所需要的文章

於是找阿找的...

終於在 finalevil's blog 發現了 "樹狀分類產生器"

他是用JAVA寫的基本上已經能滿足需求,而且能做到多層分類連結
(也應該支援大部分blog)

只是問題來了,如果有好多好多篇文章,每層每篇作連結都要加入好多語法
這樣實在很麻煩
雖然他finalevil's blog 裡面還有提供,自動產生語法的工具
但是發現還是不實用
第一、如果要新增加新的分層分類,之前打的都會不見
第二、如果日後要新增,那就要全部重來
所以最後決定自己寫一個程式碼產生器,方便自己使用

不過最後運行當然還是用他的 顆顆顆
至於最後呈現結果請看右邊的樹狀分類連結(目錄) 顆顆顆


============檔案輸入格式===============
t 為第一層樹狀分類 (可改)

c 為第二層樹狀分類 (可改)
p 為第三層樹狀分類 (可改)
| 為確定樹狀分類哪一層的分隔 (可改)
, 為分隔 "顯示樹狀分類名稱" ,"連結" , "註解" (可改)
; 為斷行,使程式讀取下一個分層 (可改)


==========最後呈現的格式如下==========
//這是此BLOG的目錄,結果如右邊最上方目錄
t|PHP先看,http://fq-story.blogspot.com/2009/05/php.html;
t|PHP基礎教學;
c|APACHE PHP MYSQL in WindowsXP 安裝教學,http://fq-story.blogspot.com/2009/05/phpini.html;
c|0.基本HTML語法,http://fq-story.blogspot.com/2009/05/html.html;
c|1.基本指令;
c|2.重複迴圈,http://fq-story.blogspot.com/2009/05/2.html;
c|3.判斷事件;
c|4.字串處理;
c|5.常用其他;
t|PHP實用文章;
c|0.PHP基礎須知;
p|0-a.PHP(簡介),http://fq-story.blogspot.com/2009/05/0-aphp.html;
p|0-b.PHP 安裝 (LINUX),http://fq-story.blogspot.com/2009/05/0-bphp-linux.html;
p|0-c.php.ini 配置詳細解說,http://fq-story.blogspot.com/2009/05/phpini_23.html;
c|1.PHP語法索引;
p|PHP函數語法索引,http://fq-story.blogspot.com/2009/07/php.html;
p|PHP MYSQL 函數語法與說明,http://fq-story.blogspot.com/2009/07/php-mysql.html;
c|2.PHP PLUG外掛;
p|Smarty;
t|PHP程序程式碼;
c|PHP資料處理相關;
p|HTML語法測試機;
p|利用php將ncbi的data存入自己的mysql中,http://fq-story.blogspot.com/2009/05/phpncbidatamysql.html;
p|樹狀分類程式碼產生器,http://fq-story.blogspot.com/2009/07/blog-post.html;
c|PHP與網路連線相關;
p|PHP CURL 發送 GET 和 POST 語法,http://fq-story.blogspot.com/2009/05/php-curl-get-post.html;
p|PHP 傳送GET使用fsockopen 取代CURL 取得回應,http://fq-story.blogspot.com/2009/05/php-getfsockopen-curl.html;
p|PHP 傳送POST使用fsockopen 取代CURL 取得回應,http://fq-story.blogspot.com/2009/05/php-postfsockopen-curl.html ;
p|PHP 自動更新進入yahoo 拍賣,http://fq-story.blogspot.com/2009/05/php-yahoo.html;
t|PHP Game;
c|RGP舊遊戲資料,http://fq-story.blogspot.com/2009/05/php-rpg-game.html;
p|index.php,http://fq-story.blogspot.com/2009/06/indexphp.html;
P|checkmap.php,http://fq-story.blogspot.com/2009/06/checkmapphp.html;
p|check.php,http://fq-story.blogspot.com/2009/06/checkphp.html;
p|charator.php,http://fq-story.blogspot.com/2009/06/charatorphp.html;
p|gmain.php,http://fq-story.blogspot.com/2009/05/gmainphp.html;
p|battling.php,http://fq-story.blogspot.com/2009/05/battlingphp.html;
p|battle.php,http://fq-story.blogspot.com/2009/05/battlephp.html;
c|GGAME;
t|C語言與C++;
c|C語言學習實錄,http://fq-story.blogspot.com/search/label/C%E8%AA%9E%E8%A8%80%E5%AD%B8%E7%BF%92%E5%AF%A6%E9%8C%84;
p|C語言學習實錄 起源,http://fq-story.blogspot.com/2009/07/c.html;
p|C語言學習實錄之一,http://fq-story.blogspot.com/2009/07/c_08.html;
p|C語言學習實錄之二,http://fq-story.blogspot.com/2009/07/c_09.html;
t|楓之谷,http://fq-story.blogspot.com/2009/06/blog-post.html;
t|BMP和JPEG圖檔格式
c|BMP 點陣圖(Bitmap)檔案格式,http://fq-story.blogspot.com/2009/06/bmp-bitmap.html;
c|JPG/JPEG 檔案格式,http://fq-story.blogspot.com/2009/06/jpgjpeg.html;
t|好用程式;
c|MSN將圖片畫出來,以手繪訊息送出去,http://fq-story.blogspot.com/search/label/MSN;



//ps 所以只要保留以上的格式,以後要增加或修改,都可以簡單使用
==========最後呈現的格式如上==========


這是兩層的 樹狀分類生產器 (java原程式碼 還是用finalevil的)
不過此php現在還沒有放到網路上,所以可能要在自己家弄弄瞜
以後會寫成比較完整方便的網頁
只用到:
t 為第一層樹狀分類 (可改)

c 為第二層樹狀分類 (可改)
ps 這是剛開始寫出來的,但發現兩層還是不夠用,所以下面又寫的一個三層的
所以註解就在下面"三層樹狀分類程式碼生產器"的地方寫

================================
兩層樹狀分類程式碼生產器,php程式碼開始
================================
<?php

$title = 't';

$content = 'c';


$star ='|';

$dis = ',';

$end = ';';

$string ='<p>

t|abc,cba;<br />

c|bbb,ccc;<br />

c|ccc,ddd;<br />

t|eee,fff;<br />

c|ccc,ddd;</p>';

$string = str_replace(" ", "",trim($string));

$string = str_replace("<p>", "",trim($string));

$string = str_replace("<br />", "",trim($string));

$string = str_replace("<br/>", "",trim($string));

$string = str_replace("<br>", "",trim($string));

echo $string;

$check = 1;

$string = explode($end,$string);

echo '<style>

ul.mktree li { list-style: none; }ul.mktree, ul.mktree ul , ul.mktree li { margin-left:10px; padding:0px; }ul.mktree li .bullet { padding-left: 15px; }ul.mktree li.liOpen .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/minus.gif) center left no-repeat; }ul.mktree li.liClosed .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/plus.gif) center left no-repeat; }ul.mktree li.liBullet .bullet { cursor: default; background: url(http://finalevillee.googlepages.com/bullet.gif) center left no-repeat; }ul.mktree li.liOpen ul { display: block; }ul.mktree li.liClosed ul { display: none; }ul.mktree li { font-size: 12pt; }ul.mktree li ul li { font-size: 10pt; }ul.mktree li ul li ul li { font-size: 8pt; }ul.mktree li ul li ul li ul li { font-size: 6pt; }</style>

<script src="http://finalevillee.googlepages.com/tree.js"></script>';

echo '<ul class="mktree">';

for($i=0;$i<count($string)-1;$i++){

$string[$i] = explode($star,$string[$i]);

$string[$i][0] = trim($string[$i][0]);

$string[$i][1] = explode($dis,$string[$i][1]);

if($string[$i][0] == $title and $check == 1){

$check =2;

echo '<li>';

echo '<a href="'.$string[$i][1][1].'">'.$string[$i][1][0].'</a>';

echo '<ul>';

}elseif($string[$i][0] == $content){

echo '<li><a href="'.$string[$i][1][1].'">'.$string[$i][1][0].'</a></li>';

}elseif($string[$i][0] == $title and $check != 1){

echo '</ul></li><li>';

echo '<a href="'.$string[$i][1][1].'">'.$string[$i][1][0].'</a>';

echo '<ul>';

}

}

echo '</ul></li></ul><script>convertTrees();</script>';

?>
//此程式沒測試過,請使用下面的(TEST OK)

================================
兩層樹狀分類程式碼生產器,php程式碼結束
================================


接下來是三層的樹狀分類程式碼生產器
"檔案輸入格式中" 都會用到



================================
三層樹狀分類程式碼生產器,php程式碼開始
================================


<?php

/*=====三層樹狀分類程式碼生產器,php程式碼=======*/

$string ='

t|PHP先看,http://fq-story.blogspot.com/2009/05/php.html;

t|PHP基礎教學;

c|APACHE PHP MYSQL in WindowsXP 安裝教學,http://fq-story.blogspot.com/2009/05/phpini.html;

c|0.基本HTML語法,http://fq-story.blogspot.com/2009/05/html.html;

c|1.基本指令;

c|2.重複迴圈,http://fq-story.blogspot.com/2009/05/2.html;

t|PHP實用文章;

c|0.PHP基礎須知;

p|0-a.PHP(簡介),http://fq-story.blogspot.com/2009/05/0-aphp.html;

p|0-b.PHP 安裝 (LINUX),http://fq-story.blogspot.com/2009/05/0-bphp-linux.html;

p|0-c.php.ini 配置詳細解說,http://fq-story.blogspot.com/2009/05/phpini_23.html;


';//將樹狀分類放上面

$string = str_replace(" ", "",trim($string)); //清除空白

$string = str_replace("<p>", "",trim($string)); //清除段落

$string = str_replace("<br />", "",trim($string)); //清除換行

$string = str_replace("<br/>", "",trim($string)); //清除換行

$string = str_replace("<br>", "",trim($string)); //清除換行

/*如果有需要請自行增加*/

$title = 't'; //第一層樹狀分類

$content = 'c'; //第二層樹狀分類

$ps = 'p'; //第三層樹狀分類

$star ='|'; //確定樹狀分類哪一層的分隔

$dis = ','; //為分隔 "顯示樹狀分類名稱" ,"連結" , "註解"

$end = ';'; //為斷行,使程式讀取下一個分層

echo $string;

$t= 1;

$c= 1;

$p= 1;

$string = explode($end,$string);

echo '<style>

ul.mktree li { list-style: none; }ul.mktree, ul.mktree ul , ul.mktree li { margin-left:10px; padding:0px; }ul.mktree li .bullet { padding-left: 15px; }ul.mktree li.liOpen .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/minus.gif) center left no-repeat; }ul.mktree li.liClosed .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/plus.gif) center left no-repeat; }ul.mktree li.liBullet .bullet { cursor: default; background: url(http://finalevillee.googlepages.com/bullet.gif) center left no-repeat; }ul.mktree li.liOpen ul { display: block; }ul.mktree li.liClosed ul { display: none; }ul.mktree li { font-size: 12pt; }ul.mktree li ul li { font-size: 10pt; }ul.mktree li ul li ul li { font-size: 8pt; }ul.mktree li ul li ul li ul li { font-size: 6pt; }</style>

<script src="http://finalevillee.googlepages.com/tree.js"></script>';

echo '<ul class="mktree">';

for($i=0;$i<count($string)-1;$i++){

$string[$i] = explode($star,$string[$i]);

$string[$i][0] = trim($string[$i][0]);

$string[$i][1] = explode($dis,$string[$i][1]);

if($string[$i][0] == $title and $t == 1){

$t =2;

echo '<li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}elseif($string[$i][0] == $content and $c ==1){

$c =2;

echo '<ul><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}elseif($string[$i][0] == $content and $c ==2){

if($p ==1){

echo '</li><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}elseif($p ==2){

$p =1;

echo '</ul></li><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}

}elseif($string[$i][0] == $ps and $p ==1){

$p =2;

echo '<ul><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a></li>';

}elseif($string[$i][0] == $ps and $p ==2){

echo '<li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a></li>';

}elseif($string[$i][0] == $title and $t == 2){

if($c ==2 and $p ==1){

$c =1;

echo '</li></ul><li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.$string[$i][1][0].'</a>';

}elseif($c ==2 and $p ==2){

$c =1;

$p =1;

echo '</ul></li></ul><li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.$string[$i][1][0].'</a>';

}elseif($c==1){

echo '</li><li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.$string[$i][1][0].'</a>';

}

}

}

echo '</ul></li></ul><script>convertTrees();</script>';

?>
==============================
三層樹狀分類程式碼生產器,php程式碼結束
==============================
如果覺得好用的話,歡迎分享!!


++不過好像只適用IE = =

======END======

2009年7月13日 星期一

搶先看!! 藥物設計 PHP讀取*.mol2藥物檔案,並且以3D結構圖形輸出

搶先看!! 藥物設計 PHP讀取*.mol2藥物檔案,並且以3D結構圖形輸出

這就是最近在研究的目標

最終目標就是用PHP寫出藥物設計DOCKING的程式出來

不過這個目標遠大

所以還是一步一步先來

首先第一個當然就是要讀取 LIGAND 和 PROTEIN 的檔案

並且能把3d圖形顯示出來

所以就先分析了一下普遍藥物LIGAND的檔案 *.mol2 檔

然後做出一些分析......

================待補齊==============

至於輸出結果為以下


寄件者 FQstory


寄件者 FQstory


Z軸為 以Z軸為不動 轉動XY平面

X軸為 以X軸為不動 轉動YZ平面

其他的就設定大小和出現位置

不過 當然 這是不能直接轉動的

因為他是PHP麻

他是以圖片輸出 然後顯示出來

=============程式碼==============

<?php

function readligand($name){

$checkprint = 0;

$i = 1;

$fp = fopen($name,"r");

$atom ='';

while(!feof($fp)){

$read = fgets($fp);

if(trim($read) == '@<TRIPOS>ATOM'){

$checkprint = 1;

}elseif(trim($read) == '@<TRIPOS>BOND'){

$checkprint = 2;

$i =1;

}elseif($checkprint > 0){

$atoms ='';

$atom = explode(" ",$read);

for($j=0;$j<count($atom);$j++){ //去除多個空白只留一個

if($atom[$j] != ''){

$atoms = $atoms.' '.$atom[$j];

}

}



$atomr[$checkprint][$i] = explode(" ",$atoms);

if($checkprint == 1){

$atomr[$checkprint][$i][3] = $atomr[$checkprint][$i][3];

$atomr[$checkprint][$i][4] = $atomr[$checkprint][$i][4];

$atomr[$checkprint][$i][5] = $atomr[$checkprint][$i][4];

//$atomr[$checkprint][$i][5] = $atomr[$checkprint][$i][5]*50+400;

}

//echo chop($read)."<br>";

$i++;

}

}

fclose($fp);

return $atomr;

}



function change($x,$y,$z,$xp,$em,$move,$theta,$phi,$turny){

//$r = sqrt($x*$x+$y*$y+$z*$z);

$theta = $theta/180*3.14;

$phi = $phi/180*3.14;

//轉Z軸

$new['x'] = $x*cos($theta)-$y*sin($theta);

$new['y'] = $x*sin($theta)+$y*cos($theta);

$new['z'] = $z;

//轉X軸

$new['x'] = $new['x'];

$new['y'] = $new['y']*cos($phi)+$new['z']*sin($phi);

$new['z'] = $new['y']*sin($phi)+$new['z']*cos($phi);

//轉Y軸

$new['x'] = $new['x']*cos($turny)+$new['z']*sin($turny);

$new['y'] = $new['y'];

$new['z'] = $new['x']*sin($turny)-$new['z']*cos($turny);

$new['x'] = $new['x']*$em+$xp/$move;

$new['y'] = $new['y']*$em+$xp/$move;

//$new['z'] = $new['z']*$xp/$em+$xp/$move;

//$new['x'] = $x*$xp/$em+$xp/$move;

//$new['y'] = $y*$xp/$em+$xp/$move;

return $new;

}



if(@$_POST['show'] == "SHOW"){

$filename = $_POST['filename'];

$theta = $_POST['theta'];

$phi =$_POST['phi'];

$turny =$_POST['turny'];

$em = $_POST['em'];//LIGAND大小,越小越大

$move = $_POST['move'];//離邊界位置 , 預設2

$xp = $_POST['xp'];//圖檔邊長(正方)



// 1.建立新影像

$im = imagecreate($xp,$xp);

// 2. 定義白色顏色的 RGB (背景顏色)

$white = imagecolorallocate($im, 255, 255, 255);

// 3. 定義黑色的 RGB (線的顏色)

$black = imagecolorallocate($im, 0, 0, 0);

$atomr = readligand($filename);//atomsread

for($i =1;$i<=count($atomr[1]);$i++){

$x = $atomr[1][$i][3];

$y = $atomr[1][$i][4];

$z = $atomr[1][$i][5];

$f = $atomr[2][$i][2];//讀取BOND

$l = $atomr[2][$i][3];//讀取BOND

$x1 = $atomr[1][$f][3];

$y1 = $atomr[1][$f][4];

$z1 = $atomr[1][$f][5];

$x2 = $atomr[1][$l][3];

$y2 = $atomr[1][$l][4];

$z2 = $atomr[1][$l][5];

$new = change($x,$y,$z,$xp,$em,$move,$theta,$phi,$turny);//dot

$newf = change($x1,$y1,$z1,$xp,$em,$move,$theta,$phi,$turny);//bond

$newl = change($x2,$y2,$z2,$xp,$em,$move,$theta,$phi,$turny);

imageline($im, $newf['x'], $newf['y'], $newl['x'], $newl['y'], $black);// 4. 開始畫線

imagesetpixel ($im,$new['x'],$new['y'],$black);//畫點

}



// 5. 做成 png 圖檔並輸出

imagejpeg($im, "draw.jpg");

// 6. 完成後將圖檔毀滅

imagedestroy($im);

echo '<img src="draw.jpg" width="'.$xp.'" height="'.$xp.'" />';

}

?>



<form id="form1" name="form1" method="post" action="readligand.php">

<p>檔案名稱:

<input name="filename" type="text" id="filename" value="<?php echo @$_POST['filename'];?>" />

<input type="submit" name="show" id="show" value="SHOW" />

</p>

<p>Z軸:

<input name="theta" type="text" id="theta" value="<?php echo @$_POST['theta'];?>" />

</p>

<p>X軸:

<input name="phi" type="text" id="phi" value="<?php echo @$_POST['phi'];?>" />

</p>

<p>Y軸:

<input name="turny" type="text" id="turny" value="<?php echo @$_POST['turny'];?>" />

</p>

<p>LIGAND SIZE:

<input name="em" type="text" id="em" value="<?php echo @$_POST['em'];?>" />

</p>

<p>邊界:

<input name="move" type="text" id="move" value="<?php echo @$_POST['move'];?>" />

預設2,為圖中心</p>

<p>檔案邊界(像素):

<input name="xp" type="text" id="xp" value="400" />

</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

</form>

已輸出至 <a href="../draw.jpg">draw.jpg</a>


=============程式碼==============

實際測試結果好像有點怪怪的
但又不知道哪邊怪怪的

================END==================

2009年7月11日 星期六

t|PHP先看
t|PHP基礎教學
c|APACHE PHP MYSQL in WindowsXP 安裝教學
c|0.基本HTML語法
c|1.基本指令
c|2.重複迴圈
c|3.判斷事件
c|4.字串處理
c|5.常用其他
t|PHP實用文章
c|0.PHP基礎須知
p|0-a.PHP(簡介)
p|0-b.PHP 安裝 (LINUX)
p|0-c.php.ini 配置詳細解說
c|1.PHP語法索引
p|PHP函數語法索引,http://fq-story.blogspot.com/2009/07/php.html
p|PHP MYSQL 函數語法與說明,http://fq-story.blogspot.com/2009/07/php-mysql.html
c|2.PHP PLUG外掛
p|Smarty

t|PHP程序程式碼
c|PHP資料處理相關
p|HTML語法測試機
p|利用php將ncbi的data存入自己的mysql中
p|樹狀分類程式碼產生器,http://fq-story.blogspot.com/2009/07/blog-post.html
c|PHP與網路連線相關
p|PHP CURL 發送 GET 和 POST 語法
p|PHP 傳送GET使用fsockopen 取代CURL 取得回應
p|PHP 傳送POST使用fsockopen 取代CURL 取得回應
p|PHP 自動更新進入yahoo 拍賣
t|PHP Game
c|RGP舊遊戲資料
c|GGAME
t|C語言與C++
c|C語言學習實錄
p|C語言學習實錄 起源,http://fq-story.blogspot.com/2009/07/c.html
p|C語言學習實錄之一,http://fq-story.blogspot.com/2009/07/c_08.html
p|C語言學習實錄之二,http://fq-story.blogspot.com/2009/07/c_09.html
t|楓之谷,http://fq-story.blogspot.com/2009/06/blog-post.html

2009年7月10日 星期五

樹狀分類產程式碼生器

樹狀分類產生器

已經有網頁介面了
請網新的頁面看
===============源由===============
由於BLOG文章日益增加
但是GOOGLE blogger本身提供的"分類"
只能做大致上的分類
他只能提供一層的聯結
但是BLOG中的文章主題分類有很多
所以已經不夠使用,連自己都找不太到之前寫的文章
所以就上網找看看有沒有別人寫好的 "樹狀分類"
這樣才能夠快速找到所需要的文章
於是找阿找的...
終於在 finalevil's blog 發現了 "樹狀分類產生器"
他是用JAVA寫的基本上已經能滿足需求,而且能做到多層分類連結
(也應該支援大部分blog)
只是問題來了,如果有好多好多篇文章,每層每篇作連結都要加入好多語法
這樣實在很麻煩
雖然他finalevil's blog 裡面還有提供,自動產生語法的工具
但是發現還是不實用
第一、如果要新增加新的分層分類,之前打的都會不見
第二、如果日後要新增,那就要全部重來
所以最後決定自己寫一個程式碼產生器,方便自己使用
不過最後運行當然還是用他的 顆顆顆
至於最後呈現結果請看右邊的樹狀分類連結(目錄) 顆顆顆

============檔案輸入格式===============
t 為第一層樹狀分類 (可改)
c 為第二層樹狀分類 (可改)
p 為第三層樹狀分類 (可改)
| 為確定樹狀分類哪一層的分隔 (可改)
, 為分隔 "顯示樹狀分類名稱" ,"連結" , "註解" (可改)
; 為斷行,使程式讀取下一個分層 (可改)

==========最後呈現的格式如下==========
//這是此BLOG的目錄,結果如右邊最上方目錄

t|PHP先看,http://fq-story.blogspot.com/2009/05/php.html;
t|PHP基礎教學;
c|APACHE PHP MYSQL in WindowsXP 安裝教學,http://fq-story.blogspot.com/2009/05/phpini.html;
c|0.基本HTML語法,http://fq-story.blogspot.com/2009/05/html.html;
c|1.基本指令;
c|2.重複迴圈,http://fq-story.blogspot.com/2009/05/2.html;
c|3.判斷事件;
c|4.字串處理;
c|5.常用其他;
t|PHP實用文章;
c|0.PHP基礎須知;
p|0-a.PHP(簡介),http://fq-story.blogspot.com/2009/05/0-aphp.html;
p|0-b.PHP 安裝 (LINUX),http://fq-story.blogspot.com/2009/05/0-bphp-linux.html;
p|0-c.php.ini 配置詳細解說,http://fq-story.blogspot.com/2009/05/phpini_23.html;
c|1.PHP語法索引;
p|PHP函數語法索引,http://fq-story.blogspot.com/2009/07/php.html;
p|PHP MYSQL 函數語法與說明,http://fq-story.blogspot.com/2009/07/php-mysql.html;
c|2.PHP PLUG外掛;
p|Smarty;
t|PHP程序程式碼;
c|PHP資料處理相關;
p|HTML語法測試機;
p|利用php將ncbi的data存入自己的mysql中,http://fq-story.blogspot.com/2009/05/phpncbidatamysql.html;
p|樹狀分類程式碼產生器,http://fq-story.blogspot.com/2009/07/blog-post.html;
c|PHP與網路連線相關;
p|PHP CURL 發送 GET 和 POST 語法,http://fq-story.blogspot.com/2009/05/php-curl-get-post.html;
p|PHP 傳送GET使用fsockopen 取代CURL 取得回應,http://fq-story.blogspot.com/2009/05/php-getfsockopen-curl.html;
p|PHP 傳送POST使用fsockopen 取代CURL 取得回應,http://fq-story.blogspot.com/2009/05/php-postfsockopen-curl.html ;
p|PHP 自動更新進入yahoo 拍賣,http://fq-story.blogspot.com/2009/05/php-yahoo.html;
t|PHP Game;
c|RGP舊遊戲資料,http://fq-story.blogspot.com/2009/05/php-rpg-game.html;
p|index.php,http://fq-story.blogspot.com/2009/06/indexphp.html;
P|checkmap.php,http://fq-story.blogspot.com/2009/06/checkmapphp.html;
p|check.php,http://fq-story.blogspot.com/2009/06/checkphp.html;
p|charator.php,http://fq-story.blogspot.com/2009/06/charatorphp.html;
p|gmain.php,http://fq-story.blogspot.com/2009/05/gmainphp.html;
p|battling.php,http://fq-story.blogspot.com/2009/05/battlingphp.html;
p|battle.php,http://fq-story.blogspot.com/2009/05/battlephp.html;
c|GGAME;
t|C語言與C++;
c|C語言學習實錄,http://fq-story.blogspot.com/search/label/C%E8%AA%9E%E8%A8%80%E5%AD%B8%E7%BF%92%E5%AF%A6%E9%8C%84;
p|C語言學習實錄 起源,http://fq-story.blogspot.com/2009/07/c.html;
p|C語言學習實錄之一,http://fq-story.blogspot.com/2009/07/c_08.html;
p|C語言學習實錄之二,http://fq-story.blogspot.com/2009/07/c_09.html;
t|楓之谷,http://fq-story.blogspot.com/2009/06/blog-post.html;
t|BMP和JPEG圖檔格式
c|BMP 點陣圖(Bitmap)檔案格式,http://fq-story.blogspot.com/2009/06/bmp-bitmap.html;
c|JPG/JPEG 檔案格式,http://fq-story.blogspot.com/2009/06/jpgjpeg.html;
t|好用程式;
c|MSN將圖片畫出來,以手繪訊息送出去,http://fq-story.blogspot.com/search/label/MSN;

//ps 所以只要保留以上的格式,以後要增加或修改,都可以簡單使用
==========最後呈現的格式如上==========

這是兩層的 樹狀分類生產器 (java原程式碼 還是用finalevil的)
不過此php現在還沒有放到網路上,所以可能要在自己家弄弄瞜
以後會寫成比較完整方便的網頁
只用到:
t 為第一層樹狀分類 (可改)
c 為第二層樹狀分類 (可改)
ps 這是剛開始寫出來的,但發現兩層還是不夠用,所以下面又寫的一個三層的
所以註解就在下面"三層樹狀分類程式碼生產器"的地方寫
================================
兩層樹狀分類程式碼生產器,php程式碼開始
================================
<?php

$title = 't';

$content = 'c';


$star ='|';

$dis = ',';

$end = ';';

$string ='<p>

t|abc,cba;<br />

c|bbb,ccc;<br />

c|ccc,ddd;<br />

t|eee,fff;<br />

c|ccc,ddd;</p>';

$string = str_replace(" ", "",trim($string));

$string = str_replace("<p>", "",trim($string));

$string = str_replace("<br />", "",trim($string));

$string = str_replace("<br/>", "",trim($string));

$string = str_replace("<br>", "",trim($string));

echo $string;

$check = 1;

$string = explode($end,$string);

echo '<style>

ul.mktree li { list-style: none; }ul.mktree, ul.mktree ul , ul.mktree li { margin-left:10px; padding:0px; }ul.mktree li .bullet { padding-left: 15px; }ul.mktree li.liOpen .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/minus.gif) center left no-repeat; }ul.mktree li.liClosed .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/plus.gif) center left no-repeat; }ul.mktree li.liBullet .bullet { cursor: default; background: url(http://finalevillee.googlepages.com/bullet.gif) center left no-repeat; }ul.mktree li.liOpen ul { display: block; }ul.mktree li.liClosed ul { display: none; }ul.mktree li { font-size: 12pt; }ul.mktree li ul li { font-size: 10pt; }ul.mktree li ul li ul li { font-size: 8pt; }ul.mktree li ul li ul li ul li { font-size: 6pt; }</style>

<script src="http://finalevillee.googlepages.com/tree.js"></script>';

echo '<ul class="mktree">';

for($i=0;$i<count($string)-1;$i++){

$string[$i] = explode($star,$string[$i]);

$string[$i][0] = trim($string[$i][0]);

$string[$i][1] = explode($dis,$string[$i][1]);

if($string[$i][0] == $title and $check == 1){

$check =2;

echo '<li>';

echo '<a href="'.$string[$i][1][1].'">'.$string[$i][1][0].'</a>';

echo '<ul>';

}elseif($string[$i][0] == $content){

echo '<li><a href="'.$string[$i][1][1].'">'.$string[$i][1][0].'</a></li>';

}elseif($string[$i][0] == $title and $check != 1){

echo '</ul></li><li>';

echo '<a href="'.$string[$i][1][1].'">'.$string[$i][1][0].'</a>';

echo '<ul>';

}

}

echo '</ul></li></ul><script>convertTrees();</script>';

?>
//此程式沒測試過,請使用下面的(TEST OK)
================================
兩層樹狀分類程式碼生產器,php程式碼結束
================================

接下來是三層的樹狀分類程式碼生產器
"檔案輸入格式中" 都會用到

================================
三層樹狀分類程式碼生產器,php程式碼開始
================================

<?php

/*=====三層樹狀分類程式碼生產器,php程式碼=======*/

$string ='

t|PHP先看,http://fq-story.blogspot.com/2009/05/php.html;

t|PHP基礎教學;

c|APACHE PHP MYSQL in WindowsXP 安裝教學,http://fq-story.blogspot.com/2009/05/phpini.html;

c|0.基本HTML語法,http://fq-story.blogspot.com/2009/05/html.html;

c|1.基本指令;

c|2.重複迴圈,http://fq-story.blogspot.com/2009/05/2.html;

t|PHP實用文章;

c|0.PHP基礎須知;

p|0-a.PHP(簡介),http://fq-story.blogspot.com/2009/05/0-aphp.html;

p|0-b.PHP 安裝 (LINUX),http://fq-story.blogspot.com/2009/05/0-bphp-linux.html;

p|0-c.php.ini 配置詳細解說,http://fq-story.blogspot.com/2009/05/phpini_23.html;
';//將樹狀分類放上面

$string = str_replace(" ", "",trim($string)); //清除空白

$string = str_replace("<p>", "",trim($string)); //清除段落

$string = str_replace("<br />", "",trim($string)); //清除換行

$string = str_replace("<br/>", "",trim($string)); //清除換行

$string = str_replace("<br>", "",trim($string)); //清除換行

/*如果有需要請自行增加*/

$title = 't'; //第一層樹狀分類

$content = 'c'; //第二層樹狀分類

$ps = 'p'; //第三層樹狀分類

$star ='|'; //確定樹狀分類哪一層的分隔

$dis = ','; //為分隔 "顯示樹狀分類名稱" ,"連結" , "註解"

$end = ';'; //為斷行,使程式讀取下一個分層

echo $string;

$t= 1;

$c= 1;

$p= 1;

$string = explode($end,$string);

echo '<style>

ul.mktree li { list-style: none; }ul.mktree, ul.mktree ul , ul.mktree li { margin-left:10px; padding:0px; }ul.mktree li .bullet { padding-left: 15px; }ul.mktree li.liOpen .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/minus.gif) center left no-repeat; }ul.mktree li.liClosed .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/plus.gif) center left no-repeat; }ul.mktree li.liBullet .bullet { cursor: default; background: url(http://finalevillee.googlepages.com/bullet.gif) center left no-repeat; }ul.mktree li.liOpen ul { display: block; }ul.mktree li.liClosed ul { display: none; }ul.mktree li { font-size: 12pt; }ul.mktree li ul li { font-size: 10pt; }ul.mktree li ul li ul li { font-size: 8pt; }ul.mktree li ul li ul li ul li { font-size: 6pt; }</style>

<script src="http://finalevillee.googlepages.com/tree.js"></script>';

echo '<ul class="mktree">';

for($i=0;$i<count($string)-1;$i++){

$string[$i] = explode($star,$string[$i]);

$string[$i][0] = trim($string[$i][0]);

$string[$i][1] = explode($dis,$string[$i][1]);

if($string[$i][0] == $title and $t == 1){

$t =2;

echo '<li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}elseif($string[$i][0] == $content and $c ==1){

$c =2;

echo '<ul><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}elseif($string[$i][0] == $content and $c ==2){

if($p ==1){

echo '</li><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}elseif($p ==2){

$p =1;

echo '</ul></li><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}

}elseif($string[$i][0] == $ps and $p ==1){

$p =2;

echo '<ul><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a></li>';

}elseif($string[$i][0] == $ps and $p ==2){

echo '<li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a></li>';

}elseif($string[$i][0] == $title and $t == 2){

if($c ==2 and $p ==1){

$c =1;

echo '</li></ul><li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.$string[$i][1][0].'</a>';

}elseif($c ==2 and $p ==2){

$c =1;

$p =1;

echo '</ul></li></ul><li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.$string[$i][1][0].'</a>';

}elseif($c==1){

echo '</li><li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.$string[$i][1][0].'</a>';

}

}

}

echo '</ul></li></ul><script>convertTrees();</script>';

?>

==============================
三層樹狀分類程式碼生產器,php程式碼結束
==============================

2009年7月9日 星期四

C語言學習實錄之二

C語言學習實錄之二
(第二次上課)

第二次上課

終於慢慢切入了最重要的地方了

就是重複迴圈 for() while() 等等

在c語言中這些用法都和php差不多(別的語法也是...)

所以還蠻容易上手的

= =

首先就是for()迴圈的應用

for(起始值;判斷值是否進行;每次判斷值得改變){
do something
}

接下來是範例,要算出階層 就是 "!"

不過在這邊要注意的是,由於宣告的最後放結果的a,的長度只有31位元,正整數只能存放15位元
,所以如果輸入太大,則會出現"溢位"。

ex2-1

#include
#include
int main(void){
int i,a=1,n;
printf("請輸入皆層\n");
scanf ("%d",&n);
for(i=1;i<=n;i++){ //i起始值為一,每執行一次就加一,直到>n停止
a = a*i;
}
printf("=%d\n",a);
system("pause");
return 0;
}

接下來當然就是for()迴圈加強版摟!!

這邊主要差是在一次跳兩個數字,就變成偶數

ex 2-2

#include
#include
int main(void){
int i,a=0,n;
printf("請輸入偶數連加的最終值\n");
scanf("%d",&n);
for(i=2;i<=n;i=i+2){
a=a+i;
}
printf("%d\n",a);
system("pause");
return 0;
}


for()迴圈其實就差不多就這樣

如果想更詳細了解的話可以參考 php重複迴圈

for()迴圈基本上是大同小異,不過在寫法上還是有些差異


接下來就進入下一個主題

while()迴圈

這邊同樣可以參考 php重複迴圈

這個範例就直接是while()迴圈較深入的範例,用了兩個迴圈(當初就寫在一起了,忘了分開)

第一個是可以重複執行

第二個就是要計算所有整數的和

這邊有多一個指令 system("cls") 就是每執行一次就清除螢幕



ex2-3

#include
#include
int main(void){
int i,s,n;
char f='y'; // 宣告字元 f = 'y'
while(f == 'y' || f == 'Y') // 由於上述 所以可以執行以下
{
int i=1;s=0; //這邊要將i s 歸位,否則會錯誤(迴圈的變數值會保留,所以要重設)
printf("求1~N所有整數之和\n");
scanf("%d",&n);
while(i<=n) //第二個迴圈,用來計算
{
s=s+i;
i++;
}
printf("1~%d所有和為%d\n",n,s);
printf("如果繼續請案y\n");
scanf(" %c",&f); //輸入值給f,如果不是 'y' or 'Y' 則第一個while()不會繼續執行
//這邊在設定 %c時,前面要加一個空白,是告訴c,把"\n"(換行)清除掉,(c預設有換行)
system("cls");
}
system("pause");
return 0;
}



------------------------------------------------
本人將會把在巨匠學的程式範例和一些重點 PO 上來

放在"C語言學習實錄"分類

供大家參考

此次暑假預計學習的有

C++ 初階 (其實還是C語言)
C++ 進階
C++ 物件導向

歡迎大家觀賞 (顆顆)

也當作自己的學習紀錄吧!!
------------------------------------------------

2009年7月8日 星期三

C語言學習實錄之一

C語言學習實錄之一
(第一次上課)

當然學習程式語言第一步驟當然

就是安裝相關程式

此次課程使用的是 DEV C++ (免費的搜尋一下就下載的到)
點我進入官方下載網頁

安裝好後呢

就是先確定
是否安裝成功?
可否使用?

SO 老套的 當然就是先輸出 "HELLO WORLD!!" (顆顆)
此次使用了
printf 輸出在螢幕
system 系統相關

ex1-1

#include //引入檔(和PHP不同),要使用哪些語法就必須引用那些引入檔
#include //system語法用
int main(void)
{
printf("Hello,C!\n"); //輸出
printf("Hello,World!\n");
system("pause"); //程式暫停 (沒輸入的話視窗執行完就跳掉)
return 0; //無實質意義,只是表示檔案成功執行完畢(可有可無)
}


接下來就是HELLO WORLD 進階版(顆顆)
就是要輸入名子然後 HELLO!!
此次增加了

宣告變數
int 宣告為整數
char 宣告為字元

變數代數 %x
%c 為字元
%d 為十進位

ex1-2

#include
#include
int main(void){
int y=10; //宣告變數整數y 且值為10
char name; //宣告字元name
printf("please enter your name\n");
scanf("%c",&name); //scanf為讓使用者輸入東西,並存入name中('&'要加,%c字元)
printf("please enter your age\n");
scanf("%d",&y);//%d 輸入十進位
printf("HELLO !!\n大家好\n");
printf("我是%c\n今年%d歲\n",name,y); //(這邊不用'&')
system("pause");
return 0;
}

= =
接下來呢
就是在整合入 運算的部分

ex1-3

#include
#include
int main(void){
int n1,n2,s;
/*注解
printf("請輸入被加數\n");
scanf("%d",&n1);
printf("請輸入加數\n");
scanf("%d",&n2);
s = n1+n2;
printf("%d+%d=%d\n",n1,n2,s);
p.s此段較複雜,下段較簡潔
*/
printf("請輸入被加數與加數,並請以豆號隔開\n");
scanf("%d,%d",&n1,&n2); //輸入的時候必須符合""之間的格式
printf("%d+%d=%d\n",n1,n2,n1+n2);

system("pause");
return 0;
}


此次課程最後就是較複雜的運算
加入了小數的部分

宣告變數
double 為小數

變數代數 %x
%f 小數


ex1-4

#include
#include
int main(void)
{
int f;
double c; //宣告為小數c (float也可,差在記憶體大小)
printf("please enter F\n");
scanf("%d",&f);
c = (f-32)*5/(double) 9;
/*
p.s
(double) 9 為宣告9為小數,(隨便挑一個宣靠為小數即可)

在c語言中,整數間運算的結果還是整數
如果不加入(double) 那最後的c值會是 xx.0000 小數部分為0
*/
printf("C is %.2f \n",c); //%f為小數,%2.4f表示只顯示小數點前兩位,小數點後四位
system("pause");
return 0;

}

此次課程結束

homework
1.寫出兩數相減
2.寫出bmi計算,輸入身高(cm) 體重(kg) (整數)



hw1-1 寫出兩數相減

#include
#include
int main(void){
int a,b;
printf("請輸入被減數\n");
scanf("%d",&a);
printf("請輸入減數\n");
scanf("%d",&b);
printf("%d-%d=%d\n",a,b,a-b);
system("pause");
return 0;
}



hw1-2 寫出bmi計算,輸入身高(cm) 體重(kg) (整數)

#include
#include
int main(void){
int cm,kg;
double bmi;
printf("請輸入身高(cm)\n");
scanf("%d",&cm);
printf("請輸入體重(kg)\n");
scanf("%d",&kg);
bmi = (kg*(double)10000)/(cm*cm);
printf("您的身高為%d,體重為%d,BMI值為%.2f\n",cm,kg,bmi);
system("pause");
return 0;
}

2009年7月7日 星期二

PHP MYSQL 函數語法與說明

PHP MYSQL 函數語法與說明

PHP MySQL 數據庫函數庫
作者:DDVIP

==========================================

本函數庫供存取 MySQL 數據庫。有關 MySQL 的細節,及下載 MySQL 數據庫,請到這個網址 http://www.mysql.com 。而網絡上也有許多提供處理 MySQL 的用戶界面程序,建議到 http://www.phpwizard.net/phpMyAdmin 下載 phpMyAdmin,可以使用瀏覽器操作及管理 MySQL。



mysql_affected_rows: 得到 MySQL 最後操作影響的列數目。
mysql_close: 關閉 MySQL 服務器連接。
mysql_connect: 打開 MySQL 服務器連接。
mysql_create_db: 建立一個 MySQL 新數據庫。
mysql_data_seek: 移動內部返回指針。
mysql_db_query: 送查詢字符串 (query) 到 MySQL 數據庫。
mysql_drop_db: 移除數據庫。
mysql_errno: 返回錯誤信息代碼。
mysql_error: 返回錯誤信息。
mysql_fetch_array: 返回數組資料。
mysql_fetch_field: 取得字段信息。
mysql_fetch_lengths: 返回單列各欄資料最大長度。
mysql_fetch_object: 返回類資料。
mysql_fetch_row: 返回單列的各字段。
mysql_field_name: 返回指定字段的名稱。
mysql_field_seek: 配置指針到返回值的某字段。
mysql_field_table: 獲得目前字段的資料表 (table) 名稱。
mysql_field_type: 獲得目前字段的類型。
mysql_field_flags: 獲得目前字段的標誌。
mysql_field_len: 獲得目前字段的長度。
mysql_free_result: 釋放返回佔用內存。
mysql_insert_id: 返回最後一次使用 INSERT 指令的 ID。
mysql_list_fields: 列出指定資料表的字段 (field)。
mysql_list_dbs: 列出 MySQL 服務器可用的數據庫 (database)。
mysql_list_tables: 列出指定數據庫的資料表 (table)。
mysql_num_fields: 取得返回字段的數目。
mysql_num_rows: 取得返回列的數目。
mysql_pconnect: 打開 MySQL 服務器持續連接。
mysql_query: 送出一個 query 字符串。
mysql_result: 取得查詢 (query) 的結果。
mysql_select_db: 選擇一個數據庫。
mysql_tablename: 取得資料表名稱。

詳細說明

mysql_affected_rows
得到 MySQL 最後操作影響的列數目。
語法: int mysql_affected_rows(int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可得到 MySQL 最後查詢操作 INSERT、UPDATE 或 DELETE 所影響的列 (row) 數目。若最後的查詢 (query) 是使用 DELETE 而且沒有使用 WHERE 命令,則會刪除全部資料,本函數將返回 0。若最後使用的是 SELECT,則用本函數不會得到預期的數目,因為要改變 MySQL 數據庫本函數才有效,欲得到 SELECT 返回的數目需使用 mysql_num_rows() 函數。

mysql_close
關閉 MySQL 服務器連接。
語法: int mysql_close(int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數關閉與 MySQL 數據庫服務器的連接。若無指定參數 link_identifier 則會關閉最後的一筆連接。用 mysql_pconnect() 連接則無法使用本函數關閉。實際上本函數不是一定需要的,當 PHP 整頁程序結束後,將會自動關閉與數據庫的非永久性 (non-persistent) 連接。成功返回 true、失敗返回 false 值。
參考: mysql_connect() mysql_pconnect()

mysql_connect
打開 MySQL 服務器連接。
語法: int mysql_connect(string [hostname] [:port], string [username], string [password]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數建立與 MySQL 服務器的連接。其中所有的參數都可省略。當使用本函數卻不加任何參數時,參數 hostname 的默認值為 localhost、參數 username 的默認值為 PHP 執行行程的擁有者、參數 password 則為空字符串 (即沒有密碼)。而參數 hostname 後面可以加冒號與埠號,代表使用那個埠與 MySQL 連接。當然在使用數據庫時,早點使用 mysql_close() 將連接關掉可以節省資源。
使用範例
這是一位未具名網友提供的範例 (18-Feb-1999)
站長";
}
$row = mysql_fetch_row($res);
echo "未來您使用的號碼為: ".$row[0];
?>
參考: mysql_close() mysql_pconnect()

mysql_create_db
建立一個 MySQL 新數據庫。
語法: int mysql_create_db(string database name, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數用來建立新的數據庫 (database)。在建立前,必須先與服務器連接。
參考: mysql_drop_db()

mysql_data_seek
移動內部返回指針。
語法: int mysql_data_seek(int result_identifier, int row_number);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可移動內部返回的列指針到指定的 row_number 去。之後若使用 mysql_fetch_row() 可以返回新列的值。成功返回 true、失敗則返回 false。

mysql_db_query
送查詢字符串 (query) 到 MySQL 數據庫。
語法: int mysql_db_query(string database, string query, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數用來送出查詢字符串 (query) 到後端的 MySQL 數據庫中。而可省略的參數 link_identifier 若不存在,程序會自動尋找其它 mysql_connect() 連接後的連接代碼。發生錯誤時會返回 false,其它沒錯誤時則返回它的返回代碼。
參考: mysql_connect()

mysql_drop_db
移除數據庫。
語法: int mysql_drop_db(string database_name, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數移除已存在的數據庫。成功返回 true、失敗則返回 false。
參考: mysql_create_db()

mysql_errno
返回錯誤信息代碼。
語法: int mysql_errno(int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到 MySQL 數據庫服務器的錯誤代碼。通常用在 PHP 網頁程序開發階段,作為 PHP 與 MySQL 的除錯用。
使用範例
";
mysql_select_db("nonexistentdb");
echo mysql_errno().": ".mysql_error()."
";
$conn = mysql_query("SELECT * FROM nonexistenttable");
echo mysql_errno().": ".mysql_error()."
";
?>
參考: mysql_error()

mysql_error
返回錯誤信息。
語法: string mysql_error(int [link_identifier]);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數可以得到 MySQL 數據庫服務器的錯誤信息。通常用在 PHP 網頁程序開發階段,與 mysql_errno() 一起作為PHP 與 MySQL 的除錯用。
參考: mysql_errno()

mysql_fetch_array
返回數組資料。
語法: array mysql_fetch_array(int result, int [result_typ]);
返回值: 數組
函數種類: 數據庫功能
內容說明: 本函數用來將查詢結果 result 拆到數組變量中。若 result 沒有資料,則返回 false 值。而本函數可以說是 mysql_fetch_row() 的加強函數,除可以將返回列及數字索引放入數組之外,還可以將文字索引放入數組中。若是好幾個返回字段都是相同的文字名稱,則最後一個置入的字段有效,解決方法是使用數字索引或者為這些同名的字段 (column) 取別名 (alias)。治募注意的是使用本函數的處理速度其實不會比 mysql_fetch_row() 函數慢,要用哪個函數還是看使用的需求決定。參數 result_typ 是一個常量值,有以下幾種常量 MYSQL_ASSOC、MYSQL_NUM 與 MYSQL_BOTH。
使用範例


mysql_fetch_field
取得字段信息。
語法: object mysql_fetch_field(int result, int [field_offset]);
返回值: 類
函數種類: 數據庫功能
內容說明: 本函數返回的類資料為 result 的字段 (Column) 信息。返回類的屬性如下:
name - 字段名稱
table - 字段所在表格的資料表名稱
max_length - 字段的最大長度
not_null - 若為 1 表示本字段不能是空的 (null)
primary_key - 若為 1 表示本字段是主要鍵 (primary key)
unique_key - 若為 1 表示本字段為不可重覆鍵 (unique key)
multiple_key - 若為 1 表示本字段為可重覆鍵 (non-unique key)
numeric - 若為 1 表示本字段為數字類型 (numeric)
blob - 若為 1 表示本字段為位類型 (BLOB)
type - 字段類型
unsigned - 若為 1 表示本字段為無記號 (unsigned)
zerofill - 若為 1 表示本字段為被零填滿 (zero-filled)
參考: mysql_field_seek()

mysql_fetch_lengths
返回單列各欄資料最大長度。
語法: array mysql_fetch_lengths(int result);
返回值: 數組
函數種類: 數據庫功能
內容說明: 本函數將 mysql_fetch_row() 處理過的最後一列資料的各字段資料最大長度放在數組變量之中。若執行失敗則返回 false 值。返回數組的第一筆資料索引值是 0。
參考: mysql_fetch_row()

mysql_fetch_object
返回類資料。
語法: object mysql_fetch_object(int result, int [result_typ]);
返回值: 類
函數種類: 數據庫功能
內容說明: 本函數用來將查詢結果 result 拆到類變量中。使用方法和 mysql_fetch_array() 幾乎相同,不同的地方在於本函數返回資料是類而不是數組。若 result 沒有資料,則返回 false 值。另外治募注意的地方是,取回的類資料的索引只能是文字而不能用數字,這是因為類的特性。類資料的特性中所有的屬性 (property) 名稱都不能是數字,因此只好乖乖使用文字字符串當索引了。參數 result_typ是一個常量值,有以下幾種常量 MYSQL_ASSOC、MYSQL_NUM 與 MYSQL_BOTH。關於速度方面,本函數的處理速度幾乎和 mysql_fetch_row() 及 mysql_fetch_array() 二函數差不多,要用哪個函數還是看使用的需求決定。
使用範例
下面的例子示範如使用返回的類。
user_id;
echo $row->fullname;
}
mysql_free_result($result);
?>
參考: mysql_fetch_array() mysql_fetch_row()

mysql_fetch_row
返回單列的各字段。
語法: array mysql_fetch_row(int result);
返回值: 數組
函數種類: 數據庫功能
內容說明: 本函數用來將查詢結果 result 之單列拆到數組變量中。數組的索引是數字索引,第一個的索引值是 0。若 result 沒有資料,則返回 false 值。
參考: mysql_fetch_array() mysql_fetch_object() mysql_data_seek() mysql_fetch_lengths() mysql_result()

mysql_field_name
返回指定字段的名稱。
語法: string mysql_field_name(int result, int field_index);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數用來取得指定字段的名稱。
使用範例
mysql_field_name($result,2);

mysql_field_seek
配置指針到返回治募某字段。
語法: int mysql_field_seek(int result, int field_offset);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數配置目前的指針到返回治募特定字段中。
參考: mysql_fetch_field()

mysql_field_table
獲得目前字段的資料表 (table) 名稱。
語法: string mysql_field_table(int result, int field_offset);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數可以得到目前所在字段的資料表名。

mysql_field_type
獲得目前字段的類型。
語法: string mysql_field_type(int result, int field_offset);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數可以得到目前所在字段的類型格式。返回的字符串為字段的類型,包括了 int、real、string、blob....等等,詳見 MySQL 的相關文件中有關於類型的部份。
使用範例
";
echo "本資料表的字段如下
";
while ($i < $fields) { $type = mysql_field_type ($result, $i); $name = mysql_field_name ($result, $i); $len = mysql_field_len ($result, $i); $flags = mysql_field_flags ($result, $i); echo $type." ".$name." ".$len." ".$flags."
";
$i++;
}
mysql_close();
?>

mysql_field_flags
獲得目前字段的標誌。
語法: string mysql_field_flags(int result, int field_offset);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數可以得到目前所在字段的標誌。若一個字段有數種屬性標誌,則返回的標誌為這些屬性連起來的字符串,每個屬性都用空格隔開,可以使用 explode() 切開這些字符串。返回的標誌可能是:not_null、primary_key、unique_key、multiple_key、blob、unsigned、zerofill、binary、enum、auto_increment、timestamp。

mysql_field_len
獲得目前字段的長度。
語法: int mysql_field_len(int result, int field_offset);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到目前所在字段的長度。

mysql_free_result
釋放返回佔用內存。
語法: boolean mysql_free_result(int result);
返回值: 布爾值
函數種類: 數據庫功能
內容說明: 本函數可以釋放目前 MySQL 數據庫 query 返回所佔用的內存。一般只有在非常擔心在內存的使用上可能會不足的情形下才會用本函數。PHP 程序會在結束時自動釋放。

mysql_insert_id
返回最後一次使用 INSERT 指令的 ID。
語法: int mysql_insert_id(int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到最後一次使用 INSERT 到 MySQL 數據庫的執行 ID。sleibowitz@btcwcu.org (13-May-1999) 指出在 PHP 3.0.7 版用 REPLACE 也和使用 INSERT 一樣,可以使用本函數獲得 ID。

mysql_list_fields
列出指定資料表的字段 (field)。
語法: int mysql_list_fields(string database_name, string table_name, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到指定的資料表的所有字段。返回的字段信息可以供 mysql_field_flags()、mysql_field_len()、mysql_field_name() 及 mysql_field_type() 等函數使用。若有錯誤則返回 -1。

mysql_list_dbs
列出 MySQL 服務器可用的數據庫 (database)。
語法: int mysql_list_dbs(int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到 MySQL 服務器的可用數據庫。

mysql_list_tables
列出指定數據庫的資料表 (table)。
語法: int mysql_list_tables(string database, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到指定數據庫中的所有資料表名稱。

mysql_num_fields
取得返回字段的數目。
語法: int mysql_num_fields(int result);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到返回字段的數目。
參考: mysql_db_query() mysql_query() mysql_fetch_field() mysql_num_rows()

mysql_num_rows
取得返回列的數目。
語法: int mysql_num_rows(int result);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到返回列的數目。
參考: mysql_db_query() mysql_query() mysql_fetch_row()

mysql_pconnect
打開 MySQL 服務器持續連接。
語法: int mysql_pconnect(string [hostname] [:port], string [username], string [password]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數和 mysql_connect() 雷同。不同的地方在於使用本函數打開數據庫時,程序會先尋找是否曾經執行過本函數,若執行過則返回先前執行的 ID。另一個不同的地方是本函數無法使用 mysql_close() 關閉數據庫。

mysql_query
送出一個 query 字符串。
語法: int mysql_query(string query, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數送出 query 字符串供 MySQL 做相關的處理或者執行。若沒有指定 link_identifier 參數,則程序會自動尋找最近打開的 ID。當 query 查詢字符串是 UPDATE、INSERT 及 DELETE 時,返回的可能是 true 或者 false;查詢的字符串是 SELECT 則返回新的 ID 值。joey@samaritan.com (09-Feb-1999) 指出,當返回 false 時,並不是執行成功但無返回值,而是查詢的字符串有錯誤。
參考: mysql_db_query() mysql_select_db() mysql_connect()

mysql_result
取得查詢 (query) 的結果。
語法: int mysql_result(int result, int row, mixed field);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數取得一格 query 的結果。參數 field 可以是字段名稱、順序或者是 FieldName.TableName 的格式。在返回資料量少時,可以使用本函數來處理。當數據庫大時,本函數的效率就有待考量了,這時可以使用較有效率的 mysql_fetch_row()、mysql_fetch_array() 及 mysql_fetch_object() 等函數。

mysql_select_db
選擇一個數據庫。
語法: int mysql_select_db(string database_name, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數選擇 MySQL 服務器中的數據庫以供之後的資料查詢作業 (query) 處理。成功返回 true,失敗則返回 false。
參考: mysql_connect() mysql_pconnect() mysql_query()

mysql_tablename
取得資料表名稱。
語法: string mysql_tablename(int result, int i);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數可取得資料表名稱字符串,一般配合 mysql_list_tables() 函數使用,取得該函返回的數字的名稱字符串。
使用範例
";
$i++;
}
?>

如果覺得不錯的話,歡迎分享