Код для проверки значения в mysql с помощью php и успешного возврата будет перенаправлен на другую страницу. В принципе, я хочу, чтобы код, введенный в поле, проверил в таблице MySQL, если он будет найден, тогда проверьте статус в следующем столбце, и если он будет найден неиспользованным, тогда сделайте его используемым, и пользователь перенаправит на страницу регистрации. Внесены изменения согласно предложениям, получены ошибки на веб-странице.
redeem-code.php:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
<html>
<head>
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "redeem_code";
$rcode = "";
$status = "";
$errors = array();
$db = mysqli_connect($servername, $username, $password, $dbname);
// call the redeem() function if redeem_btn is clicked
if (isset($_POST['redeem_btn'])) {
$err = array();
redeem();
}
// Redeem Code
function redeem(){
// call these variables with the global keyword to make them available in function
global $db, $errors, $rcode, $status;
// receive all input values from the form. Call the e() function
// defined below to escape form values
$rcode = e($_POST['rcode']);
$status = e($_POST['status']);
// form validation: ensure that the form is correctly filled
if (empty($rcode)) {
array_push($errors, "Code is required");
}
// Redeem Code if there are no errors in the form
if (count($errors) == 1) {
$query = "SELECT * FROM redeem_codes WHERE rcode='$rcode' LIMIT 1";
$results = mysqli_query($db, $query);
if (mysqli_num_rows($results) == 0) {
$code_found = mysqli_fetch_assoc($results);
if ($code_found['status'] == 'unused') {
header('location: register.php');
}else{
echo "Code not found";
header('location: index.php');
}
}
else {
echo "error";
//array_push($errors, "Invalid Code");
}
}
}
?>
</head>
<body>
<?php foreach( $err as $line ) { ?>
<div style = "error"><?php echo $line; ?></div>
<?php } ?>
<div class = "widget">
<h3>Redeem Code</h3>
<form method = "post" action = "redeem.php" role = "form" class = "contactForm text-left">
<div class = "form-group">
<input type = "text" name = "rcode" class = "form-control" id = "rcode" placeholder = "Enter code" data-rule = "minlen:4" data-msg = "Please enter at least 4 chars" />
<div class = "validation"></div>
</div>
<div class = "text-left"><button type = "submit" class = "btn btn-primary btn-lg" name = "redeem_btn">Redeem</button>
</div>
</form>
</div>
</body>
</html>С какой проблемой вы столкнулись? и, как предложил Магнус Эрикссон, используйте if (count ($ errors) == 0)
Вам также не хватает } перед последним else { в вашем коде, что должно дать вам ошибку синтаксического анализа.
@Javed: В настоящее время все условия приводят меня к пустой странице с URL-адресом <локальный: 8888 / redeem_function / redeem.php> (при нажатии кнопки отправки без ввода кода / неправильного ввода кода / правильного ввода кода). Я хочу, чтобы код проверял из таблицы MySQL и менял статус на следующий столбец, если он не использовался. и перенаправляем пользователя на registration.html
проверьте, есть ли у вас ошибки, с помощью print_r ($ errors)
Пустая страница может быть вызвана ошибками. Проверьте журнал ошибок вашего сервера, чтобы узнать, если вы его получили. Это может быть проблема с синтаксисом, о которой я упоминал ранее. Вы также можете изменить способ отображения ошибок PHP и указать ему, чтобы он отображал все ошибки прямо на экране (это не то, что вы хотите в производственной среде, поскольку он может отображать конфиденциальные данные, но во время разработки вы должны). Вот как показать все ошибки и предупреждения: stackoverflow.com/questions/5438060/…
Итак, вы хотите, чтобы мы написали условный запрос UPDATE, верно? Вы не добавили попытку кодирования для этой части.
Я не вижу поля в вашей html-форме с name = "status". Этот $_POST['status'] должен вызвать проблемы.
Пара указателей; select * бесполезен для отладки (на самом деле никогда не пригодится). И LIMIT без ORDER BY бессмысленно.
@mickmackusa "status" находится и проверяется только в таблице MySQL рядом со значением кода и изменяется с "unused" на "used". Если это значение показывает «использовано», то верните / отобразите «Код уже использован».
Получена ошибка: Уведомление: неопределенная переменная: ошибка в /Applications/MAMP/htdocs/connection_check/redeem-code.php в строке 68 Предупреждение: неверный аргумент указан для foreach () в / Applications / MAMP / htdocs / connection_check / redeem-code. php в строке 68
Переместите $err = array(); за пределы блока условий.






if (count($errors) == 1)будет истинным, если есть ошибка является, а не если ошибок нет.