所有與《碼上就會:Dreamweaver CS3 PHP、MySQL與AJAX》書籍相關的勘誤表將統一放在這一頁。
書籍勘誤之「字打反了」篇:
- 4-6頁:elseif誤植為ifelse,4-7頁裡的圖解說明才是正確的。
- 5-10頁:最後一段粗體字,CHARVAR應該是VARCHAR,內文和表5-3裡的敘述才是正確的。
- 5-11頁:「註解」內文最後一句:「比起固定欄位的CAHR,VARCHAR耗用較多處理效能」裡的CAHR應改成CHAR。
[2007/9/25 更新]
因編排疏忽,書本10-24頁圖片上方,缺少底下文字和圖片:
查詢CD資料
CD唱片專輯資料由底下的三個資料表組成:
因此,底下的SQL將能取出結合cd_albums與cd_pubs資料表的資料集:
[2008/1/21 更新]
補充文件: 使用PHP程式一次上傳多個檔案
[2008/3/4 更新]
將書本光碟OK資料夾裡的guestbook/index.htm檔之中的swapImg()切換圖像自訂函數,修改成書本3-46頁所列舉的程式:
<script language="JavaScript" type="text/JavaScript"> <!-- // 切換圖片的程式 function swapImg (linkObj) { var fullPath = linkObj.childNodes[0].src; var fileName = fullPath.substring(fullPath.lastIndexOf("/") + 1, fullPath.length); document.getElementById("myIcon").src = fullPath; document.getElementById("icon").src = fileName; } //--> </script>
請按此連結下載更新後的index.php檔。
[2008/3/25 更新]「AJAX版本的用戶註冊介面」程式修正
書本9-50頁的用戶註冊介面程式,透過 "userchecker.php" 檢查用戶輸入的帳號是否已經被註冊。光碟裡的範例檔採用 "connUers.php" 資料庫連線設定檔,連結到 "userdata" 資料表。後來筆者整理範例檔時,把 "userdata" 資料表改名成 "users",並放到 "connPHPbook.php" 連線設定檔所指向的 "swf_php" 資料庫,但是我忘了修改 "userchecker.php"範例的連線設定。
底下紅色字體部分是錯誤的:
要改成這樣:
請按此連結下載修正後的 "userchecker.php" 檔。
[2008.5.6補充] 解決FCKeditor 無法上傳檔案的問題
有讀者遇到 FCKeditor 無法上傳的問題。原因出在 WWW 伺服器的系統是 Linux/Unix,會區分大小寫。FCKeditor 在新增資料夾時,全部採用英文小寫命名,例如,存放「影像檔」的資料夾名稱叫做 "image"。然而,使用 FCKeditor 的「上傳」面版上傳檔案之後,它將把上傳的影像檔存入 "Image"(資料夾首字母大寫)的路徑之下。
Windows 作業系統不區分大小寫,所以不會發生問題,但是 Linux/Unix 系統會區分,因而出錯了。
請修改 FCKeditor 安裝路徑裡的 upload.php 檔,預設的安裝路徑如下:
C:\AppServ\www\fckeditor\editor\filemanager\upload\php
開啟之後,在大約第69行的位置可以找到底下這兩行敘述:
$arAllowed = $Config['AllowedExtensions'][$sType] ; $arDenied = $Config['DeniedExtensions'][$sType] ;
請在這兩行的下一行,加入底下的敘述,透過 PHP 的「把英文字母轉換成小寫」strtolower() 函數,將資料夾路徑名稱轉成小寫:
$sType = strtolower($sType);
修改完畢後存檔,就能解決這個問題了。
[2008.5.20補充] 修正身份證號碼尾碼為 0 時的驗證錯誤
依據「使用JavaScript驗證身份證號碼及其原理」這篇文章的網友Gary回應,該驗證程式無法正確盼讀身份證號碼尾碼為 0 的情況,請將書本光碟 "www\bbs" 資料夾裡的 checkID.txt 檔,替換成底下的程式,謝謝!
// 自訂身份證驗證程式 function checkID(idStr){ // 依照字母的編號排列,存入陣列備用。 var letters = new Array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'W', 'Z', 'I', 'O'); // 儲存各個乘數 var multiply = new Array(1, 9, 8, 7, 6, 5, 4, 3, 2, 1); var nums = new Array(2); var firstChar; var firstNum; var lastNum; var total = 0; // 撰寫「正規表達式」。第一個字為英文字母, // 第二個字為1或2,後面跟著8個數字,不分大小寫。 var regExpID=/^[a-z](1|2)\d{8}$/i; // 使用「正規表達式」檢驗格式 if (idStr.search(regExpID)==-1) { // 基本格式錯誤 return false; } else { // 取出第一個字元,和最後一個數字。 firstChar = idStr.charAt(0).toUpperCase(); lastNum = idStr.charAt(9); } // 找出第一個字母對應的數字,並轉換成兩位數數字。 for (var i=0; i< 26; i++) { if (firstChar == letters[i]) { firstNum = i + 10; nums[0] = Math.floor(firstNum / 10); nums[1] = firstNum - (nums[0] * 10); break; } } // 執行加總計算 for(var i=0; i<multiply.length; i++){ if (i<2) { total += nums[i] * multiply[i]; } else { total += parseInt(idStr.charAt(i-1)) * multiply[i]; } } // 和最後一個數字比對 // 規則一:餘數為零,且檢查碼需為零 if (lastNum == 0 && (total % 10) != lastNum ){ alert("身份證號碼寫錯了!"); return false; } // 規則二:餘數與檢查碼需相符 if (lastNum != 0 && (10 - (total % 10))!= lastNum) { alert("身份證號碼寫錯了!"); return false; } return true; }
9-56頁:最後將此PHP命名為checkUser.php儲存.—->userchecker.php
謝謝您找出錯誤 😉
感激老師的書~讓我受益良多~
從未接觸過javascript的我在一開始”更換圖像” 03-45 的部分就卡住了!
我都按照書上的指示建立完程式碼要瀏覽的時候,卻出現錯誤!
瀏覽器指示”需要物件” 不知道該如何解決,謝謝老師!
hi 卡文:
請把你製作的網頁寄到我的信箱,我再幫你看看,謝謝!
:cry:老師您好!您書中提到的FCKeditor有介紹上傳設定,但為什麼總是出現Invalid file,另外新版FCKeditor 2.51的設定是否有點不同呢?以上謝謝
hi arc:
請問你是在Windows上測試的嗎?
請檢查fckeditor安裝路徑底下的 \editor\filemanager\upload\php 裡面,config.php 檔案的設定是否如下(請參閱書本8-42頁說明):
$Config[‘UseFileType’] = true; // 原本是false
// ‘uploads’是存放上傳檔的資料夾
$Config[‘UserFilesPath’] = ‘/uploads/’;
// 允許上傳的圖檔副檔名
$Config[‘AllowedExtensions’][‘Image’] = array(‘jpg’,’gif’,’jpeg’,’png’) ;
另外,在uploads資料夾裡面,請再分別建立 Image 和 Flash 資料夾,分別用來存放上傳的影像和Flash (.swf) 檔。
jeffrey
:cry:老師您好!我是用windows的IE7.0!我是成功了!不過又出現另一個問題了!我的圖片可以上傳成功!但卻只有數據!圖沒有真正傳上去呢(呈現”X”)!是不是我哪裡還需要調整!我都檢查過了跟老師書上寫的一樣阿!檔名也是沒有用中文阿!真的苦惱!另外請問老師您有在哪間大學的研究所授課嗎?
請問uploads資料夾裡面有沒有圖片?我目前並沒有在學校兼課。
:sad:uploads老師您好!資料夾裡面沒有圖片!(只有在fckeditor上傳介面上面看到數據但圖片是出現”X”沒顯示圖片),我去看過uploads資料夾內的Image也並沒有圖片!苦惱阿!
hi arc:
如果直接用書本光碟裡面,已完成的程式碼直接覆蓋,仍舊無法正常運作的話,請將fckeditor資料夾壓縮之後e-mail給我看看,謝謝!
jeffrey
老師您好!
我用OK檔案並把資料匯入資料庫…..一切都OK!資料可以正常讀出!
不過我在用來做OK檔作測試您書中所講的每個章節.在替換圖像的部份.會出現沒法替換的現象.因為你OK檔的替換圖像連結是”換圖”.所以我也照您書中所提改成”#”.結果一樣沒法換圖!
然後在script language的地方.跟書中的完成說明也不一樣,所以也是著改成一樣.可是一樣不行!
我想請教CD裡面的OK檔是您的範例完整的完成檔展示?還是需做什麼修改嗎?
因為那些Spry功能一樣沒效果!!
我也把書中CSS樣式表匯入連結了….一樣不行咧!
hi gordon您好:
抱歉造成您的困擾,OK資料夾裡的guestbook/index.htm檔裡的JavaScript程式,使用了一個叫做“Prototype”的JavaScript程式庫的語法,但是後來我沒有用這個程式庫,卻忘了修改程式碼。
請將swapImg()函數中的這兩行:
$(“myIcon”).src=fullPath;
$(“icon”).value=fileName;
改成3-46頁所列舉的程式:
document.getElementById(“myIcon”).src = fullPath;
document.getElementById(“icon”).src = fileName;
至於Spry程式庫沒有作用,可能是因為您忘了把 “SpryAssets” 資料夾複製到www路徑。
再次感謝您的指正!
jeffrey
對了,超連結標籤的網址(href)屬性,設定成”換圖”或其他文字並不會影響到程式的運作,因為該連結的JavaScript程式具有”return false”敘述,代表「取消連結」的意思,所以瀏覽器不會換頁。
相關的範例說明請參閱:「 使用JavaScript 程式操控瀏覽器視窗(一)」這篇文章。
老師您好!
這次OK了!
不過你這裡打得不對:
document.getElementById(”myIcon”).src = fullPath;
document.getElementById(”icon”).src = fileName;
要這樣子才行:
document.getElementById(“myIcon”).src = fullPath;
document.getElementById(“icon”).src = fileName;
“myIcon”
這留言板有限字數嗎?
我發現我上篇打的字少了一半???
那ㄟ安ㄋㄟ???:???:
字數確實有限制 😐
各位大哥
幫忙一下我也卡在swapImg()函數中,
到底要怎麼打
可否幫幫忙
document.getElementById(”myIcon”).src = fullPath;
document.getElementById(”icon”).src = fileName;
是這樣嗎?
謝謝
hi lai,
swapImg()函數如下:
// 切換圖片的程式
function swapImg (linkObj) {
var fullPath = linkObj.childNodes[0].src;
var fileName = fullPath.substring(fullPath.lastIndexOf(“/”) + 1, fullPath.length);
document.getElementById(“myIcon”).src = fullPath;
document.getElementById(“icon”).src = fileName;
}
請剪貼上面的程式,取代原本的函數,並重新替換其中的雙引號。稍後我將放上更新檔,謝謝!
感恩 !!
可以了….
原來我一個英文字打錯了0與o:razz:
多謝cubie 老師
不客氣 🙂
老師你好:
我在測試第九章的註冊頁面驗證時
不論怎麼測試,都會顯示”名字已註冊”
而且我用的是ok資料夾裡的檔案!!
可否幫幫忙
hi jason:
抱歉,是我錯了…資料庫的連線設定和資料表的名字寫錯了。請透過底下的連結下載修正後的檔案:
https://swf.com.tw/files/PHP/userchecker.zip
稍後我再放上說明,謝謝!
jeffrey
謝謝老師這麼快就把答案貼上來!!
這本書讓我獲益良多…
很期待老師能再針對php寫些新書!!
我和’are君’一樣無法上傳檔案,
在書本ajax文中上傳程式也測試過,
無法上傳
但用其他電子相薄,是可以上傳的
咦…?請檢查一下這兩個config.php檔裡的「上傳資料夾」是否設定正確:
C:\AppServ\www\fckeditor\editor\filemanager\browser\default\connectors\php\config.php
C:\AppServ\www\fckeditor\editor\filemanager\upload\php\config.php
然後在www目錄裡面,新增一個存放上傳檔的資料夾,例如:uploads。
仍然無法上傳
http://sample5.uhknet.net/addNews.php
http://sample5.uhknet.net/uploads
hi ken:
剛剛測試過了,因為你的伺服器是Linux/Unix系統,會區分大小寫。檔案其實有上傳,但是fckeditor把包含上傳檔的 “images” 路徑寫成 “Images”,所以才找不到檔案。請參閱本頁內文底下的補充說明,謝謝!
jeffrey
ok 啦:razz:
謝謝!!
在書中的upload.php方式
我仍然冇法上傳
會否關於php4.XX以上
或php.ini setting 問題?
在書中的upload.php方式
我仍然冇法上傳
http://sample5.uhknet.net/upload.htm
😳
hi ken:
CD Album的上傳網頁,需要從addCD.php裡的「上傳圖片」超連結啟動。預設網址:
http://localhost/ok/albums/admin/addCD.php
請再測試看看,謝謝!
jeffrey
想請教一下我用的是我使用fckeditor2.6版,且使用fckeditor上傳介面上傳圖片時,圖片有傳至指定目錄但無法轉到預視的視窗中,在ie狀態列出現”已完成,但網頁發生錯誤”按驚嘆號出現一訊息為:行:32 錯誤:沒有使用權限
http://passport.bysocity.com/fckeditor/editor/filemanager/connectors/php/upload.php?Type=Image
測試環境:freebsd 請問是那有題問呢?謝謝。
想請教一下,我照書上9-47頁製作的身分證驗證,為何有些正確的身分證字號,會顯示格式錯誤呢?例如S222373260,這是我的身分證字號,確定是正確的,可不可以請問要如何解決呢?
我再檢查一下JavaScript程式碼,最慢今晚回報,謝謝!
非常感謝,要麻煩您檢查了,謝謝~~
hi kasumi,
請參閱上文的說明,修正光碟裡的程式,謝謝!
jeffrey
非常感謝您~~
fckeditor2.6上傳圖片後會做一段網域驗證,是那一段有問題,已參考http://www.mynetblog.cn/post/19.html解決,不過那是asp的,若是php在行282到行312暫時註解就可正常。
hi timmy:
謝謝您提供的資訊。
jeffrey
老師您可不可以教我們如何
將CKFinder整合至FCKeditor
老師您在8-40頁提到 啟用fckeditor的上傳圖片與上傳flash影片功能
那如果要上傳其他類型的檔案又該如何做呢?
hi 小廖:
FCKEditor僅提供上傳圖片和Flash影片功能,因為這個軟體的定位是「具備上傳圖片功能的文字編輯器」。如果需要增加其他圖像格式,可以修改 config.php 檔的這個設定:
$Config[‘AllowedExtensions’][‘Image’] = array(‘jpg’,’gif’,’jpeg’,’png’) ;
趙老師:
謝謝您這麼快就問答了我的問題!
趙老師您好:
在config.php裡有下面一段
// Allowed Resource Types.
$Config[‘ConfigAllowedTypes’] = array(‘File’, ‘Image’, ‘Flash’, ‘Media’) ;
這不是設定可以上傳的資料夾嗎?怎麼每次都只出現image及flash
而沒有出現file及media呢?
小廖:
FCKeditor的對話方塊,包含上傳影像和Flash影片在內的操作介面,都放在這個資料夾:fckeditor\editor\dialog。從這裡可以看到它並沒有 “file” 和 “media” 上傳介面。
雖然FCKeditor的官方設定檔包含 media 和 file 的設定,但據我瞭解,那沒有太大的用處。FCKeditor的主要功能是線上編輯器,如果你需要上傳一般檔案的功能,可以自行實作一個。
jeffrey
趙老師,您好!
想請教趙老師有關資料庫關和實作的問題,共有二個問題:
目前自己已做了會員系統,也做商品管理的功能。問題在商品管理部分,只要是會員都可以新增是沒有問題,但是在修改和刪除部分,只要是會員都可以修改和刪除所有商品。
以下為問題所在:
一、自己目前的想法,會員進入商品管理後,商品管理只列出該會員所新增過的商品,這樣的會就不有以上的問題。想把會員資料表(member)的會員帳號 (主鍵),加入商品資料表(product)中會員帳號變成書上寫的(外部鍵),以下是參考書上第六章「使用SQL查詢資料」內容整理的SQL資料查詢語法:
SELECT member.username, COUNT(product.pid) AS PtNo, (product.title) AS PtName, (product.price) AS PtPrice, (product.postdate) AS Ptpost
FROM member INNER JOIN product
ON member.username = product.username
GROUP BY product.pid, product.title, product.price, product.postdate
ORDER BY product.postdate DESC;
以上的想法和SQL資料查詢語法會不會有問題?
二、在Dreamweaver CS3大致做法,是不是要用新增資料集的方法,但是目前的商品管理已有資料集,如果再新增一個資料集會不會有問題,還有要如何去判斷登入的會員,然後只列出該會員的新增過的商品,就不會產生只要是登入的會員都能修改和刪除的問題。
以上二個問題麻煩懇請老師指教!
儲存會員資料的資料表,可以加入一個欄位,設定該會員的權限。例如,該欄位的值可以用 “admin”(管理員), “sysop”(系統管理員), “mandator”(版主)以及”user”(一般用戶)等字串值,來代表該用戶的權限。
編輯或者刪除資料的PHP網頁,可以透過這個欄位值來判斷用戶是否具有操作的權限。
感謝趙老師抽空回覆!但是老師提出的方法,還是不能解決在下提出的問題。因為老師的方法是解決權限問題,這部分已經實作完成,問題在於商品管理如果「權限同樣都是會員」的情況之下,要如何辦別各個會員自己所新增的商品,而呈現方式是列出該會員自己新增的商品,而且能對商品做修改、刪除的動作。換句話說,每位會員在商品管理中,只會看到自己新增的商品,並且能對商品做修改、刪除的動作,但是不能看到其他會員的商品管理的商品。
為了怕老師不明白在下描述,例:以 yahoo的拍賣來說,每位會員(同是一樣的權限)可以新增拍賣,在”拍賣管理(商品管理)”中,每位會員只會看見自己新增拍賣的物品有哪(不會看到別人的拍賣管理中新增的商品),並且可以對這些拍賣的物品做更新(修改),或者是取消(刪除)拍賣的物品的動作」。
對趙老師感到抱歉,在下對問題沒有敘述清楚,麻煩請趙老師再次指教!
你可以在商品的資料表加入會員編號或者其他唯一識別會員的欄位,讀取或者編輯商品資料時,就能僅讀取屬於該會員的商品了。
趙老師,在下經過今天的實作還是不行,下面是個人操作:
會員資料表的會員編號為(m_id)所以在商品的資料表也新一個欄位會員編號(m_id),其操作欄位”m_id”型態”int(11)” Null為”是”預設值”NULL”。
之後在新增商品頁面,點了繫結->資料集->設定名稱、連線、資料表,欄位全選,篩選器->無,按下確定。
然後在伺服器行為->插入記錄,欄:m_id顯示沒有取得值。值:無,按下確定
完成以上步驟後,進行測試,先用甲的帳號登入商品管理新增商品,再用乙帳號登入商品管理結果可以看見甲帳號商品管理的商品,另外在資料庫的商品資料表的會員編號(m_id)欄位是空的。
以上的登入頁面、商品管理頁面、商品新增頁面,都有設定限制存取頁面。
請教老師,在下哪邊程序出了問題,懇請老師指點。