Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]lista rozwijalna, jak dołączyć listę rozwijalną
sargosa
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 3.03.2015

Ostrzeżenie: (0%)
-----


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';
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Proszę używać bb-code dla kodu...
Select/option jest tablicą, więc zasada taka:
  1. $zapytanie = "SELECT * FROM logowanie";
  2. $wynik = mysql_query($zapytanie);
  3.  
  4. while ($dane = mysql_fetch_array($wynik)) {
  5. echo '<option value="'.$dane['id'].'">'.$dane['produkcja'].'</option>';
  6. }
Go to the top of the page
+Quote Post
sargosa
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 3.03.2015

Ostrzeżenie: (0%)
-----


jak używać bbcode ?

w którym miejscu wkleić ten kod ?

gdzie są zapisane wartości z select: 1,2,3,4,5,inne ... ?
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #4





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Obsługi Forum musisz nauczyć się sam(a).
Kod trzeba wkleić tam, gdzie ma być wyświetlana lista rozwijana - myślałem, że to logiczne...
Błędem jest trzymanie wielu wartości w jednej komórce bazy danych. Ale jak kto woli...
Go to the top of the page
+Quote Post
sargosa
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 3.03.2015

Ostrzeżenie: (0%)
-----


Kshyhoo czy mógłbyś wkleić ten kawałek kodu do listingu i wyjaśnić mi te zmienne

  1. $zapytanie = "SELECT * FROM logowanie";
  2. $wynik = mysql_query($zapytanie);
  3.  
  4. while ($dane = mysql_fetch_array($wynik)) {
  5. echo '<option value="'.$[b]dane[/b]['id'].'">'.$[b]dane[/b]['produkcja'].'</option>';
  6. }


Czy muszę utworzyć nową tabelę w bazie dla 1,2,3,4,5,inne ...

pilnie potrzebuję rozwiązania tego problemu już mi łeb pęka

Kshyhoo pomocy ... !
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 23:28