Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Zapytanie do dwóch tabel jednocześnie
kubax33
post
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 1
Dołączył: 27.01.2010

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


  1.  
  2. $user = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM uzytkownicy WHERE login = '$login' AND pass = '$pass'"));
  3. $user = mysql_fetch_array(mysql_query("SELECT * FROM uzytkownicy WHERE id='$id' LIMIT 1;"));


Mam taki dwa zapytania do bazy i chciałbym, aby w każdym zapytaniu pobierano informacje nie tylko z tabeli "uzytkownicy" ale kolejnej "uzytkownicy_2".
Czytałem o UNION ALL itp. ale chyba źle stosuję te warunki.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kubax33
post
Post #2





Grupa: Zarejestrowani
Postów: 157
Pomógł: 1
Dołączył: 27.01.2010

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


Ponieważ mam system logowania usher-a i teraz dla przykładu logują się do niego trenerzy oraz piłkarze. Tylko trener może zakładać konta piłkarzom, a trenerowi może założyć tylko administrator. Dlatego chcę mieć podział na tych przykładowych trenerów i piłkarzy, aby wszystkie dane były w osobnych tabelach.
Min dlatego, że dla trenera potrzebuję np. 4 kolumny ID LOGIN PASS EMAIL a dla piłkarza LOGIN PASS EMAIL ILOSC_MECZY GRAŁ_MINUT itd. więc nie chciałbym zaśmiecać głównego użytkownika w tym przypadku trenera niepotrzebnymi kolumnami.

Opieram się na darmowym systemie rejestracji znalezionym w sieci:

LOGIN.php
  1. $login = htmlspecialchars(mysql_real_escape_string($_POST['login']));
  2. $pass = mysql_real_escape_string($_POST['pass']);
  3.  
  4. if ($_POST['send'] == 1) {
  5. // Sprawdź, czy wszystkie pola zostały uzupełnione
  6. if (!$login or empty($login)) {
  7. die ('<p class="error">Wypełnij pole z loginem!</p>');
  8. }
  9.  
  10. if (!$pass or empty($pass)) {
  11. die ('<p class="error">Wypełnij pole z hasłem!</p>');
  12. }
  13.  
  14. $pass = user::passSalter($pass); // Posól i zahashuj hasło
  15.  
  16. // Sprawdź, czy użytkownik o podanym loginie i haśle isnieje w bazie danych
  17. $userExists = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE login = '$login' AND pass = '$pass'"));
  18.  
  19. if ($userExists[0] == 0) {
  20. // Użytkownik nie istnieje w bazie
  21. echo '<p class="error">Użytkownik o podanym loginie i haśle nie istnieje.</p>';
  22. }
  23.  
  24. else {
  25. // Użytkownik istnieje
  26. $user = user::getData($login, $pass); // Pobierz dane użytknika do tablicy i zapisz ją do zmiennej $user
  27.  
  28. // Przypisz pobrane dane do sesji
  29. $_SESSION['login'] = $login;
  30. $_SESSION['pass'] = $pass;
  31.  
  32. echo '<p class="success">Zostałeś zalogowany. Możesz przejść na <a href="index.php">stronę główną</a></p>';
  33. }
  34. }
  35.  


CLASS.php

  1. class user {
  2.  
  3. public static $user = array();
  4.  
  5. /**
  6.   * Zwraca tablicę ze wszystkimi danymi o użytkowniku.
  7.   * Indeksy tablicy odpowiadają nazwom pól w bazie danych (login, pass etc...)
  8.   * @param string $login
  9.   * @param string $pass
  10.   * @return array
  11.   */
  12. public function getData ($login, $pass) {
  13. if ($login == '') $login = $_SESSION['login'];
  14. if ($pass == '') $pass = $_SESSION['pass'];
  15.  
  16. self::$user = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE login='$login' AND pass='$pass' LIMIT 1;"));
  17. return self::$user;
  18. }
  19.  
  20.  
  21. /**
  22.   * Zwraca tablicę ze wszystkimi danymi o użytkowniku, tak jak powyższa metoda klasy,
  23.   * ale rozpoznaje użytkownika nie po podaniu loginu i hasła tylko po podaniu ID.
  24.   * Używana np. do wyświetlania strony profilu.
  25.   * @param int $id
  26.   * @return array
  27.   */
  28. public function getDataById ($id) {
  29. $user = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='$id' LIMIT 1;"));
  30. return $user;
  31. }
  32.  
  33. /**
  34.   * Jeśli użytkownik jest zalogowany - zwraca true, w przeciwnym wypadku - false
  35.   * @return bool
  36.   */
  37. public function isLogged () {
  38. if (empty($_SESSION['login']) || empty($_SESSION['pass'])) {
  39. return false;
  40. }
  41.  
  42. else {
  43. return true;
  44. }
  45. }
  46.  
  47. /**
  48.   * "Soli" hasło przed jego zahashowaniem funkcją md5()
  49.   * @param string $pass
  50.   * @return string
  51.   */
  52. public function passSalter ($pass) {
  53. $pass = '$@@#$#@$'.$pass.'q2#$3$%##@';
  54. return md5($pass);
  55. }
  56.  
  57. }
Go to the top of the page
+Quote Post

Posty w temacie


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: 27.12.2025 - 21:54