如何使用html <form> action属性调用php函数?</form>

时间:2011-04-22 05:03:06

标签: php html action

大家好我在使用html <form>操作属性时尝试调用函数时遇到了困难。

$cm = new customer_module();
$rm = new room_module();

$c_array = $cm->getByStatus('CHECKED-IN');

foreach($c_array as $row)
{
    $temp = $row['room_no'];
    $r_array = $rm->getByRoomNumber($temp);
    $rray = $r_array[0];
    echo( 
    $cm->checkOutCustomer($row['last_name'],$row['first_name']).
    "<tr>".
    "<td>".$row['room_no'].     "</td>".
    "<td>".$rray['type'].       "</td>".
    "<td>".$row['last_name'].   "</td>".
    "<td>".$row['first_name'].  "</td>".
    "<td>".$row['phone_no'].    "</td>".
    "<form action="$cm->checkOutCustomer($row['last_name'],$row['first_name']);">".
    "<td>"."<Button>Check Out</button>"."</td>".
    "</form>".
    //"<td>"."<input type='button' name='checkingOut' value='Check Out' />"."</td>".
    "</tr>");
}

如您所见,我正在尝试为操作属性运行代码$cm->checkOutCustomer($row['last_name'],$row['first_name'])

我的echo之后第一行的代码运行正常,但是当我粘贴它以进行操作时,似乎$cm存在语法问题。

请告诉我问题是什么,非常感谢!

4 个答案:

答案 0 :(得分:3)

如果您希望在提交表单时执行checkOutCustomer方法,那么它不是正确的实现方式。您需要在action属性中指定url。表单将提交到此url,您可以在其中访问表单字段作为$ _POST或$ _GET超级全局变量的元素(取决于方法),然后处理它们。

但是如果此方法checkOutCustomer返回您想要设置为表单的action属性的url,那么

而不是

"<form action="$cm->checkOutCustomer($row['last_name'],$row['first_name']);">".

尝试

"<form action=" . $cm->checkOutCustomer($row['last_name'],$row['first_name']) . ">".

答案 1 :(得分:1)

我不明白为什么@ sdleihssirhc的答案在正确的时候被拒绝了,错误的答案得到了回报。 PHP在服务器端进行评估 - HTML由浏览器处理。这意味着您的代码当前会检查列出的每个用户。不是你想要的?不这么认为。

action属性为,用于在提交时执行服务器端功能。您想将其设置为PHP文件并让该PHP文件进行处理。尝试再次浏览HTML表单的基础知识,因为您似乎并不理解。

还尝试创建一个Customer类,只需添加一个$customer->checkout()方法,然后只搜索活动客户记录(即未检出)并显示其中的信息。然后执行$customer = new Customer($roomNo, $info ...)然后$customer->checkIn()

之类的操作

维护系统的人更有意义。无论如何,从我所看到的,你正试图建立一个酒店管理系统。 PHP不是适合手头工作的最适合的语言,并且给出任何“我知道的语言”废话 - 学习适合任务的东西,因为缺乏知识不是借口为手头的工作选择一种糟糕的语言。

-

不会提供任何工作代码,除了小东西或指针 - 你必须学习,而不是让其他人做只需复制/粘贴。

答案 2 :(得分:0)

PHP由服务器评估。

HTML由客户端解释。

这两个人永远不会见面。

有两种选择:

  1. 将您的功能移至单独的页面。将表单的操作设置为该页面。这需要一些重定向,将用户发送回包含所有表行的页面。

  2. 将您的功能移至单独的页面。使用JavaScript取消表单的提交,然后使用AJAX将数据发送到该单独的页面。这种情况很糟糕,因为你必须处理跨浏览器事件和AJAX,所以我建议使用像jQuery这样的库。

答案 3 :(得分:0)

这条线错了。

"<form action="$cm->checkOutCustomer($row['last_name'],$row['first_name']);">".

这应该有用。

"<form action=" . $cm->checkOutCustomer($row['last_name'],$row['first_name']) . ">" .

看起来像是一个复制和粘贴错误。