PHP 板


LINE

看板 PHP  RSS
※ 引述《NUKnigel (簡簡單單)》之銘言: : 今天第一次碰php & mysql : 但剛剛忙了一個早上 : 發現如果用xhtml的方法來表示 table : 會無法顯示 @@ : 但是一改成html就成功顯示... : 是我的方法錯誤...還是php 和 xhtml本來就不相容呢? 方法錯誤。PHP和 XHTML是不同層面的技術;XHTML 只是 種資料的表現方式,若 PHP的輸出符合 XHTML 的格式, 便不會有相容性上的問題。 請看下面的 code : echo "<table summary="教師資料">"; 上頭有個基本、但不小心卻容易忽略的"脫序"問題。 我想 PHP 解析器應該會跟你抱怨看不懂程式碼。 正確的輸出格式應為 "<table summary=\"教師資料\">"; // A 或是 '<table summary="教師資料">'; // B 或 "<table summary='教師資料'>"; // C 一般我偏好使用 B 的方式,因為 xhtml規格中,我記得有定義 屬性的值以 " quote。 另外,像你這邊有另外一種寫法可以參考: ------------------------------------------------------ <?php // $link =... // ... // 資料庫的連結. (略) ?> <!-- 以下為原本用 echo 輸出 html 的內容 --> <table summary="教師資料"> <colgroup span="1"></colgroup> <!-- 略 --> <thead> <tr> <th scope="col">product_id</th>; <!-- 略 --> <!-- 重點來了 :) --> <!-- 如果 php.ini 的 short_open_tag = off 那麼底下用 <? 的地方需改為 <?php <?= 則改為 <?php echo .. 這麼一來有點囉唆,所以還是開一下吧 :P --> <? while($row = mysql_fetch_array($result)): ?> <tr> <td><?=$row['product_id']?></td> <td><?=$row['product_name']?></td> <!-- 略 --> </tr> <? endwhile ?> </tbody> </table> <?php // 回到 php 中 mysql_free_result($result); ?> ------------------------------------------------------ 用上述的寫法有幾個好處: 1. 得到的 HTML是原生的(省掉一些針對 html 原始碼的縮排和脫序) 2. 即便 HTML和 PHP混在一起,還是能使程式碼簡潔 3. HTML的內容如果很複雜,如此編寫方式相對方便檢視除錯 將輸出與程式邏輯分開,有助於提升整體的可維護性。如果曾經 接手別人寫的案子、或維護自己幾個月前寫的程式碼,應該會感 謝前頭有人種樹 XD 現在 Web Application 流行使用 Model-View-Control 的開發方 式。上述例子的編寫方式,其實隱含著相同的精神。 : code : ----------------------------- : <?php : $link = mysql_pconnect("localhost", "xxxxxx", ""); : mysql_select_db("shopping") or die("無法選擇資料庫"); : $query = "SELECT * FROM product"; : $result = mysql_query($query) or die("無法送出" . mysql_error( )); : echo "<table summary="教師資料">"; : echo "<colgroup span="1"></colgroup>"; : echo "<colgroup span="2"></colgroup>"; : echo "<colgroup span="3"></colgroup>"; : echo "<colgroup span="4"></colgroup>"; : echo "<colgroup span="5"></colgroup>"; : echo "<colgroup span="6"></colgroup>"; : echo "<thead>"; : echo "<tr>"; : echo "<th scope="col">product_id</th>"; : echo "<th scope="col">product_name</th>"; : echo "<th scope="col">price</th>"; : echo "<th scope="col">category</th>"; : echo "<th scope="col">product_family</th>"; : echo "<th scope="col">product_class</th>"; : echo "</tr>"; : echo "</thead>"; : echo "<tbody>"; : while ( $row = mysql_fetch_array($result) ){ : echo "<tr>"; : echo "<td scope="row">".$row['product_id']."</td>"; : echo "<td scope="row">".$row['product_name']."</td>"; : echo "<td scope="row">".$row['price']."</td>"; : echo "<td scope="row">".$row['category']."</td>"; : echo "<td scope="row">".$row['product_family']."</td>"; : echo "<td scope="row">".$row['product_class']."</td>"; : echo "</tr>"; : } : echo "</tbody></table>"; : mysql_free_result($result); : ?> -- 「640K ought to be enough for anybody.!」 - Bill Gates - --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.199.121
1F:→ foxzgerald:PS: <!-- 這是 html 中所使用的註解 --> 12/17 15:20
2F:推 superGA:我覺得用here document就差不多了 這樣寫有點累 12/17 15:31
3F:→ superGA:這種寫法很接近用Smarty了 不如直接用Smarty 12/17 15:32
4F:推 foxzgerald:看規模吧:P 若只是一兩千行的小作業,我覺得應該還過意 12/17 15:43
5F:→ foxzgerald:得去。而且 Smarty的 cache tunning如果沒弄好,網頁大 12/17 15:47
6F:→ foxzgerald:會慢到一種稍微不耐煩的境界 XD 12/17 15:48
7F:推 NUKnigel:謝謝^^"...因為學過C就直接想實做,果然會出錯( ̄□ ̄|||) 12/17 16:11
8F:推 NUKnigel:下面第二個重點~也受益良多^^這樣寫直觀多了~再次感謝 12/17 16:17
9F:推 foxzgerald:如果輸出內容需要邏輯控制. 用 here document 也會挺繁 12/18 14:31
10F:→ foxzgerald:瑣的;這種寫法和 smarty中的控制標籤類似,但是因為 12/18 14:32
11F:→ foxzgerald:smarty 最後還是把它解析成 php .. 而這種方式是直接以 12/18 14:34
12F:→ foxzgerald:php 控制,理論上效能應該會比較好一點 12/18 14:34







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP