| 經驗交流 |
|
|---|---|
|
使用者自定欲呈現的資料內容 | |
問題說明 | |
| 在通訊錄中有「暱稱」、「姓名」、「電話」、「行動電話」與「地址」等五個欄位的資料。使用者若只想查看部份欄位的內容,而非全部時,我們可以怎麼做呢? | |
我的做法 | |
| 我們必須先提供一個欄位勾選的介面,供使用者選取希望呈現的資料內容。 | |
|
...... <form name="DemoForm" action="X_18_demo2.php" onsubmit="return Final_Check( );"> 請勾選希望顯示的資料欄位: <input type="checkbox" name="item_1">暱稱 <input type="checkbox" name="item_2">姓名 <input type="checkbox" name="item_3">電話 <input type="checkbox" name="item_4">行動電話 <input type="checkbox" name="item_5">地址 <br><br> <input type="submit" name="toSubmit" value="確定"> </form> ...... | |
| 在這個範例中,我還加入了一項簡單的檢查,以確定使用者至少已勾選一個欄位。 | |
|
接下來,我們再依照使用者的選擇結果,顯示其所需的內容。 | |
|
...... <? // 依選取項目組合出 SQL 字串 $sql = "select "; if ( $item_1 == "on" ) $sql .= "nickname, "; if ( $item_2 == "on" ) $sql .= "realname, "; if ( $item_3 == "on" ) $sql .= "phone, "; if ( $item_4 == "on" ) $sql .= "m_phone, "; if ( $item_5 == "on" ) $sql .= "address "; // 若 sql 字串末尾有多餘的逗號時,去除之 if ( substr($sql, -2) == ", " ) $sql = substr($sql, 0, strlen($str)-2) . " "; $sql .= "from demo_friend "; ?> ...... | |
| 當五個欄位全被使用者勾選時,我們可以用 select nickname, realname, phone, m_phone, address from demo_friend 這段語法來查詢。但是,使用者不打算查閱所有欄位時,我們得將那部份給剔除掉。 | |
| 此外,若使用者未選取「地址」時,該 SQL 字串將成為 select nickname, realname, phone, m_phone, from demo_friend,在 m_phone 之後多了個逗號,所以要加上一個「去除多餘逗號」的程序。 | |
|
在顯示資料時,由於使用者選取的欄位數不固定,所以我們一次讀出整個資料列(ROW),再以 While 迴圈逐一讀取各個欄位的值: | |
|
...... <? $result = mysql_fetch_row($rs_f); while ( list($no, $content) = each($result) ) { echo "<td class='myFont_12W'>"; echo $content; echo "</td>"; } ?> ...... | |
|
| |
| 經驗交流 |
|


問題說明