2011-10-20 126 views
1

問題我在自定義儀表板single_page與數據庫正確交互時遇到了一些麻煩。Concrete5自定義儀表板single_page /管理面板

截圖:http://i54.tinypic.com/2lvh45d.jpg

見證代碼(single_pages /儀表板/ testimonials.php):http://pastebin.com/PK4ziRih

newTestimonials.php代碼:

<?php 
defined('C5_EXECUTE') or die("Access Denied."); 
$testimonial_name = $_POST['testimonial_name']; 
$testimonial_content = $_POST['testimonial_content']; 
$url = "http://www.eurofloors.co.nz/dashboard/testimonials/"; 

$con = mysql_connect('localhost', 'username', 'password'); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("eurofloo_website", $con); 

$sql = "INSERT INTO testimonials (id, name, content) VALUES " . $testimonial_name . $testimonial_content; 

mysql_query($sql); 

/* Redirect browser */ 
header("Location:" .$url); 
/* Make sure that code below does not get executed when we redirect. */ 
exit; 
?> 

save_testimonials.php代碼:

<?php 
defined('C5_EXECUTE') or die("Access Denied."); 

$existing_testimonials_update = $_POST['data']; 

$con = mysql_connect('localhost', 'username', 'password'); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("eurofloo_website", $con); 

$sql = "INSERT INTO testimonials VALUES " . $existing_testimonials_update; 

$result = mysql_query($sql); 


mysql_close($con); 

?> 

我的問題與thi當我提交新的推薦形式或點擊保存在底部的數據網格上時。我得到了Page Not Found錯誤,因爲concrete5似乎無法看到在窗體的action屬性中設置的php文件。 爲什麼會出現這種情況,或者是因爲我沒有使用MVC方法,是否有明顯的原因?

請問您能指點正確的方向嗎? 我正在尋找的主要事情是某些文檔的控制器&模型語法的數據庫交互和表單數據處理的例子。

任何意見或資源給予非常感謝。

ps:我對PHP還是比較陌生,所以我可能會以錯誤的方式接近代碼。

回答

1

啊......是的,如果你嘗試解決路由系統Concrete5已經存在的問題(不幸的是,你可能會遇到一些痛苦)。 我強烈建議閱讀本「如何做」的文檔中:

http://www.concrete5.org/documentation/how-tos/developers/build-a-single-page-powered-editing-interface-for-concrete5/

當你說你是新來的PHP,你是新的網頁設計一般,或者是你已經熟悉其他語言和MVC框架?如果是後者,那麼我會告誡,在上面的文章中會發生一件非常醜陋的事情,其中​​控制器操作的不同視圖都在一個視圖文件中,並用一個大的「if」語句分隔開來。如果這讓我的感受像我的感覺一樣,我已經想出了一種更好的工作方式,讓我知道你是否想看到這一點。 [編輯:見https://github.com/jordanlev/c5_boilerplate_crud更好的技術。它可以在Concrete5.5.0或更高版本上即裝即用。如果您遇到5.4.x的問題,可以將此修補程序應用於您的系統以使其正常工作:https://github.com/concrete5/concrete5/pull/147/files]。如果你是一般的編程新手,你可以完全忽略這一段,因爲它沒什麼意義:)

至於你使用的數據庫代碼,如果你正在與Concrete5數據庫交互,不要「T使用所有的mysql_connect東西 - C5已經建立數據庫連接,它使用的ADODB庫與它對接,就像這樣:

$db = Loader::db(); 
$sql = "INSERT INTO testimonials (name, content) VALUES ?, ?"; 
$vars = array($testimonial_name, $testimonial_content); 
$db->query($sql, $vars); 

注意,我從列表中漏掉了‘身份證’你的插入語句的字段 - 我猜這個id是MySQL表中的一個自動增加的主鍵字段,這意味着你不需要插入任何東西(數據庫會神奇地創建它自己的數字)。這是一個普通的MySQL的東西,順便說一句 - 與C5沒有任何關係。

如果你想連接到一個不同數據庫,那麼「裝載機」代碼會略有不同 - 見「連接到其它數據庫」部分在此頁上:http://www.concrete5.org/documentation/developers/system/database-connectivity(特別注意在最後一行那裏的示例代碼會在完成時重置連接 - 您必須必須才能完成此操作,否則在您的自定義代碼運行後,Concrete5將慘敗)。

祝你好運!