Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Skrypt rejestracji użytkoników
Forum PHP.pl > Forum > Przedszkole
IMP
Witam zaczynam przygode z php i chcialbym napisac wlasny skrypt zakladania konta na stronie. I mam problem z fragmentem ktory ma sprawdzac czyy dany uzytkonik juz przypapdkiem nie istnieje.

Oto caly kod:
  1. <?php
  2. $nick = $_POST['nick'];
  3.     $nick = trim($nick);
  4.     $nick = htmlspecialchars($nick);
  5.     $pass_1 = $_POST['pass_1'];
  6.     $pass_2 = $_POST['pass_2'];
  7.     $email = $_POST['email'];
  8.         if (!empty($_POST['nick']) && !empty($_POST['pass_1']) && !empty($_POST['pass_2']) && $pass_1 === $pass_2 && !empty($_POST['email']))
  9.         {
  10.         mysql_connect('localhost', 'root', '*******');
  11.         mysql_selectdb('forum');
  12.                 $query = &#092;"SELECT * FROM users WHERE EXIST $nick = ANY (SELECT nick FROM users)\";
  13.         $result = mysql_query($query);
  14.                 $query2 = &#092;"SELECT * FROM users WHERE $email = ANY (SELECT email FROM users)\"; 
  15.         $result2 = mysql_query($query2);
  16.          if ($result == FALSE && $result2 == FALSE)
  17.          {    
  18.             $query3 = &#092;"SELECT * FROM users\";
  19.             $result3 = mysql_query($query3);
  20.             if ($result3 == 0)
  21.             {
  22.                 $id = 0;
  23.             }
  24.             else 
  25.             {
  26.             $num = mysql_numrows($result3);
  27.             $id = $num+1;
  28.             }
  29.             $zapytanie = &#092;"insert into users (`id`, `nick`, `pass`, `email`) values('\".mysql_escape_string($id).\"', '\".mysql_escape_string($nick).\"', '\".mysql_escape_string($pass_1).\"', '\".mysql_escape_string($email).\"')\";
  30.             mysql_query($zapytanie);
  31.             echo 'wsio okej, id= '.$id.' '.$nick;
  32.          }
  33.                 }
  34.     else 
  35.     {
  36.         echo 'Żadne pole nie moze byc puste, a haslo w obu polach musi byc takie samo.';
  37.     }
  38. ?>


Dokladnie chodzi mi o ten fragment:
  1. <?php
  2. $query = &#092;"SELECT * FROM users WHERE EXIST $nick = ANY (SELECT nick FROM users)\";
  3.         $result = mysql_query($query);
  4.                 $query2 = &#092;"SELECT * FROM users WHERE $email = ANY (SELECT email FROM users)\"; 
  5.         $result2 = mysql_query($query2);
  6.          if ($result == FALSE && $result2 == FALSE)
  7. ?>
l0ud
Samo mysql_query nie zwróci Ci true lub false w zależności od zapytania. (zawsze zwróci true, jeżeli tylko jego składnia jest poprawna i zapytanie nie zwróciło żadnego błędu). Musisz po prostu pobrać dane za pomocą mysql_result(). Btw. mysql_num_rows(), nie mysql_numrows(). I mogłeś się powstrzymać przed podaniem danych do bazy rolleyes.gif
Sabistik
Proszę o poprawę tytułu tematu na zgodny z regulaminem działu przedszkole inaczej zostanie zamknięty.
IMP
Juz poprawiam tylko doczytam sie gdizes jak to ma wygladac:)

EDIT:------------------------------------------------------

Kolejna odsłona interesującego mnie fragmentu:

  1. <?php
  2. $query = &#092;"SELECT * FROM users WHERE $nick = ANY (SELECT nick FROM users)\";
  3.         $result = mysql_query($query);
  4.         $nick_check = mysql_result($result,0,0);
  5.  
  6.                 $query2 = &#092;"SELECT * FROM users WHERE $email = ANY (SELECT email FROM users)\"; 
  7.         $result2 = mysql_query($query2);
  8.         $email_check = mysql_result($result2,0,0);
  9.  
  10.          if ($email_check == $email || $nick_check == $nick)
  11. ?>


Błąd:

  1. Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\rejestracja_skrypt.php on line 31


Prosze o pomoc smile.gif
l0ud
To oznacza że zapytanie jest niepoprawne. Na przykładnie pierwszego:

Kod
$query = "SELECT `id` FROM `users` WHERE `nick`=`$nick`";


Tak powinno wyglądać najprostsze zapytanie.
IMP
Zmienilem nieco koncepcje:

  1. <?php
  2. $query = "SELECT `id` FROM `users` WHERE `nick`=`$nick`";
  3. $result = mysql_query($query);
  4. $nick_check = mysql_num_rows($result);
  5. ?>


Jednak 3 linijka wywala blad:  

  1. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\rejestracja_skrypt.php on line 27



  1. <?php
  2. $query2 = "SELECT `id` FROM `users` WHERE `email`=`$email`";
  3. $result2 = mysql_query($query2);
  4.  $email_check = mysql_num_rows($result2);
  5. ?>


Jednak 3 linijka wywala blad:  

  1. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\rejestracja_skrypt.php on line 31
l0ud
Dodaj pod pierwszym mysql_query():

  1. <?php
  2. echo mysql_errno() . ": " . mysql_error(). "\n";
  3. ?>


I wklej jaki błąd się wyświetli (o ile to nastąpi)
IMP
  1. 1054: Unknown column '1' in 'where clause'


Zaczolem szperac w internecie i doszedlem do wniosku ze to mzoe byc zwiazane z mysql wiec podam wam jak jest skonstruowana tabela:

id bigint(200) Nie
nick varchar(15) ucs2_polish_ci Nie
pass varchar(20) ucs2_polish_ci Nie
email varchar(30) ucs2_polish_ci Nie

Odpowiednio pole typ null

moglbyb mi ktos to wytlumaczyc? http://bugs.mysql.com/bug.php?id=13551
Gość
<?php
$query = "SELECT * FROM `users` WHERE `nick`=`$nick`";
$result = mysql_query($query);
$nick_check = mysql_num_rows($result);
?>
IMP
Niestety zadnej zmiany ciagle ten sam blad:/
Scoout
Z tego co sie oriętuje chodzi ci o skrupt który sprawdzi czy w mysql istnieje już taka osobba o danym nicku a więdz proszę:

Kod
$zapytanie='SELECT id FROM rejestracja WHERE nick="'.$nick.'"';
$result=mysql_query($zapytanie);
$row=mysql_fetch_array($result);


a następnie sprawdzasz:

[center]
Kod
if($row!==false) $rejestracjablad.="Taki Nick juz istnieje.<br>";
IMP
moglbys jeszcze objasnic na czym polega roznica miedzy moim a twoim kodem? i dalczego u mnie wywalilo blad?
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.