2016-04-25 15 views
1

このフォームにカスタム検証メッセージを追加しようとしていますが、私の人生のためにそれを理解することはできません。 助けてください/アドバイスありがとうございます...ありがとうございます。カスタマイズされた検証メッセージは機能しませんか?

私はいくつかのチュートリアルを試しましたが、何も私のためにクリックしているようではない、私は何かシンプルだと確信していますが、私はそれを理解するようです。

おかげで、検証のため

FORM:

<?php 
if (isset($_POST['insert'])) { 
    require_once('connection.php'); 
    $OK = false; 
    $sql = 'INSERT INTO students (studentTitle, studentFirstName, studentLastName) 
     VALUES(:studentTitle, :studentFirstName, :studentLastName)'; 
    $stmt = $conn->prepare($sql); 
    $stmt->bindParam(':studentTitle', $_POST['studentTitle'], PDO::PARAM_STR); 
    $stmt->bindParam(':studentFirstName', $_POST['studentFirstName'], PDO::PARAM_STR); 
    $stmt->bindParam(':studentLastName', $_POST['studentLastName'], PDO::PARAM_STR); 
    $stmt->execute(); 
    $OK = $stmt->rowCount(); 

    if ($OK) { 
    header('Location: http://localhost/mysqlquiz/student.php'); 
    exit; 
    } else { 
    $error = $stmt->errorInfo(); 
    if (isset($error[2])) { 
    $error = $error[2]; 
    } 
    } 
} 
?> 
<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Add Student Details</title> 
<link href="css/style.css" rel="stylesheet" type="text/css"> 
</head> 

<body> 
<h1 class="header">New student details</h1> 
<p><a href="student.php">Student Listing </a></p> 
<?php 
if (isset($error)) { 
    echo "<p class='warning'>Error: $error</p>"; 
} 
?> 

    <?php 
// define variables and set to empty values 
$studentTitleErr = $studentFirstNameErr = $studentLastNameErr = ""; 
$studentTitle = $studentFirstName = $studentLastName = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (empty($_POST["studentTitle"])) { 
    $studentTitleErr = "A title is required"; 
    } else { 
    $studentTitle = test_input($_POST["studentTitle"]); 
    } 

    if (empty($_POST["studentFirstName"])) { 
    $studentFirstNameErr = "First name is required"; 
    } else { 
    $studentFirstName = test_input($_POST["studentFirstName"]); 
    } 

    if (empty($_POST["studentLastName"])) { 
    $studentLastNameErr = "Last name is required"; 
    } else { 
    $studentLastName = test_input($_POST["studentLastName"]); 
    } 
} 

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 
?> 
    <form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> 
    <p> 
     <label for="studentTitle">Title:</label> 
     <select name="studentTitle" id="studentTitle" ><span class="error">* <?php echo $studentTitleErr;?></span> 
      <option value="Mr">Mr.</option> 
      <option value="Mrs">Mrs.</option> 
      <option value="Ms">Ms.</option> 
      <option value="Miss">Miss.</option> 
    </select> 
    </p> 
    <p> 
    <label for="studentFirstName">First Name:</label> 
    <input type="text" name="studentFirstName" id="studentFirstName" ><span class="error">* <?php echo $studentFirstNameErr;?></span> 
    </p> 
    <p> 
    <label for="studentLastName">Last Name:</label> 
    <input type="text" name="studentLastName" id="studentLastName" ><span class="error">* <?php echo $studentLastNameErr;?></span> 
    </p> 
    <p> 
    <input type="submit" name="insert" value="Add Details" id="insert"> 
    <input type="reset" name="clear" value="Clear" id="clear"> 
    <input name="studentID" type="hidden" value="<?php echo $studentID; ?>"> 
    </p> 
</form> 
</body> 
</html> 
+0

このコードでは*正確に*動作していませんか? –

+0

ユーザーがフォームに記入しなかった場合のカスタムエラーメッセージ –

答えて

0

コードを更新しました。最初に検証をチェックし、次に挿入する必要があります。

<?php 
// define variables and set to empty values 
$studentTitleErr = $studentFirstNameErr = $studentLastNameErr = ""; 
$studentTitle = $studentFirstName = $studentLastName = ""; 

if (isset($_POST['insert'])) { 
    require_once('connection.php'); 
    $error = $OK = false; 

    if (empty($_POST["studentTitle"])) { 
    $studentTitleErr = "A title is required"; 
$error = true; 
    } else { 
    $studentTitle = test_input($_POST["studentTitle"]); 
    } 

    if (empty($_POST["studentFirstName"])) { 
    $studentFirstNameErr = "First name is required"; 
$error = true; 
    } else { 
    $studentFirstName = test_input($_POST["studentFirstName"]); 
    } 

    if (empty($_POST["studentLastName"])) { 
    $studentLastNameErr = "Last name is required"; 
$error = true; 
    } else { 
    $studentLastName = test_input($_POST["studentLastName"]); 
    } 
if($error == false) 
{ 
    $sql = 'INSERT INTO students (studentTitle, studentFirstName, studentLastName) 
     VALUES(:studentTitle, :studentFirstName, :studentLastName)'; 
    $stmt = $conn->prepare($sql); 
    $stmt->bindParam(':studentTitle', $_POST['studentTitle'], PDO::PARAM_STR); 
    $stmt->bindParam(':studentFirstName', $_POST['studentFirstName'], PDO::PARAM_STR); 
    $stmt->bindParam(':studentLastName', $_POST['studentLastName'], PDO::PARAM_STR); 
    $stmt->execute(); 
    $OK = $stmt->rowCount(); 

    if ($OK) { 
    header('Location: http://localhost/mysqlquiz/student.php'); 
    exit; 
    } else { 
    $error = $stmt->errorInfo(); 
    if (isset($error[2])) { 
    $error = $error[2]; 
    } 
    } 
} 
} 
?> 
<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Add Student Details</title> 
<link href="css/style.css" rel="stylesheet" type="text/css"> 
</head> 

<body> 
<h1 class="header">New student details</h1> 
<p><a href="student.php">Student Listing </a></p> 
<?php 
if (isset($error)) { 
    echo "<p class='warning'>Error: $error</p>"; 
} 
?> 

    <?php 

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 
?> 
    <form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> 
    <p> 
     <label for="studentTitle">Title:</label> 
     <select name="studentTitle" id="studentTitle" ><span class="error">* <?php echo $studentTitleErr;?></span> 
      <option value="Mr">Mr.</option> 
      <option value="Mrs">Mrs.</option> 
      <option value="Ms">Ms.</option> 
      <option value="Miss">Miss.</option> 
    </select> 
    </p> 
    <p> 
    <label for="studentFirstName">First Name:</label> 
    <input type="text" name="studentFirstName" id="studentFirstName" ><span class="error">* <?php echo $studentFirstNameErr;?></span> 
    </p> 
    <p> 
    <label for="studentLastName">Last Name:</label> 
    <input type="text" name="studentLastName" id="studentLastName" ><span class="error">* <?php echo $studentLastNameErr;?></span> 
    </p> 
    <p> 
    <input type="submit" name="insert" value="Add Details" id="insert"> 
    <input type="reset" name="clear" value="Clear" id="clear"> 
    <input name="studentID" type="hidden" value="<?php echo $studentID; ?>"> 
    </p> 
</form> 
</body> 
</html> 
+0

ありがとう、ありがとうございます、あなたが変更したものを教えてください。 (ちょうど私はここで再び人を嫌がらせする必要はありません!) –

+0

フィールドが空白かどうかを確認しました。あなたの検証コードを上に置きました。空白の場合、$ error = trueフラグを設定しました。このフラグがfalseの場合、値を挿入します。 –

0

あなたのDBの挿入操作は、最初に実行され、実行するかしないために、必要なフィールドデータのためのチェックを持っていないので。だから、それが実行され、成功した場合にそれがリダイレクトして終了:

header('Location: http://localhost/mysqlquiz/student.php'); 
exit; 

POSTをクリアして、必要なフィールドロジックが実行されることは決してありませんどの。

関連する問題