如何使用 html 操作属性调用 php 函数<form>?



当我使用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由客户端解释。

两者永不会相遇。

有两个选项:

  1. 将函数移动到单独的页面。将表单的动作设置为该页面。这将需要一些重定向,将用户发送回包含所有表行的页面。

  2. 将函数移动到单独的页面。使用JavaScript取消表单的提交,然后使用AJAX将数据发送到单独的页面。这有点糟糕,因为你必须处理跨浏览器事件和AJAX,所以我建议使用jQuery之类的库。

这一行不对。

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

应该可以。

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

看起来只是复制粘贴错误。

相关内容

最新更新