繁体   English   中英

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

[英]How to call a php function with html <form> action attribute?

嗨伙计们,当我使用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'])

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

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

如果你想在提交表单时执行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']) . ">".

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

action属性用于在提交时执行服务器端功能。 您想将其设置为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']) . ">" .

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM