簡體   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