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格式載入了。