当我使用html <form>
action属性时,我在尝试调用函数时遇到了困难。
$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>");
}
正如您所看到的,我正试图为action属性运行代码$cm->checkOutCustomer($row['last_name'],$row['first_name'])
。
代码在我的echo之后的第一行运行良好,但是当我将其粘贴为动作时,似乎有$cm
的语法问题。
请告诉我是什么问题,非常感谢!
如果您希望在提交表单时执行checkOutCustomer
方法,那么它不是正确的实现方式。您需要在action属性中指定url。表单将被提交到这个url,在这里您可以访问表单字段作为$_POST或$_GET超全局变量的元素(取决于方法),然后处理它们。
但是如果这个方法checkOutCustomer
返回一个url,你想把它设置为表单的action属性,那么
代替
"<form action="$cm->checkOutCustomer($row['last_name'],$row['first_name']);">".
试
"<form action=" . $cm->checkOutCustomer($row['last_name'],$row['first_name']) . ">".
我不明白为什么@sdleihssirhc的答案在正确的时候被否决了,而错误的答案却得到了支持。PHP是在服务器端评估的,HTML是由浏览器处理的。这意味着您的代码当前检出列出的每个用户。不是你想要的?我不这么认为。
action
属性是NOT用于在提交上执行服务器端函数。您希望将其设置为PHP文件,并让该PHP文件执行处理。试着再复习一遍HTML表单的基础知识,因为你似乎不懂。
也试着创建一个Customer
类,只添加一个$customer->checkout()
方法,只搜索活跃的客户记录(即未检出)并显示这些信息。然后输入$customer = new Customer($roomNo, $info ...)
和$customer->checkIn()
这对维护系统的人来说更有意义。不管怎样,在我看来,你是在尝试创建一个酒店管理系统。PHP不是最适合手头工作的语言,不要给任何"我只知道一门语言"的废话——学习一些适合任务的语言,因为缺乏知识不是为手头工作选择一门糟糕语言的借口。
,
我不会给任何工作代码,除了小的东西或指针-你必须学习,而不是让别人做,只是复制/粘贴。
PHP由服务器计算。
HTML由客户端解释。
两者永不会相遇。
有两个选项:
-
将函数移动到单独的页面。将表单的动作设置为该页面。这将需要一些重定向,将用户发送回包含所有表行的页面。
-
将函数移动到单独的页面。使用JavaScript取消表单的提交,然后使用AJAX将数据发送到单独的页面。这有点糟糕,因为你必须处理跨浏览器事件和AJAX,所以我建议使用jQuery之类的库。
这一行不对。
"<form action="$cm->checkOutCustomer($row['last_name'],$row['first_name']);">".
应该可以。
"<form action=" . $cm->checkOutCustomer($row['last_name'],$row['first_name']) . ">" .
看起来只是复制粘贴错误。