Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]rejestracja błąd
Forum PHP.pl > Forum > Przedszkole
riquelme
Oto mój skrypt do rejestracji nowych użytkowników:

<?
$polaczenie = mysql_connect("localhost", "w", "e");
mysql_select_db("w", $polaczenie) or die ("Nie mozna sie połączyć");
$imie=$_POST['imie'];
$nazwisko=$_POST['nazwisko'];
$email=$_POST['email'];
$login=$_POST['login'];
$haslo=$_POST['haslo'];
$haslo2=$_POST['haslo2'];
$rodzaj=$_POST['rodzaj'];

if ($haslo != $haslo2)
{
echo "Hasła nie są takie same!";
}

$wynik=mysql_query("SELECT * FROM users WHERE login=$login");
echo mysql_error();
if ($wynik!==0)
{
echo "Już taki login istnieje!";

}
$zapis="INSERT INTO users(imie,nazwisko,email,login, haslo,rodzaj, data) VALUES('".$_POST['imie']."', '".$_POST['nazwisko']."', ''".$_POST['email']."', ''".$_POST['haslo']."', ''".$_POST['haslo2']."', ' '".$_POST['rodzaj']."', ')";
$wynik=mysql_query($zapis);

if (!$wynik)
{
echo "Rejestracja zakończona pomyślnie";
exit;
}
else
{
echo ('Rejestracja nie powiodła sie! ');
exit;
}

?>

Przy wypełnianiu formularza np we wszystkie pola wpisuje xxx tp wyświetla się komunikat : "Unknown column 'xxx' in 'where clause'Już taki login istnieje!Rejestracja zakończona pomyślnie". Co należy zmienić żeby prawidłowo dodawało użytkowników do bazy??
nospor
login=$login
na
login='$login'
tekst w mysql trzeba brac w ciapki

prosze uzywac bbcode
riquelme
Dzięki za odpowiedź,zrobiłem tak jak powiedziałeś,jednak teraz wyświetla sie komunikat : "Już taki login istnieje!Rejestracja zakończona pomyślnie." Chyba musiałem popełnić jakiś błąd w SQL bo nie dodaje użytkowników do bazy.
nospor
dziwnie masz to skonstruowane. mimo ze bedziesz mial, iz login istnieje, to i tak przechodzisz dalej do dodawania usera. gdzie sens i logika? smile.gif
pozatym zle sprawdzasz istnienie usera. mysql_query o ile nie ma bledow mysql zwraca dla selecta resource, czyli twoj warunek zawsze bedzie sprawdzony. powiino to byc tak:
  1. <?php
  2. $wynik=mysql_query("SELECT * FROM users WHERE login='$login'");
  3. if (mysql_num_rows($wynik) > 0)
  4. {
  5. echo "Już taki login istnieje!";
  6. }
  7. ?>


co do niedodawania to walnij se :
  1. <?php
  2. $wynik=mysql_query($zapis) or die(mysql_error());
  3. ?>
i zobacz czy ci nie pluje bledami

pomine juz ten szczegol:
  1. <?php
  2. if (!$wynik)
  3. {
  4. echo "Rejestracja zakończona pomyślnie";
  5. }
  6. ?>
ze jezeli zapytanie wypluje ci bledy to ty piszesz ze wszystko jest ok smile.gif
riquelme
Teraz po kliknięciu Rejestruj wyskakuje błąd : "Column count doesn't match value count at row 1"
nospor
no juz moglbys sam poszukac. Mowi to, iz nie pasuje liczba kolumn ktore wkladasz
Mowisze ze wkladasz:
imie,nazwisko,email,login, haslo,rodzaj, data
a w rzeczywostosci wkladasz:
imie,nazwisko,email,haslo,haslo2,rodzaj
wiec chyba cos sie nie zgadza
riquelme
Bardzo dziękuje,rejestracja prawie idealnie działa,ale uważam że to tylko drobny błąd.Mianowicie w formularzu , mam pole rodzaj zablokowane i wpisana wartość jest zawsze "1",natomiast po rejestracji w bazie danych zapisuje mi rodzaj jako 0.
nospor
1) przez jakie pole jest reprezentowane w formularzu to zablokowane (pokaz jego html)
2) w tabeli jaki typ ma to pole
3) skoro zawsze jest 1, to po co je tam walic? wkladaj do bazy od razu 1
riquelme
Ad.1
<td><input type="text" disabled="disabled" value="1" name="rodzaj" /></td>
Ad.2
W tabeli pole rodzaj ma wartość int.
Ad.3
Pole rodzaj jest mi potrzebne ,ponieważ przy logowaniu skrypt sprawdza rodzaj.Jeżeli jest 0 to otwiera się strona admina,1-strona użytkownika.Jestem początkujący w php,więc nie wiem w jak inny sposób zapisać automatycznie przy każdej rejestracji rodzaj 1
nospor
disabled="disabled"
pola tego typu nie sa przesylane formularzem, wiec masz 0 smile.gif
daj readonly albo najlepiej zrob hidden

ad3) no zamiast wpisywac to z posta przez $_POST['rodzaj'] to wpisz bezczelnie 1. no chyba ze jednak ten rodzaj w jakis posob sie zmienia gdzies tam to zrob jak pisalem wczesniej
riquelme
Zakładając że chce "bezszczelnie wpisywać 1" to jak ma wyglądać zapytanie,żeby zawsze dodawało 1 i nie potrzebne będzie do tego pole w formularzu??
Obecne zapytanie:
  1. <?
  2. $zapis="INSERT INTO users(imie,nazwisko,email,login, haslo,rodzaj) VALUES('".$_POST['imie']."', '".$_POST['nazwisko']."', ''".$_POST['email']."', ''".$_POST['login']."', ''".$_POST['haslo']."', ' '".$_POST['rodzaj']."', ')";
  3. ?>
Cysiaczek
Po prostu zamiast zmiennej wpisujesz ręcznie do zapytania 1 (w zmiennej tez możesz smile.gif

  1. <?php
  2. $zapis="INSERT INTO users(imie,nazwisko,email,login, haslo,rodzaj) VALUES('".$_POST['imie']."', '".$_POST['nazwisko']."', ''".$_POST['email']."', ''".$_POST['login']."', ''".$_POST['haslo']."', '1', ')";
  3. ?>
riquelme
Zrobiłem to jak napisałeś ,niestety przy rejestracji zwraca 0(pewnie interpretuje to jako false).Wiem że napewno sie da zrobić tak żeby zawsze 1 zapisywało,problem tkwi zapewne w szczegółach.
nospor
ale to pole to int? jak tak to zamiast
.., '1',...
ma byc
..., 1,....
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.