2013-03-18 73 views
1

我想在表單動作中調用php函數,我想通過id作爲參數。我所做的是,在html表格數據庫中列值將顯示在文本框中,如果我編輯這些值並單擊'更新'按鈕,數據庫中的值應該更新並且'記錄更新成功'消息應顯示在同一頁面中。我嘗試了下面的代碼,但不工作。讓我知道解決方案。提前致謝。如何從html表單動作調用php函數?

<html> 

    <head> 

     <link rel="stylesheet" type="text/css" href="cms_style.css">   


    </head> 

    <?php 
     $ResumeID = $_GET['id']; 
     $con = mysql_connect("localhost", "root", ""); 
     mysql_select_db("engg",$con); 
     $sql="SELECT * from data WHERE ResumeID=$ResumeID"; 
     $result = mysql_query($sql); 
     $Row=mysql_fetch_row($result); 

     function updateRecord() 
     { 

      //If(!isset($_GET['id']))  
      //{ 
       $NameoftheCandidate=$_POST[NameoftheCandidate]; 
       $TelephoneNo=$_POST[TelephoneNo]; 
       $Email=$_POST[Email]; 

     $sql="UPDATE data SET NameoftheCandidate='$_POST[NameoftheCandidate]',   TelephoneNo='$_POST[TelephoneNo]', Email='$_POST[Email]' WHERE ResumeID=$ResumeID "; 

      if(mysql_query($sql)) 
       echo "<p>Record updated Successfully</p>"; 
      else 
       echo "<p>Record update failed</p>"; 



      while ($Row=mysql_fetch_array($result))  { 
       echo ("<td>$Row[ResumeID]</td>"); 

       echo ("<td>$Row[NameoftheCandidate]</td>"); 
       echo ("<td>$Row[TelephoneNo]</td>"); 
       echo ("<td>$Row[Email]</td>"); 
      } // end of while 

     } // end of update function 


    ?> 

    <body> 
     <h2 align="center">Update the Record</h2> 

     <form align="center" action="updateRecord()" method="post"> 
      <table align="center"> 
       <input type="hidden" name="resumeid" value="<? echo "$Row[1]"?>"> 
      <? echo "<tr> <td> Resume ID </td> <td>$Row[1]</td> </tr>" ?>      

     <div align="center"> 
     <tr>  
     <td> Name of the Candidate</td> 
    <td><input type="text" name="NameoftheCandidate" 
size="25" value="<? echo "$Row[0]"?  >"></td> 
     </tr> 

     <tr> 
    <td>TelephoneNo</td> 
    <td><input type="text" name="TelephoneNo" size="25" value="<? echo "$Row[1]"?>"></td> 
    </tr> 
    <tr>  
     <td>Email</td> 
     <td><input type="text" name="Email" size="25" value="<? echo "$Row[3]"?>"> 
     </td> 
    </tr> 
    <tr> 
    <td></td> 
    <td align="center"><input type="submit" name="submitvalue" value="UPDATE" ></td> 
        </tr> 
       </div>        
      </table> 
     </form> 

     </body> 
     </html> 
+1

請格式化正常 – alwaysLearn 2013-03-18 06:30:14

回答

2

嘗試這種方式

HTML

<form align="center" action="yourpage.php?func_name=updateRecord" method="post"> 

PHP

$form_action_func = $_POST['func_name']; 

if (function_exists($form_action_func)) { 
    updateRecord(); 
} 
+2

唐根據用戶提供的參數執行任意函數! – deceze 2013-03-18 06:49:37

+0

@deceze:你說得對。但我回答他想要的東西:) – Dino 2013-03-18 06:51:59

1

寫形式的行動= 「」,然後寫你的PHP代碼如下 注:使用形式方法如獲得

<?php 
if(isset($_GET['id'])) 
{ 
     call your function here 
} 
?> 
函數訪問

使用$ _GET [「字段名」]的所有值

+0

這些都不是很好的解決方案,因爲如果你在頁面上有多個表單,那麼它可能是無法管理的。在調用函數時編寫代碼比在全局範圍內依賴代碼更清晰。 – user18490 2014-08-05 11:01:36

+0

根據我的知識,只有一個行動爲一個形式的火災 - 一次只提交一個表單。 – 2014-08-05 11:33:30

+0

這是真的,但可能仍然不是最佳實踐,因爲你最終得到一系列if(isset($ _ GET ['action'] == submitform1){do this} if(isset($ GET [action'] = = submitform2){do that} ..這不是很優雅,最好是直接調用函數。 – user18490 2014-08-05 17:08:58

0
讓你的「提交」和「更新」行動同一個頁面上進行

簡單的方法則

if(isset($_POST['update'])) 
{ 
//perform update task 
update($var1,var2,$etc); // pass variables to function 
header('Location: http://www.example.com/');// link to your form 
} 
else if(isset($_POST['submit'])) 
{ 
//perform update task 
submit($var1,$var2,$etc);// pass variables to function 
header('Location: http://www.example.com/'); // link to next page after submit successfully 
} 
else 
{ 
// display form 
}