riquelme
12.06.2006, 22:39:13
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
12.06.2006, 22:50:10
login=$login
na
login='$login'
tekst w mysql trzeba brac w ciapki
prosze uzywac bbcode
riquelme
13.06.2006, 11:50:19
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
13.06.2006, 11:56:26
dziwnie masz to skonstruowane. mimo ze bedziesz mial, iz login istnieje, to i tak przechodzisz dalej do dodawania usera. gdzie sens i logika?

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:
<?php
$wynik=mysql_query("SELECT * FROM users WHERE login='$login'"); {
echo "Już taki login istnieje!"; }
?>
co do niedodawania to walnij se :
<?php
?>
i zobacz czy ci nie pluje bledami
pomine juz ten szczegol:
<?php
if (!$wynik)
{
echo "Rejestracja zakończona pomyślnie"; }
?>
ze jezeli zapytanie wypluje ci bledy to ty piszesz ze wszystko jest ok
riquelme
13.06.2006, 13:08:13
Teraz po kliknięciu Rejestruj wyskakuje błąd : "Column count doesn't match value count at row 1"
nospor
13.06.2006, 13:12:46
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
13.06.2006, 13:50:45
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
13.06.2006, 13:54:20
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
13.06.2006, 14:00:47
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
13.06.2006, 14:01:39
disabled="disabled"
pola tego typu nie sa przesylane formularzem, wiec masz 0

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
6.07.2006, 06:53:42
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:
<?
$zapis="INSERT INTO users(imie,nazwisko,email,login, haslo,rodzaj) VALUES('".$_POST['imie']."', '".$_POST['nazwisko']."', ''".$_POST['email']."', ''".$_POST['login']."', ''".$_POST['haslo']."', ' '".$_POST['rodzaj']."', ')";
?>
Cysiaczek
6.07.2006, 07:33:54
Po prostu zamiast zmiennej wpisujesz ręcznie do zapytania 1 (w zmiennej tez możesz

<?php
$zapis="INSERT INTO users(imie,nazwisko,email,login, haslo,rodzaj) VALUES('".$_POST['imie']."', '".$_POST['nazwisko']."', ''".$_POST['email']."', ''".$_POST['login']."', ''".$_POST['haslo']."', '1', ')";
?>
riquelme
6.07.2006, 17:41:10
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
7.07.2006, 12:58:49
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.