Я знаю проблему, но я не могу ее исправить, и я надеялся, что кто-то здесь может направить меня в правильном направлении. Что я хочу сделать, это проверить, чтобы увидеть если пользователь уже отправил правильный ответ на вопрос, прежде чем проверять его на базе базы данных ответов и вставлять его в базу данных. Просто, чтобы один и тот же вопрос был ответен несколько раз, я новичок с MYSQLi и не очень хорош, изучая его.PHP проверить, если форма уже отправлена с использованием num строк
То, что я в настоящее время до сих пор:
$mysqli = new mysqli($host,$username,$password,$database);
if($mysqli -> connect_error)die($mysqli->connect_error);
$questionID = $_POST['id'];
$userAnswer = $_POST['answer'];
$userAnswer = strtolower(trim($userAnswer));
$questionValue = $_POST['qValue'];
$teamName = $_SESSION['user_email'];
$user_id = "SELECT t.teamID,t.questionGroupID FROM team as t WHERE t.teamName ='$teamName'";
$result2 = $mysqli->query($user_id);
if ($result2->num_rows > 0) {
// output data of each row
while($row = $result2->fetch_assoc()) {
$userID = $row["teamID"];
}
}
$query = "SELECT answers FROM answers WHERE questionID=?";
$statement = $mysqli->prepare($query);
$statement ->bind_param('i', $questionID);
$statement->execute();
$statement->bind_result($answer);
//checking the database to see if the current question is there from the current user/teamName
if ($result = mysqli_query($mysqli, "SELECT * FROM submissions where teamID='$teamName' and questionID='$questionID'")) {
/* determine number of rows result set */
$row_cnt = mysqli_num_rows($result);
/* close result set */
mysqli_free_result($result);
}
/* close connection */
mysqli_close($mysqli);
//checking to see if it returns a result
if(($row_cnt)= 0){
while ($statement->fetch()) {
if ($answer != $userAnswer) {
echo '<br><br><div class="alert alert-danger"><h5>
<strong>Sorry!</strong> the answer is incorrect! Please Try again!.</h5>
</div>';
"<h3>Sorry the answer is incorrect! Please Try again!</h3><br>";
//return to previous Page
echo '<a href="./question.php?id=' . $questionID . '" class="btn btn-primary btn-block">Return to Question </a>';
$statement->free_result();
$sql = "INSERT INTO `submissions`(`submissionsID`, `teamID`, `questionID`, `answer`,`qValue`,`status`,`timestamp`) VALUES (null,'$teamName','$questionID','$userAnswer','0','Wrong',NOW())";
if (mysqli_query($mysqli, $sql)) {
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($mysqli);
}
} else {
echo '<br><br><div class="alert alert-success"><h5>
<strong>Success!</strong> Correct Answer, Good Luck with the Next </h5>
</div>';
echo "<a href='questionList.php' class='btn btn-success btn-block'>Continue with other questions! </a>";
$statement->free_result();
//MySqli Insert Query
$sql = "INSERT INTO `submissions`(`submissionsID`, `teamID`, `questionID`, `answer`,`qValue`,`status`,`timestamp`) VALUES (null,'$teamName','$questionID','$userAnswer','$questionValue','Correct',NOW())";
if (mysqli_query($mysqli, $sql)) {
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($mysqli);
}
}
}
}else{
echo '<br><br><div class="alert alert-warning"><h5>
<strong>Already Answered!</strong> Good Luck with the Next </h5>
</div>';
echo "<a href='questionList.php' class='btn btn-warning btn-block'>Continue with other questions! </a>";
}
Я тестировал большинство способов, Что мне нужно сделать, это запустить проверку, чтобы увидеть, если текущий зарегистрированный пользователь уже правильно ответил на QuestionID, Я использую num_rows, чтобы увидеть, если его больше 0, если оно больше 0, они ответили на него.
Итак, мой вопрос: правильно ли я подхожу к нему и какой подход следует принять?
Ваша логика возвращается на передний план. Вам не нужно сначала проверять. Вместо этого создайте составной ключ для пользователя и ответ. – Strawberry
Также посмотрите, как вы подготовили второй запрос? Это хорошо. – Strawberry