разрешить пользователю запускать с последней сохраненной страницы

У меня есть форма PHP на 5 страницах, и я хотел бы дать пользователям возможность начать заполнение формы с их последней сохраненной страницы. (данные должны быть сохранены в БД на страницу, и если по какой-либо причине пользователь не сможет завершить все страницы, он сможет продолжить вместо повторного заполнения всех страниц). Вот шаги, которые я пытаюсь сделать:

  1. Сохраняйте данные пользователя на странице, поэтому, когда он нажимает «сохранить»&Кнопка «Продолжить» в конце страницы, все введенные данные будут сохранены в БД (ЭТА ЧАСТЬ ОК, я уже сделал этот шаг)

  2. При успешном входе пользователя в систему я проверяю таблицу «answer» в БД, чтобы увидеть, не ввел ли пользователь какие-либо данные (на каждой странице у меня есть несколько обязательных вопросов, поэтому я проверяю, не являются ли они пустыми в БД, например: «q6» в page1 — обязательное поле, и если это поле (столбец q6) в БД НЕ «пусто», это означает, что пользователь уже ответил на первую страницу, и он должен иметь возможность начать со второй страницы. Затем я проверю другое обязательное поле в следующей страница, например, q12, если столбец «q12» в таблице не пустой, это означает, что пользователь также ответил на вторую страницу, и он может начать с 3-й страницы, и так далее …

Вот часть кода: (Чтобы сделать код короче, я просто скопировал условие, чтобы проверить, ответил ли пользователь на первой странице, и пропустил другие условия, чтобы проверить наличие пустых полей на следующих страницах).

// If username& password found in DB, LOGIN SUCCESSFUL
$_SESSION['SESS_MEMBER_ID'] = $result->mem_id;
$_SESSION['SESS_USERNAME'] = $result->username;
$_SESSION['SESS_LAST_NAME'] = $result->password;

$result = $conn->prepare('SELECT * FROM answer where username = :username');
$result->execute(array(':username' => $username));

$row = $result->fetch(PDO::FETCH_OBJ);

if(empty($row->q6)){  //if user didn't answer q6 (which is required to submit the first page and go to 2nd page
try{
$stmt2 = $conn->prepare('INSERT INTO answer(username) VALUES(:username)');
$stmt2->execute(array(':username' => $username));

}catch(PDOException $e) {
echo 'Error: ' . $e->getMessage();
}
header("location: home.php"); //homepage where user can click on the link to start filling the form in page1.php
exit();

}else{  //If q6 had already an answer in database, it means that user filled and saved the first page before, so he should be able to continue form the second page
header("location: page2.php");
exit();
}

}else {
//Login failed
$errmsg_arr[] = 'user name and password not found';
$errflag = true;
if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
header("location: index.php");
/*  exit();*/
}
}

ПРОБЛЕМА:

Он отлично работает для пользователя, который заполняет форму впервые (его имя пользователя вводится в таблицу «ответ» при входе в систему, и он будет перенаправлен на home.php, где он может найти ссылку для начала заполнения формы (стр. 1). .php), но проблема в том, что если, например, он заполняет первую страницу, нажмите «Сохранить&продолжить «, он будет перенаправлен на вторую страницу, и если он выйдет из формы (например, если он случайно закроет окно) и снова войдет в систему, он будет перенаправлен на page1.php внутренняя страница page2.php

Может кто-нибудь, пожалуйста, помогите мне в чем проблема с этим кодом?

Спасибо,

2

Решение

В page1.php вы можете проверить в базе данных, была ли информация уже заполнена пользователем, и если да, то вы можете перенаправить его на page2.php. Точно так же, на странице 2, странице 3, странице 4.php

0

Другие решения

YESSSSSSSSS, я нашел это: DD

Проблема: я проверил значения первой страницы в начале page2.php и, если он обнаружил пустое поле (обязательные поля), он перенаправил на страницу page1.php, и это было именно то, что нужно .. (с тех пор, как пользователь, который уже заполнил на первой странице, если вход в систему во второй раз, он должен иметь возможность продолжить со 2-й страницы, но эта проверка мешала все ..

Решение: Итак, я просто использовал плагин проверки jquery в конце каждой страницы … и удалил часть проверки проверки, которая была у меня в начале следующих страниц (например, проверьте q1-q7 в конце page1.php и удалила часть проверки в начало page2.php … итак, он больше не перенаправлял на page1.php, и теперь пользователь может продолжить с последней сохраненной страницы 🙂 (надеюсь, я смог бы четко объяснить для тех, у кого похожая проблема)

0

По вопросам рекламы [email protected]