2008年6月18日 星期三

在 JavaScript中 實現 TextArea 的任一游標處插入文字的功能

<HTML>
<HEAD>
<SCRIPT>
function storeCaret (textEl) {
if (textEl.createTextRange)
textEl.caretPos = document.selection.createRange().duplicate();
}
function insertAtCaret (textEl, text) {
if (textEl.createTextRange && textEl.caretPos) {
var caretPos = textEl.caretPos;
caretPos.text =
caretPos.text.charAt(caretPos.text.length - 1) == ' ' ?
text + ' ' : text;
}
else
textEl.value  = text;
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="aForm">
<TEXTAREA NAME="TextArea1" ROWS="5" COLS="80" WRAP="soft"
ONSELECT= "storeCaret(this);"
ONCLICK= "storeCaret(this);"
ONKEYUP= "storeCaret(this);"
>
請輸入任意內容.
</TEXTAREA>
<BR>
<INPUT TYPE="text" NAME="aText" SIZE="80" VALUE="Mars,加油!">
<BR>
<INPUT TYPE="button" VALUE="插入" ONCLICK="insertAtCaret(this.form.TextArea1, this.form.aText.value);">
</FORM>
</BODY>
</HTML>


出處:如何在 TextArea 中,任一游標處插入文字

2008年6月13日 星期五

PHP 下載檔案時, 無法直接開啟文件的解法方法

在php網站程式寫作上, 需使用下載檔案,

一般都是用 header 來下載檔案, 如下所示

header("Content-length: ".$row->file_size);
header("Content-Disposition: attachment; filename=".$filename);
print($row->filedata);


但通常必需先儲存後再開啟,
不然會出現錯誤, 因需無法直接開啟文件

若要直接開啟文件

需加幾個語法, 如下所示

ob_start();

header("Cache-Control: cache, must-revalidate");

header("Content-length: ".$row->file_size);
header("Content-Disposition: attachment; filename=".$filename);
print($row->filedata);

ob_flush();

PHP 上傳檔案並寫入MySQL 出現 MySQL server has gone away

如果你向伺服器發送不正確或太大的查詢
你可能得到[MySQL server has gone away]錯誤。

如果mysqld得到一個太大或不正常的packet,它認為客戶出錯了並關閉連接。
所以你需要較大的查詢(例如,如果你正在處理較大的BLOB列)時,

你可以使用 -O max_allowed_packet=#

重新啟動mysqld以增加查詢限制。

需分配多餘的記憶體,這樣mysqld只有在你使用較大差詢時或mysqld必須返回較大的結果行時,才能使用更多的記憶體!


以下為修改方式

打開my.ini 找到[mysqld]這一行,下方添加

[mysqld]
#擴大緩衝區
max_allowed_packet=16M

SAVE後,重啟mysql