2014-02-18 25 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