2009年12月25日 星期五

php 讀取txt檔 自動分行

<?php
$file = fopen("test.txt", "r");

//輸出文本中所有的行,直到文件結束為止。
while(! feof($file))
{
echo fgets($file). "<br />";
}
//當讀出文件一行後,就在後面加上 <br> 讓html知道要換行
fclose($file);
?>


fopen 是開啟檔案的程式
feof 是檢測是否已到文件末尾
fgets 是讀取文字檔的程式,一次讀一行,直到 /n (分行符號)

參考資料:
PHP: 讀取檔案 fgets 和 fread 的差異
W3School: PHP feof()函數

2009年12月11日 星期五

只顯示圖片的某個部份

有些時候圖片太大,只想顯示圖片的某個部份,又不想切圖的時候,可以使用這個方法。

就在圖片的前面加入css的設定值,如
<div style ="height:50px; width:50px; overflow:hidden;">
<div style = "margin: -25px 0 0 0;">
<img src=" url/img.jpg "/>
</div>
</div>


先用一層 div 區塊來固定圖片的大小,並設定超過區塊大小的圖片即影藏,再用第二區塊來控制要顯現圖片的哪一部份,然後用margin調整圖片的位置,就可以任意顯現圖片的任一部分嚕~~

圖片超連結後有邊框!!

主要是IE的顯示會有問題, 試了好久,終於找到答案了!! 為避免忘記,趕快來PO一下。

方法非常簡單,只要在img的設定內加上 border="0" 就好嚕!!

2009年11月27日 星期五

解決phpmyadmin容量限制

幾個參考網站
MySQL 資料庫 *.sql 語法文件檔 上傳/載入 容量限制問題.
如何修改phpmyadmin 2m限制

不過這好像都不是我之前修改時找到的網頁..
但我是用修改php.ini的方法就是了..

2009年11月10日 星期二

該用那種字體呢

在做平面設計的時候,常常會為這個問題感到很困擾。在網路上發現了一篇還不錯的文章,記下來備忘。

iT自救術─英文字體的分類

2009年8月21日 星期五

讓iframe自動調整高度

找了好幾個方法,就以這個方法簡單又有效~~

首先,加入iframe的語法。
<iframe src="./source"(欲連結的網頁) name="mainframe" width="98%" 
marginwidth="0" marginheight="0" scrolling="No"
frameborder="0" id="mainframe" margin-left="20" ></iframe>

在到欲連結的網頁裡,在head下面加入以下程式碼。
<head>  
   <script>
      function resize(){
       parent.document.getElementById("mainframe").height=document.body.scrollHeight;    
     }
   </script>
</head>

並在body裡加入:
<body onload="resize();" > 

這樣就可以嚕~~

還有另一個方法也不錯。只要在同一個檔案內編寫就好。在有iframe的頁面的head之下加入以下程式碼。
<script type="text/javascript">
function SetCwinHeight(){
var iframeid=document.getElementById("iframeid"); //iframe id
if (document.getElementById){
if (iframeid && !window.opera){
if (iframeid.contentDocument && iframeid.contentDocument.body.offsetHeight){
iframeid.height = iframeid.contentDocument.body.offsetHeight;
}else if(iframeid.Document && iframeid.Document.body.scrollHeight){
iframeid.height = iframeid.Document.body.scrollHeight;
}
}
}
}
</script>

iframe內加入onload="Javascript:SetCwinHeight()"
<iframe src="./NEWS" name="mainframe" width="98%" 
height="300" marginwidth="0" marginheight="0"
onload="Javascript:SetCwinHeight()"
 scrolling="No" frameborder="0"
id="mainframe" margin-left="20" ></iframe>

因為我的iframe是包在contentRight裏,若contentRight的高度設為自動,則contentRight一開始的高度會很小,所以將contentRight 設一個 min-height:700px 就可以嚕。

2009年8月20日 星期四

IETester - 讓電腦同時有IE5.5, IE6, IE7, IE8

這是一個還蠻好用的軟體,尤其是在寫網頁的時候,可以讓電腦有IE6可以做測試。

雖然還不太穩...

[下載]IETester 調整CSS的相容性,讓電腦同時有IE5.5、IE6、IE7、IE8!

2009年7月30日 星期四

可惡的雙引號!!

昨天花了一個下午才發現原來是雙引號的問題,讓我的php讀不出sql的指令。所以一定要記得,盡量不要用雙引號在sql裡喔~~

查了一下ptt php版對雙引號的見解,看不太懂,但還是先紀錄一下。
""是讀值用的,會讀雙引號內的東西,而''內的就是text。

『php 單雙引號都可以接受 但 SQL 語法字串只接受單引號 不接受雙引號的
通常最容易出問題的地方是 SQL 語法的部份
所以 SQL 語法的部份單雙引號的配合就變的很重要』

大概是這樣。

2009年7月27日 星期一

選項按鈕群組

延續表單搜尋功能

現在我想要設定要搜尋的關鍵字是中文名或是學名。
在原本的表單下方,插入選項按鈕群組。
1. 名稱是rgkeyword。選項按鈕第一個改為中文名查詢,值為1,另一個是學名查詢,值為2。
2. 在繫結底下新增一個表單變數為rgkeyword。

換到搜尋結果的頁面裡,更改rsSP資料集(呈現結果的資料集)的資料。
1. 新增參數key2,現行階段值為 $_POST['rgkeyword']。
2. 更改SQL值。

WHERE left(Code,7) = colname OR (`Chinese name` like %key% and key2 =1) OR (`Scientific name` like %key% and key2 =2)



這樣就可以嚕~~

2009年7月24日 星期五

在部落格張貼程式碼的方法~~

發現一個很好用的網站,以後就可以把程式碼貼上來了~~

Online syntax highlighting

如果...,就...

今天主要研究這個東西。

如:
1. 如果reSP資料集中的欄位volume有資料,則顯示"volume"
<?php if ($row_rsSP['volume'] > 0) { // Show if recordset not empty ?>
volume
<?php } // Show if recordset not empty ?>


2. 如果reSP資料集中的欄位Endemin的值為"Yes",則顯示"Endemic"
<p><?php if ($row_rsSP['Endemic'] == "Yes") { // Show if recordset not empty ?>
Endemic
<?php } // Show if recordset not empty ?></p>


其實很簡單的,只是花了一點時間才搞懂。原本以為可能得去認真學PHP,沒想到,哈,就被我試出來了。(得意~~)

因為有一個欄位的組合就得要寫很多這種判斷式阿。希望真能成功完成。

----

今天已經跟老師說好我要來弄這個網站的事了。加油。

表單搜尋功能

每日都要有新進度,趁著還在熱頭上,就多寫一些。

今天練習的是做一個搜尋框來搜尋關鍵字。

首先,先做一個有搜尋框的頁面。
1. 插入 > 表單 > 表單。表單屬性中的動作為查詢後要出現的頁面。方法為POST。
2. 在表單裏加一個文字框。文字框的ID訂為search。
3. 再加一個按鈕,ID為enter,值為送出,動作為送出表單。
4. 點選search文字框,在行為的+處點選檢驗表單,勾選值必要。
5. 在繫結處點+,選擇表單變數,填入search。

這次要搜尋的是物種名稱,依昨天做的genus.php的方法建立一個新的species.php頁面。
資料集是rsSP。

1. 點選資料集,再變數的地方新增一個變數,依圖所示輸入。執行階段值就是他要接收的值,為由POST傳回來的search,就是剛剛在搜尋頁面設的表單變數。然後再SQL指令裡的where後面多加入OR `chinese name` like %key%這句。因為這個頁面是連接昨天做的genus.php頁面,所以where的第一句是和genus.php頁面連接的。加入這句的目的是要告訴資料庫,如果"chinese name"欄位包含key變數的值的話就要呈現。請注意,因為chinese name這個欄位名有兩個字,所以要用``包起來,若是只有一個字就不用。是`,esc鍵下面,有~的那個鍵,而不是單引號。%是許多字元的意思,類似*的功能。



這樣就可以搜尋了!!

之後可以加一點進階的功能。

2. 在繫結處點+,選擇表單變數,填入search。
3. 在原本的ul外另設兩個段落或ul,其中一個打上"搜尋的是:",然後把繫結處產生的Form > search拉到:的後面。
4. 另一個打上"找不到啦"。
5. 點選原本的ul,在伺服器行為處點選+ > 顯示區域 > 如果資料集不是空的,即顯示。
6. 點選"找不到啦"的那個ul,在伺服器行為處點選+ > 顯示區域 > 如果資料集是空的,即顯示。

以上,程式碼大約如圖。同區塊用相同顏色的線連起來。


這樣阿,就會在搜尋結果頁面上出現搜尋的字串,如果找的到就會出現資料,如果找不到就會出現"找不到啦"。

2009年7月23日 星期四

原來是要設sitemap阿

之前一直很困擾,做好的網站沒有辦法讓google搜尋到。應該是說,這是一個資料庫網站,但是並沒有辦法在google裏搜尋資料庫裡的相關內容時,連結到這個網站裡。據說是因為google並沒有辦法直接搜尋資料庫裡的內容的關係。但是卻可以搜尋到其他類似的資料庫網站。所以一定有辦法可以解決這個問題才是。

今天終於讓我發現了!!原來是要做一個sitemap.xml上傳到google裏,讓她們知道可以來這裡搜尋阿~~

雖然還是搞不清楚應該要怎麼做,但總算有個頭緒了。

幾個參考文章:
Google Sitemaps 教學
【SEO】如何在BlogSpot提交Sitmap? (Google篇)

2009年7月22日 星期三

依科名檢視屬名

這篇算是今天的成果。做個筆記,以免明天就忘了...。

1. 先建立一個科名頁面 main.php
2. 在body下設一個 div class="content"
3. 匯入資料庫plantname
4. 建立資料集rsFamily (應用程式 > 繫結 > +)
SELECT *
FROM char_family_vol
WHERE Code_fam LIKE '5%' (篩選以5為開頭的,因為這些才有屬名的資料)
ORDER BY Family ASC (ASC是遞增,DESC是遞減)
5. 在 div 下設 ul 區塊,下在設li。
6. 將在資料集下的需求欄位拉入li裏。
如,畫面會變為{rsFamily.Family} ({rsFamily.ch_family} ) 括號是自己加的。
7. 設定li的css樣式表:點選下方的
  • ,再點選css樣式右下的新增符號,新增.content li(為進階)→css的規則定義中的清單的項目符號影像→選箭頭圖樣。
    8. 點選下方的
  • ,再點選伺服器行為的 +,選重複區域,暫設為10(隨時可更改)。

    到此完成第一頁。
    依此法做出第二頁genus.php。
    內容為{rsgenus.genus} ({rsgenus.chgenus})

    再來是將兩個頁面連結。

    先設定第一頁。
    1. 選取{rsFamily.Family},點下方屬性的連結欄位旁的資料夾,選取檔案為genus.php。
    2. 點選下方url旁的參數。
    3. 設定名稱為code_fam。
    4. 點選值旁邊的閃電。
    5. 選擇code_fam。


    再來設定第二頁。
    1. 點開資料集,如圖設定篩選器。


    登登,這樣就好囉。

    按F12開啟第一頁的頁面後,會出現如圖左側的科名資料,點選夾竹桃科,就會開起如圖右側的屬名資料嚕。不過搞不清楚為何左側第二頁的箭頭符號出不來就是了。
  • 如何將access資料庫轉成MySOL

    這是我最近一直非常困惑的問題。

    因為手上已經有一份建了很多資料的access資料庫,因為想要把它弄成網頁版,稍研究了一下,決定要把它改成MySOL的格式,然後用PHP來操作在網頁上呈現。(大約是這樣的關係吧..)

    上網查了很久,試了很多轉檔的軟體,但都是失敗了。不過皇天不負苦心人阿,我終於成功了。\(^ 0^)/

    所以在此將我的心得分享一下。

    我使用的是

    # Apache Web Server Version 2.2.4
    # PHP Script Language Version 5.2.3
    # MySQL Database Version 5.0.45
    # phpMyAdmin Database Manager Version 2.10.2

    和 access2003

    最順利將access資料庫匯入mysql的軟體是acc2sql。操作很容易,照著做就是了。不過麻煩的是,怎麼找都只有demo版,而demo版每個資料表只能匯入5筆資料...Orz...。不過會讓資料表的格式都進去就是了。而且中文字的讀取沒有問題。

    有試了其他方法,但因為搞不清楚設定,所以總之都是失敗了,只有用acc2sql有成功。

    接下來有兩條路可走,
    1. 用驢子找acc2sql的正式版!!但是,因為phpMyadmin在匯入資料庫的時候有2mb的限制,如果太大就會失敗,據說是有外掛(?)可以解決,但我試不出來,所以就不多說了。因為我的資料庫已經有9mb了,所以即使找到正式版也還是有不能匯入的問題。
    2. 在access裡把每個資料表彙出成csv格式,再用phpMyadmin的匯入功能將資料表匯入已用acc2sql轉檔成功的資料庫裡。

    因為資料庫很大,又找不到驢子的關係,雖然我的資料庫裡有很多的資料表,但我還是選用了第二個方法,然後我就成功了(灑花)~~

    以下詳敘一下整個流程。另phpMyadmin的使用方法不是本篇重點,所以不多加說明。

    1. 首先將資料庫用acc2sql轉檔,檢查每個資料表有無進入及是否正確。
    2. 在access裡將資料表匯出成csv檔。

    按確定進入。點選左下方的進階,將字碼改為"Unicode (UTF-8)"。

    然後按下一步。
    在選擇欄位分隔符號的時候要注意選擇的是什麼,預設是以"逗號"分隔。不要包含第一列,因為此列在匯入mysql的時候也會當成資料匯入。

    3. 在phpMyadmin中開啟要匯入資料的資料表。清空資料表。再選擇載入。
    4. 選取剛匯出的檔案。因為是csv檔,所以下方的載入檔案格式會自動選擇為csv。這邊要特別注意欄位分隔使用字元的地方。因為phpMyadmin裏預設的是";",而access裡預設的是"逗號"(若是用excel,預設的也是","),所以要記得把這個字元改成","。或是在access匯出時,要設成"分號"。

    5. 執行!

    但可能會有一些問題:
    1. 因為欄位使用字元為",所以如果資料中有"存在,就會有問題。

    若遇上以上狀況,phpMyadmin會有錯誤訊息,如『CSV 檔案第 2709 行中之欄位總數錯誤.』。這時就只好打開csv檔看看是哪個問題,然後排出後再重新匯入一次嚕。

    另要注意,要先有資料表後才能用csv將檔案載入喔,不然就只能用SQL格式載入了。