2013-04-28 53 views
0

我在项目上使用了三个文件:index.php,class.phpstyles.css表单提交 - 使用PHP类中的函数处理表单

我所有的功能驻留在PHP类中的class.php文件:

<?php 

class Club 
{ 
    //Private Data 
    private $HostName;  //typically "localhost" 
    private $UserId; 
    private $Password; 
    private $DBName; 
    private $Con;   //MySQL Connection 
    //Public Methods 
    //Constructor 
    public function __construct($host = NULL, $uid = NULL, $pw = NULL, $db = NULL) 
    { 
     $this->HostName = $host; 
     $this->UserID = $uid; 
     $this->Password = $pw; 
     $this->DBName = $db; 

     //Connect to Database 
     $this -> Con = mysqli_connect($host, $uid, $pw, $db); 
     if(mysgli_connect_errno($this -> Con)) 
     { 
      echo "Failed to connect to MySQL; " . mysqli_connect_error(); 
     } 

    } 
    //Destructor 
    public function __destruct() 
    { 
     //Close connection 
     mysqli_close($this -> Con); 
    } 
    public function DisplayMembers() 
    { 
      } 
      function DisplayAbout() 
    { 
      } 
      function DisplayRegistrationForm() 
    { 
     echo("<h2>Become a Club Member</h2> 

     <form name='register' method='post' action=''> 
      <table> 
       <tbody> 
        <tr> 
         <td width='80px'> 
          <label>First Name: </label> 
         </td> 
         <td width='300'> 
          <input id='firstname' type='text' name='firstname' value='' required/> 
         </td> 
        </tr> 
        <tr> 
         <td> 
          <label>Last Name: </label> 
         </td> 
         <td> 
          <input id='lastname' type='text' name='lastname' value='' required/> 
         </td> 
        </tr> 
        <tr> 
         <td> 
          <label>Your Email: </label> 
         </td> 
         <td> 
          <input id='email' type='text' name='email' value='' required/> 
         </td> 
        </tr> 
        <tr> 
         <td> 
          <label>Gender: </label> 
         </td> 
         <td> 
          <input id='gender' type='radio' name='gender' value='male'>Male<br /> 
          <input id='gender' type='radio' name='gender' value='female'>Female 
         </td> 
        </tr> 
        <tr> 
         <td> 
          <label>Interested in: </label> 
         </td> 
         <td id='check'> 
          <span style='font-weight: bold;'>Check All that Apply:</span><br /> 
          <input id='interests' type='checkbox' name='interests[]' value='Pizza Party'>Pizza Party<br /> 
          <input id='interests' type='checkbox' name='interests[]' value='Joining Study Groups'>Joining Study Groups<br /> 
          <input id='interests' type='checkbox' name='interests[]' value='Visiting Employer Sites'>Visiting Employer Sites<br /> 
          <input id='interests' type='checkbox' name='interests[]' value='Participating in Programming Competition'>Participating in Programming Competitions<br /> 
          <input id='interests' type='checkbox' name='interests[]' value='Building Games'>Building Games<br /> 
          <input id='interests' type='checkbox' name='interests[]' value='Becoming an Officer of the Club'>Becoming an Officer of the Club 
         </td> 
        </tr> 
        <tr> 
         <td colspan='2' style='text-align: center;'> 
          <input id='submit' type='submit' name='submit' value='Sign Up'/> 
         </td> 
        </tr> 
       </tbody> 
      </table>  
     </form>"); 
    } 
      function ProcessRegistrationForm() 
    { 
      } 
      private function Get_Members_From_DB() 
    { 
      } 
      private function Get_Members_Interests_From_DB($MemberEmail) 
    { 
      } 
      private function Get_Interests_Types_From_DB() 
    { 
      } 
} 
?> 

我不能为我的生活弄清楚放什么形式部分的操作部分,以便使用班内的ProcessRegistrationFunction()。所以基本上,DisplayRegistrationForm()index.php文件中调用div,然后我想让它在类中由ProcessRegistrationFunction()处理。但是,我似乎无法弄清楚如何做到这一点。

+1

那么,首先它是'__construct'而不是'_construct' – elclanrs 2013-04-28 23:38:39

+0

你在哪里调用'DisplayRegistrationForm'? – 2013-04-28 23:38:51

+0

我在index.php中调用DisplayRegistrationForm。 – charlwillia6 2013-04-28 23:53:08

回答

2

你可以发送你的表单数据到index.php本身,并发送任何数据到你的过程函数。实现此目的的最佳方式是更改表单以将数据作为数组收集。

这里myFormArray将存储这个值可以在你的index.php访问形式

<input id='firstname' type='text' name='myFormArray[firstname]' value='' required/> 

<input id='lastname' type='text' name='myFormArray[lastname]' value='' required/> 

的所有信息,当你在你的index.php提交表单

所以

if(isset($_POST["submit"]){ 
    $formData = $_POST["myFormArray"]; // dont forget to sanitize any post data 
    //than you can call your class function and pass this data 
    $class = new class(); 
    $class->ProcessRegistrationFunction($formData); 
} 

您的ProcessRegistrationFunction($ data)现在将拥有数组形式的所有数据。

你可以遍历它和FET的各个值

注:有很多语法错误在你的类..也有实现这个类的更好的方法。对于一个你应该总是避免里面的html代码你班组长..

DINS

+0

那么我要把任何东西放到行动领域? – charlwillia6 2013-04-29 00:17:15

+0

你可以把index.php放在空白处..在这两种情况下它都会提交到index.php – Dinesh 2013-04-29 00:20:52

+0

if语句给了我一个致命的代码,无论我把它放在哪里:致命错误:不能使用函数返回值在写上下文 – charlwillia6 2013-04-29 00:21:59

0

,同时输入正确的类型,以便u能避免不必要的错误

'if(mysgli_connect_errno($this -> Con))' 

应该

'if(mysqli_connect_errno($this -> Con))' 
+0

这不是一个答案。它应该在评论或编辑请求中。如果你没有/没有足够的代表,那好吧。 – trysis 2014-04-16 00:07:33