Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]rejestracja błąd
riquelme
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 1.04.2006

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


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





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




login=$login
na
login='$login'
tekst w mysql trzeba brac w ciapki

prosze uzywac bbcode
Go to the top of the page
+Quote Post
riquelme
post
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 1.04.2006

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


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.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




dziwnie masz to skonstruowane. mimo ze bedziesz mial, iz login istnieje, to i tak przechodzisz dalej do dodawania usera. gdzie sens i logika? (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
riquelme
post
Post #5





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 1.04.2006

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


Teraz po kliknięciu Rejestruj wyskakuje błąd : "Column count doesn't match value count at row 1"
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
riquelme
post
Post #7





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 1.04.2006

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


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.
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
riquelme
post
Post #9





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 1.04.2006

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


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
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




disabled="disabled"
pola tego typu nie sa przesylane formularzem, wiec masz 0 (IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post
riquelme
post
Post #11





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 1.04.2006

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


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. ?>
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #12





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Po prostu zamiast zmiennej wpisujesz ręcznie do zapytania 1 (w zmiennej tez możesz (IMG:http://forum.php.pl/style_emoticons/default/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. ?>
Go to the top of the page
+Quote Post
riquelme
post
Post #13





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 1.04.2006

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


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.
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ale to pole to int? jak tak to zamiast
.., '1',...
ma byc
..., 1,....
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: 23.08.2025 - 08:16