2014-02-18 27 views
0

爲什麼這不起作用?在表單的動作屬性中內聯php腳本

<form action="<?php echo 'test'; ?>"><input type="submit"></form> 

爲什麼是它呼應「測試」,我需要的PHP放到一個單獨的文件,並action屬性指向它?如果我有多個PHP短腳本的表單,我能不能簡單地將它們內聯到某種程度來執行任務,而不是讓許多外部文件這樣做?

我的意圖是有一種控制面板對數據庫進行不同類型的更改。

+0

如何解釋爲什麼這是一個糟糕的問題,而不是downvoting?沒有重複的問題,提供的示例代碼,你還想要什麼? – user3226844

回答

1

您不能在動作屬性中放置代碼,這根本不是HTML的工作原理。

<form action="index.php"> 
<input type="hidden" name="do" value="dotest"> 

您需要在您的應用程序分派任務路由器。在這種情況下,「do」查詢參數將決定要做什麼。該代碼可以是一個大開關語句(不推薦),也可以將這些動作存儲在單獨的文件/類/類方法中。您可以直接查找代碼(file_exists/method_exists /自動加載...)或者您可以將查找分離並進行某種預註冊並將操作存儲在字典中(array)。

我會推薦檢查一些PHP框架也得到一些想法。那裏有一些非常聰明的路由器和控制器抽象。這會比你想象的要好,尤其是如果你沒有經驗。

注意:許多小文件沒有問題 - 只是嘗試爲您的Web應用程序使用單個入口點。

+0

我沒有外部文件。這就是我想要避免的。我不想要10個文件只有3或4行,如果我可以將它們放在與我看到的表單 – user3226844

+0

相同的文件中。更新。 –

0

因爲瀏覽器不會關心PHP。瀏覽器收到此HTML時:

<form action="<?php echo 'test'; ?>"><input type="submit"></form> 

它應該怎麼做?只需「運行PHP」?您的意思是在您的服務器上設置並配置了的PHP?不,這根本不是它的工作原理。

HTML規範說action屬性指向一個URL瀏覽器將發送表單數據到。然後完全由該URL處的服務器來完成,並且這就是PHP運行的地方。

您不需要單獨的物理文件,您可以將所有表單提交到同一個PHP文件/ URL,然後根據這些文件找出它接收到的內容並輸出不同的內容。您也可能想要查看Javascript和AJAX請求。

+0

那麼是否有其他方法可以製作多個PHP文件?我可以將PHP放在頁面頂部的同一個文件中,然後讓操作指向同一頁面? – user3226844

+0

是的,確切地說。沒有人說它需要成爲單獨的文件。它只需要是一個URL,服務器可以用任何想要的迴應。它甚至可以是表單所在的URL。 – deceze

+0

然後,我會給你一個鏡頭。 – user3226844