2017-05-10 21 views
0

ちょうど私の手をPHPで手に入れています。少し助けてください。私は、サーバー側の検証で登録フォームを作成しています。検証後、フォーム入力をデータベースに送信する必要があります。データを入力して[送信]ボタンをクリックしましたが、データがデータベースに送信されませんでした。エラーメッセージはありません。どこに間違っているのかを指摘し、私に可能な解決策を教えてもらうのを助けてください。ありがとう。PHPフォームの検証とデータベースへのフォーム入力の提出

のindex.php

<?php 
include ('signup.php'); 
?> 
<div class="maindiv"> 
<div class="login"></div> 
<div class="wrapper"> 
<div class="pageintro"> 
<p>PHP</p> 
<p>PROJECT 1</p> 
</div> 
<div class="regform"> 
<form name="reg" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" > 
<p class="regformp">Fill all Fields</p> 
<div class="regwrap"> 
<div class="inp">Full Name</div> 
<div class="inp1"><input type="text" name="FullName" value="<?php echo $FullName; ?>"></div> 
<span class="error"><?php echo $fullnameErr;?></span> 
<div class="inp">E-Mail</div> 
<div class="inp1"><input type="text" name="Email" value="<?php echo $Email; ?>"></div> 
<span class="error"><?php echo $emailErr;?></span> 
<div class="inp">Password</div> 
<div class="inp1"><input type="password" name="Password"></div> 
<span class="error"><?php echo $passwordErr;?></span> 
<div class="inp">Confirm Password</div> 
<div class="inp1"><input type="password" name="ConfirmPassword"></div> 
<span class="error"><?php echo $conpasswordErr;?></span> 
<div class="inp">Gender</div> 
<div class="inp1"><input type="radio" name="Gender" value="Male" <?php if(isset($Gender)&& $Gender=="Male") echo "checked"; ?> >Male &nbsp;<input type="radio" name="Gender" <?php if(isset($Gender)&& $Gender=="Female") echo "checked"; ?> Value="Female">Female</div> 
<span class="error"><?php echo $genderErr;?></span> 
<div class="inp">Date Of Birth</div> 
<div class="inp1"><select name="DayOfBirth"><option>01</option> 
<option>02</option> 
<option>03</option> 
<option>04</option> 
<option>05</option></select> &nbsp; <select name="MonthOfBirth"><option>Jan</option> 
<option>Feb</option> 
<option>Mar</option> 
<option>Apr</option> 
<option>May</option></select> &nbsp; <select name="YearOfBirth"><option>1970</option> 
<option>1971</option> 
<option>1972</option> 
<option>1973</option> 
<option>1974</option></select></div> 
<span class="error"><?php echo $dobErr;?></span> 
<span class="error"><?php echo $mobErr;?></span> 
<span class="error"><?php echo $yobErr;?></span> 
<div class="inp2"><input type="submit" name="submit" value="SIGN UP"></div></div> 
</form> 

signup.php

<?php 
include ('project1db.php'); 
//Define variables 
$fullnameErr=""; 
$emailErr=""; 
$passwordErr=""; 
$conpasswordErr=""; 
$genderErr=""; 
$dobErr=""; 
$mobErr=""; 
$yobErr=""; 
$FullName=""; 
$Email=""; 
$Password=""; 
$ConfirmPassword=""; 
$Gender=""; 
$DayOfBirth=""; 
$MonthOfBirth=""; 
$YearOfBirth=""; 

if($_SERVER["REQUEST_METHOD"] == "POST"){ 

if(empty($_POST["FullName"])){ 
$fullnameErr = "Name is required"; 
} 
else{ 
$FullName = test_input($_POST["FullName"]); 
//Check if name only contains letters and whitespace 
if(!preg_match("/^[a-zA-Z]*$/",$FullName)){ 
$fullnameErr = "Enter Valid name please!"; 
} 
} 

if(empty($_POST["Email"])){ 
$emailErr = "Email is required"; 
}else{ 
$EMail = test_input($_POST["Email"]); 
//Check if e-mail address is correct 
if(!filter_var($EMail, FILTER_VALIDATE_EMAIL)){ 
$emailErr = "Invalid email address"; 
} 
} 

if(empty($_POST["Password"])){ 
$passwordErr = "Password is required"; 
}else{ 
$Password = test_input($_POST["Password"]); 
//Check password 
if(!preg_match("/^[a-z0-9]{6,}$/",$Password)){ 
$passwordErr = "Password should contain 6+ characters, lowercase and numbers!"; 
} 
} 

if(empty($_POST["ConfirmPassword"])){ 
$conpasswordErr = "Confirm your Password!"; 
} 
else{ 
$ConfirmPassword = test_input($_POST["ConfirmPassword"]); 
//Confirm if password match 
if($ConfirmPassword != $Password){ 
$conpasswordErr = "Password not match!"; 
} 
} 

if(empty($_POST["Gender"])){ 
$genderErr = "Select your Gender!"; 
}else{ 
$Gender = test_input($_POST["Gender"]); 
} 

if(empty($_POST["DayOfBirth"])){ 
$dobErr = "Select your Day Of Birth"; 
}else{ 
$DayOfBirth = test_input($_POST["DayOfBirth"]); 
} 
if(empty($_POST["MonthOfBirth"])){ 
$mobErr = "Select your Month Of Birth"; 
}else{ 
$MonthOfBirth = test_input($_POST["MonthOfBirth"]); 
} 

if(empty($_POST["YearOfBirth"])){ 
$yobErr = "Select your Year Of Birth"; 
}else{ 
$YearOfBirth = test_input($_POST["YearOfBirth"]); 
} 
} 

function test_input($data){ 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 
if($fullnameErr = $emailErr = $passwordErr = $conpasswordErr = $genderErr = $dobErr = $mobErr = $yobErr = ""){ 

    $sql = "INSERT into usersignup (FullName, Email, Password, Gender, DayOfBirth, MonthOfBirth, YearOfBirth) VALUES(?,?,?,?,?,?,?)"; 


if($stmt = $conn->prepare($sql)){ 

    // Bind variables to the prepared statement as parameters 

    $stmt->bind_param("ssssisi", $FullName, $Email, $Password, $Gender, $DayOfBirth, $MonthOfBirth, $YearOfBirth); 



    /* Set the parameters values and execute 

    the statement again to insert another row */ 

    $FullName = $_REQUEST['FullName']; 
    $Email = $_REQUEST['Email']; 
    $Password = $_REQUEST['Password']; 
    $Gender = $_REQUEST['Gender']; 
    $DayOfBirth = $_REQUEST['DayOfBirth']; 
    $MonthOfBirth = $_REQUEST['MonthOfBirth']; 
    $YearOfBirth = $_REQUEST['YearOfBirth']; 

    $stmt->execute(); 

    echo "Records inserted successfully."; 

} else{ 

    echo "ERROR: Could not prepare query: $sql. " . $conn->error; 

} 



// Close statement 

$stmt->close(); 



// Close connection 

$conn->close(); 
     } 
     else{ 

     } 


?> 

データベース接続 project1db.php

<?php 
$dbhost = 'localhost:3308'; 
$dbuser = 'root'; 
$dbpass = ''; 
$dbname = 'phpproject'; 
$conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); 
if(!$conn) 
{ 
die('Could not connect: '.mysqli_error()); 
} 
echo 'Connected successfully'; 

+0

質問文を挿入する前にecho文を置いて、出力があるかどうかを教えてください。 – zenwraight

+0

@zenwraightはい、入力したデータをエコーし​​ます。しかし、私はクエリを追加して以来、それが検証されていないことにも気付きました。ありがとう – SholleyonlineJava

+0

あなたはこれでオンラインに行きますか? mysql_error()はmysqli_btwでは動作しません。 PHPのエラー報告と 'mysqli_error($ conn)'を使用して、クエリと同じようにします。 –

答えて

0

私はこの問題を考え出したとの問題が解決されています。 最初の問題は、MySQLデータベースです。 AutoIncrement colunm正確にAutoIncrementに設定されていませんでした。ですから、PhpMyadminを開いてID列をAutoIncrementに変更して設定します。

if($fullnameErr = $emailErr = $passwordErr = $conpasswordErr = $genderErr = $dobErr = $mobErr = $yobErr = "") 

後に適切に働いていたコードの正しい行は次のとおりです:

if(empty($fullnameErr) && empty($emailErr) && empty($passwordErr) && empty($conpasswordErr) && empty($genderErr) && empty($dobErr) && empty($mobErr) && empty($yobErr)) 

これはある

第二の問題は、ここでは条件文とありましたcを持っている人にとって重要な情報彼らはデータ入力を検証したが、データをデータベーステーブルに保存する方法を知らなかった。

関連する問題