Мы не можем увидеть вашу конкретную ошибку (похоже, их может быть несколько), поэтому мы не сможем вам там помочь. Но я мог бы сделать предложение о том, как структурировать ваш сценарий.
Предостережение - это действительно не хороший подход ни для чего, кроме самых маленьких приложений или для обучения.
Основная идея состоит в том, что существует только 1 скрипт, и он имеет обработки и отображения секций. Он войдет в раздел processing только тогда, когда форма действительно отправлена.
Если есть какие-либо ошибки проверки, они перейдут в раздел display и перечислят ошибки и форму.
Если нет ошибок проверки, он будет сохранен в БД и перенаправлен на другую страницу.
По мере разработки больших (и лучших) приложений вы можете обнаружить, что этот тип кодирования быстро станет громоздким - вы смешиваете валидацию, SQL, представления / отображение и т. Д. В одном скрипте. Они станут более сложными, и вскоре у вас будет большой шар спагетти. Как только вы достигнете этой точки, начните изучать рамки
Но пока продолжайте. Удачи.
<?php
// A list of validation errors. Initialize to an empty list.
$errors = [];
/****************************/
/******** PROCESSING ********/
/****************************/
// The form was submitted
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Values submitted from form
$name = $_POST['signup_name'];
$email = $_POST['signup_mail'];
$password = $_POST['signup_password'];
// Validation
if (empty($name)) {
$errors[] = 'Please enter your name';
}
if (empty($email)) {
$errors[] = 'Please enter your email';
}
// ... check if email already exists in your DB.
// ... more validation here
// There are no validation errors, process the form.
if (empty($errors)) {
// At this point, you now have a valid form. Just save it to the DB.
// Redirect to somewhere
}
}
/****************************/
/********** DISPLAY *********/
/****************************/
if (count($errors) > 0) : ?>
<ul>
<?php foreach ($errors as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<!-- Use "post" and remove action and it will post to itself. -->
<form method="post">
<!-- ... -->