2016-04-25 16 views
1

Ich versuche, benutzerdefinierte Validierung Nachrichten zu diesem Formular hinzufügen, aber kann es nicht für das Leben von mir herausfinden .. Jede Hilfe/Beratung wird geschätzt ... danke.Benutzerdefinierte Validierungsnachrichten funktionieren nicht?

Ich habe ein paar Tutorials ausprobiert, aber nichts scheint für mich zu klicken, ich bin mir sicher, dass es etwas einfaches ist, aber ich kann es einfach nicht herausfinden.

Dank

FORM FÜR DIE VALIDIERUNG:

<?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

Was * genau * funktioniert nicht in diesem Code? –

+0

Die benutzerdefinierten Fehlermeldungen für, wenn der Benutzer das Formular nicht ausfüllt –

Antwort

0

Ich habe Ihren Code aktualisiert. Sie sollten zuerst die Validierung überprüfen und dann einfügen.

<?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

Danke, funktioniert perfekt, können Sie mir bitte mitteilen, was Sie geändert haben? (nur damit ich die Leute hier nicht nochmal belästigen muss!) –

+0

Ich habe überprüft, ob das Feld leer ist oder nicht.So habe ich Ihren Validierungscode an die Spitze gesetzt. Wenn ich leer bin habe ich ein Flag $ error = true gesetzt. Wenn dieses Flag falsch ist, muss ich den Wert eingeben –

0

Weil Betrieb Ihrer DB Einsatz läuft zunächst und hat keine Prüfungen für erforderlich Felddaten in Ordnung oder nicht laufen. Also, es läuft, und auf Erfolg es Umleitungen und verlässt:

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

Welche löscht POST und Ihre erforderliche Feld Logik wird nie ausgeführt.

Verwandte Themen