Witam !
Próbuję do formularza dodać listę rozwijalną
Jak to zrobić?
Jestem w tym temacie zielony.
Moje próby kończą się komunikatem
Fatal error: Call to a member function fetch_row() on a non-object in C:\xampp\htdocs\zarejestruj\register.php on line 19
a to listing:
<?php
require 'config.php';
if ($_POST) {
// Zabezpiecz dane z formularza przed kodem HTML i ewentualnymi atakami SQL Injection
// Nie ma konieczności filtrowania haseł, bo one i tak zostaną zahashowane przed wstawieniem
// do bazy danych
$login = $db->real_escape_string(htmlspecialchars(trim($_POST['login'])));
$password = $_POST['password'];
$passwordVerify = $_POST['password_v'];
$email = $db->real_escape_string(htmlspecialchars(trim($_POST['email'])));
$emailVerify = $db->real_escape_string(htmlspecialchars(trim($_POST['email_v'])));
$produkcja = $db->real_escape_string(htmlspecialchars(trim($_POST['produkcja'])));
// Sprawdź czy podane przez użytkownika email lub login nie są zajęte
$checkLogin = $db->query("SELECT COUNT(*) FROM users WHERE login = '$login'")->fetch_row();
$checkEmail = $db->query("SELECT COUNT(*) FROM users WHERE email = '$email'")->fetch_row();
// Podstawowa walidacja formularza
$errors = array();
if (empty($login) || empty($email) || empty($emailVerify) || empty($password) || empty($passwordVerify) || empty($produkcja)) {
$errors[] = 'Proszę wypełnić wszystkie pola';
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = 'Podany adres e-mail jest niepoprawny';
}
if ($checkLogin[0] > 0) {
$errors[] = 'Ten login jest już zajęty';
}
if ($checkEmail[0] > 0) {
$errors[] = 'Ten e-mail jest już używany';
}
if ($password != $passwordVerify) {
$errors[] = 'Podane hasła się nie zgadzają';
}
if ($email != $emailVerify) {
$errors[] = 'Podane adresy e-mail się nie zgadzają';
}
// Jeśli wystąpiły jakieś błędy, to je pokaż
if (!empty($errors)) {
foreach ($errors as $error) {
echo '<p class="error">'.$error.'</p>';
}
} else {
// Blędów nie ma, możemy kontynuować rejestrację
$password = password_hash($password, PASSWORD_BCRYPT); // hashowanie hasła
// Zapisz dane do bazy
$result = $db->query("INSERT INTO bazalogow (login, email, password, produkcja) VALUES('$login', '$email', '$password', '$produkcja')");
if (!$result) {
echo '<p class="error">Wystąpił błąd przy rejestrowaniu użytkownika.<br>'.$db->error.'</p>';
} else {
echo '<p class="success">'.$login.', zostałeś zarejestrowany.
<br><a href="login.php">Logowanie</a></p>';
}
}
}
?>
<form method="post" action="register.php">
<label for="login">Login:</label>
<input maxlength="32" type="text" name="login" id="login" required>
<br><br>
<label for="password">Hasło:</label>
<input type="password" name="password" id="password" required>
<br><br>
<label for="password_v">Hasło (ponownie):</label>
<input type="password" name="password_v" id="password_v" required>
<br><br>
<label for="email">Email:</label>
<input type="email" name="email" maxlength="255" id="email" required>
<br><br>
<label for="email_v">Email (ponownie):</label>
<input type="email" name="email_v" maxlength="255" id="email_v" required>
<br>
<label for="produkcja">Produkcja:</label>
<select name="produkcja" id="produkcja" required>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="inne">inne</option>
</select>
<br><br>
<input type="submit" value="Zarejestruj">
<?php
require 'footer.php';