[英]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由客戶端解釋。
兩個人永遠不會見面。
有兩種選擇:
將您的功能移動到單獨的頁面。 將表單的操作設置為該頁面。 這將需要一些重定向,將用戶發送回包含所有表行的頁面。
將您的功能移動到單獨的頁面。 使用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.