Предупреждение об ошибке PHP, которое не перенаправляет, но остается на той же странице - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь выполнить некоторую проверку формы перед отправкой формы в базу данных.Я хотел бы, чтобы сообщение об ошибке отображалось, если все поля не имеют значений, но в настоящее время при отправке форма перенаправляет на ту же страницу и стирает все с формы.Вот мой код ..

$error = '';
if (isset($_SESSION['logged_in'])) {
    if (isset($_POST['submit'])) {
        if (isset($_POST['title'], $_POST['content'], $_POST['short_desc'], $_POST['file'])) {
            $title = $_POST['title'];
            $content = $_POST['content'];
            $short_desc = $_POST['short_desc'];

            $targetDir = "../images/blog-images/";
        $fileName = basename($_FILES["file"]["name"]);
        $targetFilePath = $targetDir . $fileName;
        $fileType = pathinfo($targetFilePath,PATHINFO_EXTENSION);

        $allowTypes = array('jpg','png','jpeg','gif','pdf');
            if(in_array($fileType, $allowTypes)){
                move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath);
            }

        //if (empty($title) or empty($content)) {
        //  $error = 'All fields are required!';
        //  echo "<script type='text/javascript'>alert('$error');</script>";
        //} else {
            $query = $pdo->prepare('INSERT INTO articles (article_title, article_content, article_timestamp, article_short_desc, article_image) VALUES (?,?,?,?,?)');

            $query->bindValue(1, $title);
            $query->bindValue(2, $content);
            $query->bindValue(3, time());
            $query->bindValue(4, $short_desc);
            $query->bindValue(5, $fileName);

            $query->execute();
            header('Location: add-new-post.php');
        }else {

        $error = 'All fields are required!';
        echo "<script type='text/javascript'>alert('$error');</script>";
    }

    } 

Есть ли способ сделать это без AJAX, поскольку я не слишком знаком с ним ..

Заранее спасибо!

1 Ответ

0 голосов
/ 22 февраля 2019

Поскольку ваш PHP-скрипт находится на той же странице, что и HTML-форма, вы можете сделать что-то вроде:

<input type="text" name="someField" value="<?php echo isset($_POST['someField']) 
? $_POST['someField'] : '' ?>" required />

Флаг required в конце будет запрещать отправку формы напередняя часть, если она не заполнена.Поле value будет заново заполнять ввод последней переменной, прошедшей через POST.

В вашем случае вы можете использовать одну или другую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...