Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]/[MySQL] Sprawdzenie zawartości bazy danych
Szypa
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 25.07.2007
Skąd: Ostroróg

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


Chciałbym dodać do skryptu rejestracji funkcje sprawdzającą czy nie ma już w bazie użytkownika o podanej nazwie lub adresie Email. Wie ktoś jak go zmodyfikować?

  1. <?php
  2. if (isset ($_POST['wyslij']))
  3. {
  4. $problem = FALSE;
  5.  
  6. if (empty ($_POST['uzytkownik']))
  7. {
  8. $problem = TRUE;
  9. print '<p>Proszę podac nazwę użytkownika!</p>';
  10. }
  11.  
  12. if (empty ($_POST['haslo1']))
  13. {
  14. $problem = TRUE;
  15. print '<p>Proszę podac hasło!</p>';
  16. }
  17.  
  18. if ($_POST['haslo1'] != $_POST['haslo2'])
  19. {
  20. $problem = TRUE;
  21. print '<p>Hasło nie jest zgodne z powtórzonym hasłem!</p>';
  22. }
  23.  
  24. if (!$problem)
  25. {
  26. if ($dbc = @mysql_connect ('localhost', 'XxX', 'XxX'))
  27. {
  28. if (!@mysql_select_db ('XxX'))
  29. {
  30. die ('<p>Nie można wybrać bazy danych, ponieważ: <b>' . mysql_error() . '</b></p>');
  31. }
  32. }
  33. else
  34. {
  35. die ('<p>Nie można połączyć się z MySQL, ponieważ: <b>' . mysql_error() . '</b></p>');
  36. }
  37. $email = strtolower($_POST['email']);
  38. $zapytanie = 'INSERT INTO niezarejestrowani (uzytkownik, haslo, email, gg, data) VALUES ("'.$_POST['uzytkownik'].'", "'.crypt($_POST['haslo1']).'", "'.$email.'", "'.$_POST['gg'].'", now())';
  39.  
  40. if (@mysql_query ($zapytanie))
  41. {
  42. print '<p><b>Zostałeś zarejestrowany na stronie!</b><br />Zaloguj się aby uzyskać specjalne opcje</p>';
  43. }
  44. else
  45. {
  46. print "<p>Nie można zarejestrowac na stronie ponieważ: <b>" . mysql_error() . "</b>. Wykonywane zapytanie: $zapytanie.</p>";
  47. }
  48. }
  49. else
  50. {
  51. print '<p>Brak wypełnionego pola! Proszę spróbować jeszcze raz!</p>';
  52. }
  53. } 
  54. else
  55. {
  56. ?>
  57. <p><strong>Podaj dane niezbędne dla rejestracji</strong></p>
  58. <form action ="rejestracja.php" method="post">
  59. <p><strong>Obowiązkowe</strong><br />
  60. Nazwa użytkownika: <input style="position:relative; left:13px" type="text" name="uzytkownik" size="20" /><br />
  61. Hasło: <input style="position:relative; left:80px" type="password" name="haslo1" size="20" /><br />
  62. Powtórz hasło: <input style="position:relative; left:39px" type="password" name="haslo2" size="20" /><br />
  63. Adres Email: <input style="position:relative; left:52px"type="text" name="email" size="20" /><br />
  64. <strong>Nieobowiazkowe</strong><br />
  65. Numer GG: <input style="position:relative; left:59px" type="text" name="gg" size="20" /><br />
  66. <input type="submit" name="wyslij" value="Zarejestruj" /></p>
  67. </form>
  68. <?php
  69. }
  70. ?>


Ten post edytował Szypa 5.08.2007, 23:54:47
Go to the top of the page
+Quote Post
mild
post
Post #2





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 22.04.2007
Skąd: Wrocław

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


  1. <?php
  2. $res = mysql_query("SELECT id FROM niezarejestrowani WHERE pole_do_sprawdzenia = 'wartosci_podana_przez uzytkownika'");
  3. if (mysql_num_rows($res) > 0 )
  4. {
  5. print '<p>Brak wypełnionego pola! Proszę spróbować jeszcze raz!</p>';
  6. die();
  7. }
  8. ?>

Nie zapomnij zmienic zapytania (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował mild 6.08.2007, 00:37:28
Go to the top of the page
+Quote Post
Szypa
post
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 25.07.2007
Skąd: Ostroróg

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


Teraz wygląda to tak:
  1. <?php
  2. $res = mysql_query("SELECT user_id FROM niezarejestrowani, uzytkownicy WHERE uzytkownicy = '{$_POST['uzytkownik']}' OR email = '{$_POST['email']}'");
  3.  
  4. if (mysql_num_rows($res) > 0 )
  5. {
  6. ?>


Ale coś wywala bład takowy:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\usr\krasnal\www\XxX\rejestracja.php on line 54
Go to the top of the page
+Quote Post
Sokal
post
Post #4





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 8.02.2007

Ostrzeżenie: (10%)
X----


A nie możesz skorzystać z rozszerzenia mysqli? Ja miałem jakieś dziwne problemy z tymi mysql_*() ;-)

edit:
Aj, bo w tych mysql_*() musisz podawać jako drugi parametr połączenie ;P

Ten post edytował Sokal 8.08.2007, 15:06:20
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #5





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




Nie podoba mi się to zapytanie sql - co to za wartości w tzw. "wąsach" {wartosc}?

Dodaj die() przy zapytaniu
  1. <?php
  2. $sql="SELECT user_id FROM niezarejestrowani, uzytkownicy WHERE uzytkownicy = '".$_POST['uzytkownik']."' OR email = '".$_POST['email']."'"
  3. $res = mysql_query($sql) or die(mysql_error());
  4. ?>


Zobacz jaki błąd wywali.

@Sokal : > Co ma do tego mysqli? :*
Go to the top of the page
+Quote Post
Sokal
post
Post #6





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 8.02.2007

Ostrzeżenie: (10%)
X----


Ja byłbym jednak za tym, że trzeba podawać drugi parametr .... czyli połączenie, ale zobacz najpierw Szypa czy to zapytanie, które napisał Cysio działa
Go to the top of the page
+Quote Post
Szypa
post
Post #7





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 25.07.2007
Skąd: Ostroróg

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


No to tak: Zapytanie cysiaczka działa "prawie"
Wyskakuje mi info:Kolumna: 'user_id' w field list jest dwuznaczna
Hmmm...W obu branych pod lupę tabelach jest taka tabela user_id z primary key`em i auto_incrementem.
Może to o to chodzi?
Co do wąsów: Tak mnie uczyła książka i czasami się sprawdza;)
A może zrobić to jakoś z zapytaniem COUNT z Mysql`a? Nigdy teg nie używałem, a w necie nie jest to dobrze wytłumaczone. Ktoś wie jak przerobić aktualny skrypt żeby sprawdzał to Count?

Ten post edytował Szypa 8.08.2007, 18:30:29
Go to the top of the page
+Quote Post
drPayton
post
Post #8





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


"Wąsy" w niczym nie przeszkadzają...
  1. <?php
  2. $sql="SELECT niezarejestrowani.user_id AS nid, uzytkownicy.user_id AS uid FROM niezarejestrowani, uzytkownicy WHERE uzytkownicy
     = '"
    .$_POST['uzytkownik']."' OR email = '".$_POST['email']."'"
  3. $res = mysql_query($sql) or die(mysql_error());
  4. ?>

I wtedy dalej w kodzie do pola user_id z tabeli niezarejestrowani odwołujesz się przez nid, a tabeli użytkownicy - poprzez uid
A co do count:
  1. <?php
  2. $sql="SELECT count(user_id) FROM uzytkownicy WHERE uzytkownicy = '".$_POST['uzytkownik']."' OR email = '".$_POST['email']."'"
  3. ?>


Ten post edytował drPayton 9.08.2007, 10:47:10
Go to the top of the page
+Quote Post
Cienki1980
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(Sokal @ 8.08.2007, 16:11:37 ) *
Ja byłbym jednak za tym, że trzeba podawać drugi parametr .... czyli połączenie, ale zobacz najpierw Szypa czy to zapytanie, które napisał Cysio działa


Zgodnie z tym co pisze manual
Cytat
resource mysql_query ( string $zapytanie [, resource $identyfikator_połączenia [, int $typ_wyniku]] )

mysql_query() wysyła zapytanie do aktywnej bazy na serwerze skojarzonym z podanym identyfikatorem połączenia. Jeżeli identyfikator_połączenia nie został podany, wykorzystywane jest ostatnio otwarte połączenie.
drugi parametr nie jest wymagany do poprawnego działania funkcji mysql_query.

Tak więc zapytanie Cysiaczka ( poza tym faktem, że w dwóch tabelach jest kolumna o takiej samej nazwie i to wywala zapytanie ) jest poprawne i działające w takiej postaci jak napisał.
Go to the top of the page
+Quote Post
Szypa
post
Post #10





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 25.07.2007
Skąd: Ostroróg

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


Jest gdzieś błąd tutaj, mógłby ktoś go zweryfikować? gdy podczas rejestracji podaje nazwę która już jest i email to nic sobie z tego nie robi i spokojnie wrzuca go do bazy:/

  1. <?php
  2. if (!$problem)
  3. {
  4. if ($dbc = @mysql_connect ('localhost', 'XxX', 'haslo'))
  5. {
  6. if (!@mysql_select_db ('XxX'))
  7. {
  8. die ('<p>Nie można wybrać bazy danych, ponieważ: <b>' . mysql_error() . '</b></p>');
  9.  }
  10. }
  11. else
  12. {
  13. die ('<p>Nie można połączyć się z MySQL, ponieważ: <b>' . mysql_error() . '</b></p>');
  14. }
  15.  
  16. $sql = "SELECT count(user_id) FROM niezarejestrowani WHERE uzytkownik = '".$_POST['uzytkownik']."' OR email = '".$_POST['email']."'";
  17.  
  18. if ($sql > 0 )
  19. {
  20. print '<p>Nie możesz się zarejestrować bo ktoś taki już jest blabla</p>';
  21. //Dalsze instrukcje
  22.  
  23. }
  24. else
  25. {
  26. $email = strtolower($_POST['email']);
  27. $zapytanie = 'INSERT INTO niezarejestrowani (uzytkownik, haslo, email, gg, data) VALUES ("'.$_POST['uzytkownik'].'", "'.crypt($_POST['haslo1']).'", "'.$email.'", "'.$_POST['gg'].'", now())';
  28.  
  29. if (@mysql_query ($zapytanie))
  30. {
  31. print '<p><b>Zostałeś zarejestrowany na stronie!</b><br />Zaloguj się aby uzyskać specjalne opcje</p>';
  32. }
  33. else
  34. {
  35. print "<p>Nie można zarejestrowac na stronie ponieważ: <b>" . mysql_error() . "</b>. Wykonywane zapytanie: $zapytanie.</p>";
  36. }
  37. }
  38.  
  39.  
  40. }
  41. else
  42. {
  43. print '<p>Brak wypełnionego pola! Proszę spróbować jeszcze raz!</p>';
  44. }
  45. ?>



Opcjonalnie mogę to zrobić tak, ale z kolei zawsze wyskoczy błąd:/
  1. <?php
  2. $sql = "SELECT count(user_id) FROM niezarejestrowani WHERE uzytkownik = '".$_POST['uzytkownik']."' OR email = '".$_POST['email']."'";
  3.  
  4. $res = mysql_query($sql) or die(mysql_error());
  5. if ($res > 0 )
  6. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #11





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




  1. <?php
  2. $sql = "SELECT count(user_id) FROM niezarejestrowani WHERE uzytkownik = '".$_POST['uzytkownik']."' OR email = '".$_POST['email']."'";
  3.  
  4. if ($sql > 0 )
  5. ?>

(IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif)
No przeciez zapytanie musisz wykonac a nie tylko napisac...

  1. <?php
  2. $res = mysql_query($sql) or die(mysql_error());
  3. if ($res > 0 )
  4. ?>

wynik nalezy jeszcze odebrac poprzez mysql_fetch_array(). kurka, korzystaj z manuala...
Go to the top of the page
+Quote Post
Szypa
post
Post #12





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 25.07.2007
Skąd: Ostroróg

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


Zrobiłem to troszeczkę inaczej:

  1. <?php
  2. $sql = "SELECT user_id FROM niezarejestrowani WHERE uzytkownik = '".$_POST['uzytkownik']."' OR email = '".$_POST['email']."'";
  3. $res = mysql_query($sql) or die(mysql_error());
  4. if (mysql_num_rows($res) > 0 )
  5. ?>


I ładnie śmiga:) Dzięki za pomoc!
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.12.2025 - 13:36