歡迎大家分享自己用的MVC架構或是推薦我好用的framework)
最近接了些學校的工讀,每次都要重寫一樣的東西讓我覺得非常厭煩
其實大部分的網頁需求都是一個CRUD平台 只是看這四個功能是使用者還是管理者來用而已
以前寫PHP的時候,會用PHP混雜HTML的方式寫
像是:
<?php $sql="SELECT * FROM `table`"; $result=mysql_query($sql,$conn); $row=mysql_fetch_row($result); ?> <td> <input type="input" name="id" value="<?php echo $row[0]; ?"> </input> </td>這樣的程式除了維護比較困難之外
如果要寫類似的功能,會因為要改一個小地方就要全部重寫,很不划算
這時候就想到之前學的MVC(Model–View–Controller)
Model: 在這裡可以看成是取得的資料,就是從資料庫query出來的資料
Controller: control在這裡我解釋成用js呼叫底層PHP抓取資料的動作,所以js是controller
View: html的呈現
定義完了,我們看看實作上怎麼做
這邊拿Read當例子:
首先是model的部分(get_table.php)
$sql = "SELECT * FROM `table`"; $result = mysql_query($sql,$conn); $i=0; while($row = mysql_fetch_row($result)) { $output[$i]["id"] = $row[0]; $output[$i]["name"] = $row[1]; $i++; } echo json_encode($output);這樣就會從一個名為"table"的資料表中撈出兩個欄位(id,name)並把他們封裝成JSON格式
再來是view部分,用html畫出一個表格:
<form id="input_form" action="add_table.php" method="POST"> <table id="input_table" border="1"> <thead> <tr> <th>ID</th> <th>NAME</th> </tr> </thead> <tbody> </tbody> <tfoot> <tr> <td><input type="input" name="id"></input></td> <td><input type="input" name="name"></input></td> <td><input type="submit" value="新增"></input></td> </tr> </tfoot> </table> </form>可以注意到這邊留了一個form,等等的add_table.php會用到
最後是control部分:
function insert_table(items) { $.each(items,function(index,e){ $('#input_table tbody').append("<tr>" + "<td>" + e.id + "</td>" + "<td>" + e.name + "</td>" + "</tr>" ); }); } $.getJSON('get_table.php', function(data){ insert_table(data); });這裡用了jquery,把拿到的資料塞到剛剛的html裡面,完成controller部分
到這裡,就完成了簡單的list介面
也可以由此看看我的MVC架構邏輯
就是以js做controller操控身為model的PHP程式,取得資料後,再塞資料到做為view的html上
這就是我目前用的web MVC架構
歡迎各位大大糾正我這樣子做的缺點
也歡迎大家分享自己使用的架構
2 則留言:
新增資料的部份,我會考慮用比較無腦的方法,json用來回傳成功或錯誤 成功就用jquery重load table,錯誤就print 錯誤訊息。這樣雖然request會比較多、傳的資料量會比較大,但是如果想要拿來重複利用的話,就不用每次都去修改傳啥資料了,如果再考慮到加上分頁功能的話,這個方法會更省事~~。
你的意思是用jquery傳資料而不是用直接用html form嗎?
我有試過這個方法,只是後來覺得用form寫起來比較省事而已
張貼留言