2016-04-25 3 views
1

Я пытаюсь добавить пользовательские сообщения проверки в эту форму, но не могу понять это на всю жизнь. Любая помощь/совет приветствуется ... спасибо.Индивидуальные сообщения проверки не работают?

Я пробовал несколько учебников, но ничто, кажется, не нажимает на меня, я уверен, что это что-то простое, но я просто не могу понять это.

Благодаря

ФОРМА ДЛЯ ВАЛИДАЦИИ:

<?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. когда этот флаг является ложным, я вставляю значение –

0

Поскольку ваша операция DB вставка проходит первый и не имеет никаких проверок для необходимых полевых данных для запуска или нет. Таким образом, он работает, и в случае успеха он перенаправляет и выходит:

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

Который очищает POST и ваша требуемая логика поле никогда не получает бежать.

Смежные вопросы