表单提交 - 使用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