Мой код должен сохранить год, например 1999
, в базу данных mysql, но это не будет. Он проверит, не набрал ли пользователь только числа и длиной не менее 4 цифр, или если ничего не было введено правильно, но оно не сохранит правильный год? Как я могу исправить эту проблему.Проблема проверки формы PHP?
Вот код PHP.
if(isset($_POST['year']) && intval($_POST['year']) && strlen($_POST['year']) == 4) {
$year = mysqli_real_escape_string($mysqli, $purifier->purify(htmlentities(strip_tags($_POST['year']))));
} else if($_POST['year'] && strlen($_POST['year']) < 4) {
echo '<p class="error">year is not correct!</p>';
} else if($_POST['year'] == NULL) {
// do something
}
Вот где код будет.
if (mysqli_num_rows($dbc) == 0) {
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"INSERT INTO users (user_id, year)
VALUES ('$user_id', '$year')");
}
if ($dbc == TRUE) {
$dbc = mysqli_query($mysqli,"UPDATE users
SET year = '$year'
WHERE user_id = '$user_id'");
echo '<p class="changes-saved">Your changes have been saved!</p>';
}
if (!$dbc) {
print mysqli_error($mysqli);
return;
}
Код указан вместе.
if (isset($_POST['submit'])) {
if(isset($_POST['year']) && intval($_POST['year']) && strlen($_POST['year']) == 4) {
$year = mysqli_real_escape_string($mysqli, $purifier->purify(htmlentities(strip_tags($_POST['year']))));
} else if($_POST['year'] && strlen($_POST['year']) < 4) {
echo '<p class="error">year is not correct!</p>';
} else if($_POST['year'] == NULL) {
if (mysqli_num_rows($dbc) == 0) {
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"INSERT INTO users (user_id, year)
VALUES ('$user_id', '$year')");
}
if ($dbc == TRUE) {
$dbc = mysqli_query($mysqli,"UPDATE users
SET year = '$year'
WHERE user_id = '$user_id'");
echo '<p class="changes-saved">Your changes have been saved!</p>';
}
if (!$dbc) {
print mysqli_error($mysqli);
return;
}
}
}
Проблема должна быть на этой линии.
if(isset($_POST['year']) && intval($_POST['year']) && strlen($_POST['year']) == 4) {
$year = mysqli_real_escape_string($mysqli, $purifier->purify(htmlentities(strip_tags($_POST['year']))));
Ok, так что «не будет сохранять правильный год», но что * это * это сделать? - распечатать сообщение об ошибке? сохранить неправильное значение? –
Это просто не спасет правильный год, который он должен сделать. – TaG
Спасибо за то, что вы обновили свой вопрос с помощью кода DB, но я до сих пор не вижу, как два кодовых блока связаны друг с другом? Вы вызываете if (mysqli_num_rows ($ dbc) == 0) сразу после первого блока кода? – klabranche