2013-02-23 132 views
0

問題標題顯示我使用PHP和SQL創建註冊表單。無論何時點擊註冊按鈕,我都會在表單中的所有變量上得到一個未定義的變量錯誤,也不會在數據庫中輸入任何內容。如果您可以提出任何建議,請將我的頭髮拉出。PHP SQL註冊表格

這裏是表單提交頁面到:

<?php 
include('dbconfig.php'); 
?> 

<?php 

echo $_GET["FirstName"]; 
?> 

<?php 

$db = new PDO('mysql:host=localhost;dbname=mydatabase;', 'root', ''); 

$firstname = $_POST['FirstName']; 
$lastname = $_POST['LastName']; 
$username = $_POST['username' ]; 
$password = $_POST['Password']; 
$email  = $_POST['Email']; 
$startdate = $_POST['StartDate']; 
$year  = $_POST['Year']; 



$password = md5($password); 



$sql = "INSERT into supervisor (FirstName, LastName, UserName, Password, Email,      
Company) VALUES (:FirstName, :LastName, :UserName, :Password, :Email)"; 

$statement = $db->prepare($sql); 

$params = array(
':FirstName' => $firstname, 
':LastName' => $lastname, 
':Password' => $password, 
':Email'  => $email, 
':StartDate' => $startdate, 
':Year'  => $year, 
':Company' => $company 
); 

的DBCONFIG文件:

<?php 

$config['db'] = array(
'host'  => 'localhost', 
'username' => 'root', 
'password' => '', 
'dbname' => 'mydatabase', 

); 

$db = new PDO('mysql:host='. $config['db']['host'] .';dbname='. $config['db'] 
['dbname'], $config['db']['username'], $config['db']['password']); 


?> 

最後登記PHP文件(只是形式):

<div class="container"> 
    <form id="regform" class="form-signin" action='staffRegister.php' method='Post'  
onsubmit="return validateForm()"/> 
    <img src="logo.png" width="160" height="50"> <h2 class="form-signin-heading">Staff  

Registration</h2> 


     <div> 
      <label for="name">First Name: </label> 
      <input id="fname" name="name" type="text" class="input-        

block-level" maxlength="35" onFocus="if(this.value=='name')this.value='';" onblur = 
"checkField(this)"/> 
      <span id="Alpha" style="display:none;">Please use letters 

only.</span> 
     </div> 
     <div> 
      <label for="name">Last Name: </label> 
      <input id="lname" name="name" type="text" class="input- 

block-level" maxlength="35" onFocus="if(this.value=='name')this.value='';" onblur = 

"checkField1(this)"/> 
      <span id="Alpha2" style="display:none;">Please use letters 

only.</span> 
     </div> 
     <div> 
      <label for="name">UserName: </label> 
      <input id="username" name="name" type="text" class="input- 

block-level" maxlength="12" /> 

     </div> 
     <div> 
      <label for="email">E-mail Ad:</label> 
      <input id="email" placeholder="@kent.ac.uk"name="Email" 
type="text" class="input-block-level" onchange="return validateEmail();"/></br> 
      <span id="spanEmail" style="display:none;">Please use your  
Kent Email.</span> 

     </div> 
     <div> 
      <label for="pass1">Password:</label> 
      <input id="pass1" name="pass1" type="password" 
class="input-block-level" maxlength="12" /> 
      <span id="pass1Info">At least 6 characters: letters, 
numbers and '_'</span> 
     </div> 
     <div> 





    <center><input type='Submit' name='Submit' value="Register" class="btn btn- 
primary"/ > </input></center> 
    </form> 

任何幫助真的很感激,謝謝。

+0

爲什麼不只是綁定到'POST'變量? – Kermit 2013-02-23 18:14:01

回答

0

HTMl中的名稱與您在$_POST中使用的鍵不符。您發佈兩個名字和姓氏用name的名稱,並試圖分別$_POST['FirstName']$_POST['LastName']來接他們。

+0

修正,但仍然相同的錯誤。 – stark 2013-02-23 18:47:52

+0

您確定發佈正確的腳本嗎?如果是這樣,當你'var_dump($ _ POST)'時會發生什麼? – juco 2013-02-23 18:49:39

+0

是的,變量現在都正確地發佈,但是數據在數據庫中仍然不存在 – stark 2013-02-23 19:09:38

0

您有3個問題。

1.Mixing $_GET[]$_POST[]。 as form method = post use $_POST[]

2.在form和php之間命名變量。即fname的形式和$firstname在PHP中。此外,文本輸入的名稱和ID應該相同。

3.當變量沒有正確設置時,出現警告。要解決此問題,請使用isset()。下面的代碼說明了這個問題。(另存爲post.php中)

<?php 
echo "Test for $_POST & isset()<br>"; 
$test1 = isset($_POST['test1']) ? $_POST['test1'] : ''; 
$test2 = $_POST['test2']; 
echo $test1; 
echo "<br>"; 
echo $test2; 
?> 
<form action="post.php" method="post"> 
<input name="test1" type="checkbox" value="1"> 
<input name="test2" type="checkbox" value="2"> 
<input type="submit"> 
</form> 

前面的演示中使用isset()函數和ternary operator,我已經說明了如何利用它在你的代碼。

$fname = isset($_POST['$fname']) ? $_POST['$f'] : ''; 
$lname = isset($_POST['$lname']) ? $_POST['$lname'] : ''; 
etc