表单提交 - 使用PHP类中的函数来处理表单

问题描述:

我在一个项目上使用三个文件: index.php class.php styles.css

I am using three files on a project: index.php, class.php, and styles.css.

所有我的函数驻留在class.php文件中的一个php类中:

All my functions reside within a php class in the class.php file:

<?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()
    {
            }
 }
 ?>



我不能为我的生活找出行动因此,基本上, DisplayRegistrationForm()会在表单部分中使用 ProcessRegistrationFunction() div 文件中的 index.php 文件中调用,然后我希望它由 ProcessRegistrationFunction()但是,我似乎不知道该怎么做。

I cannot for the life of me figure out what to put in the action section of the form portion in order to use the ProcessRegistrationFunction() within the class. So basically, the DisplayRegistrationForm() is called in the index.php file in a div, and then I want it to be processed by the ProcessRegistrationFunction() within the class. However, I cannot seem to figure out how to do this.

您可以将您的表单数据发送到index.php本身,而不是将任何数据发送到您的过程函数。

you can send your form data to index.php itself and than send whatever data to your process function. the best way to implement this will be is to change your form to collect data as an array.

这里 myFormArray 将存储所有有关形式的信息

here myFormArray will store all the information about the form

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

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

此值可在您提交表单时在index.php中访问

this value can be accessed in your index.php when you submit the form

因此在您的index.php

so in your 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);
 }


$ b b

你的ProcessRegistrationFunction($ data)现在将有一个数组形式的所有数据。

your ProcessRegistrationFunction($data) will now have all the data in an array form..

你可以遍历它和fet个别值

you can iterate over it and fet the individual values

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

Note: there are lot of syntax error in your class.. also there is better way to implement this class.. for one you should always avoid html code inside your classs..

Dins