08 三月 2010 @ 11:41 上午 

我知道CI有專屬的中文教學網站,不過個人是覺得因為他是一個細節一個細節拉出來講,比較適合當作工具來用,所以在此記錄一下這網站開發的第一步。

首先將 system 和 index.php 放到網站的根目錄下,這樣直接連進 http://網站.com/index.php 就可以看到歡迎畫面了

–以下使用範例跟中文教學網內的影片一樣–
再來是修改的第一步,首先建立一個 blog.php 到 system/application/controllers/
為了符合MVC的設計原則,凡事屬於控制性質(controllers)的code我都是丟進controllers裡運作
[php]
<?
class Blog extends Controller {

function index() {
echo "Hello world!!";
}
}
?>
[/php]

建立好後,輸入http://網站.com/index.php/blog (注意是小寫,以檔名為主),就可以看到Hello world!!的字樣出現

如果你要把他設為首頁,也就是不要再加個blog才看的到,可以到 system/application/config/routes.php 裡
[php]
/* 將下面這個參數設定改成這樣 */
$route[‘default_controller’] = "blog";
[/php]

之後直接輸入 http://網站.com/index.php 就可以看到跟 http://網站.com/index.php/blog 一樣的結果了。

Posted By: fantasy
Last Edit: 08 三月 2010 @ 11:42 上午

EmailPermalinkComments (0)
Tags
Categories: 程設不歸路
 11 二月 2010 @ 11:08 上午 

基本上,最近貼的有關於核取方塊的code都可以結合在一起
[js]
//全選後取消其中一個時全選方塊也取消
function check_box(obj,fld) {
var checkboxs = document.getElementsByName(fld);
var check = 0;
for (var i = 1; i < checkboxs.length; i++) {
if(checkboxs[i].checked == true) check++;
}
if(checkboxs.length != check) {
checkboxs[0].checked = ”;
}
if(checkboxs.length == (check+1)){
checkboxs[0].checked = true;
}
}
[/js]

接著加在”非全選核取方塊裡”
[html]
<input type="checkbox" name="select[]" id="select[]" onclick="check_box(this,’select[]’);" value="1"/>
[/html]

Posted By: fantasy
Last Edit: 11 二月 2010 @ 11:08 上午

EmailPermalinkComments (0)
Tags
Categories: 程設不歸路
 10 二月 2010 @ 6:02 下午 

此方法可以結合上一篇的用法,達到一些網路問卷的效果。
[js]
//全取消時確認按鈕不可按
function check_all(obj,fld) {
var checkboxs = document.getElementsByName(fld);
var check = 0;
for (var i = 0; i < checkboxs.length; i++) {
if(checkboxs[i].checked == ”) check++;
}
if(checkboxs.length == check) {
document.getElementById(‘check’).disabled = true;
}else{
document.getElementById(‘check’).disabled = false;
}
}
[/js]

加入要觸發事件的物件內(全選的核取方塊)
[html]
<input type="checkbox" name="select[]" id="select[]" value="all" onclick="check_all(this,’select[]’);" />
[/html]

被擉發事件的按鈕
[html]
<input type="button" class="btn_bg" name="check" id="check" />
[/html]

為什麼不用getElementsByName而用getElementById呢?
我在用getElementsByName的時候會抓不到這個button,一改用getElementById就抓到了,很神奇,不要問

Posted By: fantasy
Last Edit: 11 二月 2010 @ 10:12 上午

EmailPermalinkComments (0)
Tags
Categories: 程設不歸路
 10 二月 2010 @ 5:57 下午 

最近弄比較多js的部份,所以把常忘記的部份記錄一下

一樣在頁首加上這段
[js]
function select_all(obj,fld) {
var checkboxs = document.getElementsByName(fld);
for (var i = 0; i < checkboxs.length; i++) {
checkboxs[i].checked = obj.checked;
}
}
[/js]

然後在要觸發的事件上加入function name(比方說全選的chcek box)
[html]
<input type="checkbox" name="select[]" id="select[]" value="all" onclick="select_all(this,’select[]’);" />
[/html]

Posted By: fantasy
Last Edit: 10 二月 2010 @ 05:58 下午

EmailPermalinkComments (0)
Tags
Categories: 程設不歸路
 10 二月 2010 @ 9:14 上午 

很久沒更新這了,一天到晚被進度追著跑,又卡到陰到瓶頸了...

首先在頁首加上這段code,它會去判斷頁面上”SysActionFrm”這個form裡所有type為radio的物件,然後改為空值,也就是不選取的意思
[js]
<script type="text/javascript">
function clear_all() {
for (var i = 0; i < SysActionFrm.elements.length; i++) {
if (SysActionFrm.elements[i].type == ‘radio’) {
SysActionFrm.elements[i].checked = ”;
}
}
}
</script>
[/js]

接著在按鈕上加入onclick觸發clear_all()事件
[html]
<input type="button" name="search" class="btn_bg" onclick="clear_all();"/>
[/html]

Posted By: fantasy
Last Edit: 10 二月 2010 @ 09:15 上午

EmailPermalinkComments (0)
Tags
Categories: 程設不歸路
 28 十二月 2009 @ 3:42 下午 

繼上次那篇之後,我在各教學網站上打滾了很久,因為CI的分頁雖然很方便,但是不知道是不是使用的族群太少,一些比較複雜一點功能的文件真的是少的很可憐。像這次遇到分頁的問題就讓我進度卡到陰了一整個禮拜。

我們要弄的是在搜尋後,會將搜尋值keep在input box裡,並將結果顯示在下方表格裡,聽起來很簡單,但是做起來還蠻複雜的。

首先要將CI預設URI的//之前為空值會自動刪掉的部份做修改(以下轉自諾魯島)。 → /system/libraries/URI.php

//1. 註解掉 function _fetch_uri_string 中的

[php]$path = (isset($_SERVER)) ? $_SERVER : @getenv(‘PATH_INFO’);[/php]

//2. 在該行下面加入

[php]</p>
<p>$path = ”;<br />
if (isset($_SERVER) &amp;&amp; isset($_SERVER)) {<br />
$path = str_replace($_SERVER, ”, $_SERVER);<br />
} else {<br />
$path = @getenv(‘PATH_INFO’);<br />
}</p>
<p>[/php]

//3. 將 function _explode_segments() 中的 if ($val != ”) 註解掉

這段改好之後,你在controller裡加上的$var/就不會因為空值被刪掉,再來,就是中文顯示的問題。
因為CI內建的一些功能沒有限制很多,所以也建議不要寫死(上述那個有用到再改,目前還不知道怎麼拉出來做),在中文設定上自己建一個MY_URI(要在網址列上傳中文)。

[php]</p>
<p>class MY_URI extends CI_URI {<br />
function _filter_uri($str)<br />
{<br />
if ($str != ” &amp;&amp; $this-&gt;config-&gt;item(‘permitted_uri_chars’) != ” &amp;&amp; $this-&gt;config-&gt;item(‘enable_query_strings’) == FALSE)<br />
{<br />
$str = urlencode($str); //編碼(解決url中文字問題)<br />
if ( ! preg_match(&quot;|^[&quot;.str_replace(array(‘\\-‘, ‘\-‘), ‘-‘, preg_quote($this-&gt;config-&gt;item(‘permitted_uri_chars’), ‘-‘)).&quot;]+$|i&quot;, $str))<br />
{<br />
show_error(‘The URI you submitted has disallowed characters.’, 400);<br />
}<br />
$str = urldecode($str); //解碼<br />
}</p>
<p>// Convert programatic characters to entities<br />
$bad = array(‘$’, ‘(‘, ‘)’, ‘%28’, ‘%29’);<br />
$good = array(‘$’, ‘(‘, ‘)’, ‘(‘, ‘)’);</p>
<p>return str_replace($bad, $good, $str);<br />
}<br />
}</p>
<p>[/php]

這樣就可以解決中文問題。分頁的部份目前是解決了一大半,還好同事有看到這篇文章,不然應該還是卡在那邊了 囧>

參考網站:諾魯島

Strattera

Posted By: fantasy
Last Edit: 21 九月 2012 @ 04:22 下午

EmailPermalinkComments (0)
Tags
Categories: 程設不歸路
 11 十二月 2009 @ 4:17 下午 

好吧~我知道我又很久沒更新了,因為我也一個月沒碰到code,這一個月我都在QC,眼睛都花了!今天碰到久圍(?)的code感覺好親切(喂),不過今天只是做個開頭的筆記,因為我對Framework感到很害怕不熟,看了一下還是很害怕不太懂,所以特此做個開頭的筆記,好讓自己以後有地方可以快速查資料。

相關網站:CodeIgniter非官方繁體中文討論區CodeIgniter使用手冊1.7.2小惡魔 – 電腦技術 – 生活日記 – 美食介紹 – AppleBOY

Posted By: fantasy
Last Edit: 11 十二月 2009 @ 04:17 下午

EmailPermalinkComments (0)
Tags
Categories: 程設不歸路
 25 十一月 2009 @ 2:38 下午 

好好好,就說是筆記了,這東西我相信SQL有認真上課的人都會知道不認真的話就會跟我一樣

示範如下:

[sql]SELECT Distinct [欄位名稱] FROM [資料表][/sql]

這個語法的好處是可以讓你馬上把一堆重覆的筆數去掉,好讓你可以用這語法撈出來的資料去做join這類的篩選動作。要注意的是,若接著SELECT DISTINCT後面有指定兩個以上的欄位,則要符合所有欄位值皆同樣重複的情況下該筆資料才會被捨棄(若只有其中一個欄位值相同但其它欄位值並不同,則仍會取出該筆資料。)。簡單來說,如果要做多個欄位的話,只有一個欄位是重覆的情況下,是沒用的。

參考網站:SQL教學

Posted By: fantasy
Last Edit: 10 二月 2010 @ 09:03 上午

EmailPermalinkComments (0)
Tags
Categories: 程設不歸路
 12 十一月 2009 @ 11:43 上午 

最近被這玩意搞的有點頭大,因為PHP的函數用法跟JS的函數用法有一些些的不同雖然只是一個substr(),不過在多次尋求google解答以及熱心同事的幫助下終於完成了這項不可能的任務。

stnum及etnum是客戶輸入的日期,被檢核用

[js]

// 建立系統日期
var objDate = new Date();
var year = objDate.getYear();
var month = objDate.getMonth()+1;
var day = objDate.getDate();
// 轉換被檢核日期為數值型態
var get1year = parseInt(stnum.substr(0,4),10);
var get1month = parseInt(stnum.substr(4,2),10);
var get2year = parseInt(etnum.substr(0,4),10);
var get2month = parseInt(etnum.substr(4,2),10);

/* 起始日期檢核 */
if( year == get1year ) { /* 本年度檢核 */
if( ( month – get1month ) >= 3 ) {
return false;
}
}else if( year > get1year ) { /* 跨年度檢核 */
if ( ( year – get1year ) == 1 ) {
var a1 = 12 – get1month;
/* 相加大於等於3個月就不行 */
if( ( month + a1 ) >= 3 ) {
return false;
}
}else{
return false;
}
}
/* 迄值日期檢核 */
if( year == get2year ) { /* 本年度檢核 */
if( ( month – get2month ) >= 3 ) {
return false;
}
}else if( year > get2year ) { /* 跨年度檢核 */
if ( ( year – get2year ) == 1 ) {
var a2 = 12 – get2month;
/* 相加大於等於3個月就不行 */
if( ( month + a2 ) >= 3 ) {
return false;
}
}else{
return false;
}
}

[/js]

參考網站:【卜維丰】

Posted By: fantasy
Last Edit: 10 二月 2010 @ 09:05 上午

EmailPermalinkComments (0)
Tags
Categories: 程設不歸路
 28 十月 2009 @ 9:08 上午 

這東西我查到快吐血都沒有啥類似的文章可以翻到,最近在寫轉報表的程式,然後又指定要橫向輸出,google都快被我翻爛了,還是沒找到,後來跟同事兩個人努力的結果下才找到這個不起眼的設定…

設定如下ex:pdf.php

AddPage($var);
}
?>

接著在執行的程式裡給予參數ex:write_pdf.php

Posted By: fantasy
Last Edit: 28 十月 2009 @ 09:08 上午

EmailPermalinkComments (0)
Tags
Categories: 程設不歸路

 Last 50 Posts
 Back
 Back
Change Theme...
  • Users » 6
  • Posts/Pages » 131
  • Comments » 6
Change Theme...
  • VoidVoid « Default
  • LifeLife
  • EarthEarth
  • WindWind
  • WaterWater
  • FireFire
  • LightLight

生活大小事



    No Child Pages.

程式設計



    No Child Pages.