Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Problem z zapisem danych
Forum PHP.pl > Forum > Przedszkole
maxil
Witam napisałem sobie prostą klasę która wygląda tak:

  1. <?php
  2. class User
  3. {
  4. private $uid;
  5. private $fields;
  6.  
  7. public function __construct()
  8. {
  9. $this->uid = null;
  10. $this->fields = array('user_id' => '',
  11. 'username' => '',
  12. 'password' => '',
  13. 'position' => '',
  14. 'gadugadu' => '',
  15. 'pseudo' => '',
  16. 'email' => '',
  17. 'banned' => '');
  18. }
  19.  
  20. public function __get($field)
  21. {
  22. if ($field == 'userId')
  23. {
  24. return $this->uid;
  25. }
  26. else
  27. {
  28. return $this->fields[$field];
  29. }
  30. }
  31.  
  32. public function __set($field, $value)
  33. {
  34. if (array_key_exists($field, $this->fields))
  35. {
  36. $this->fields[$field] = $value;
  37. }
  38. }
  39.  
  40. public static function validateUsername($username)
  41. {
  42. return preg_match('/^[A-Z0-9]{2,20}$/i', $username);
  43. }
  44.  
  45. public static function validateEmailAddr($email)
  46. {
  47. return filter_var($email, FILTER_VALIDATE_EMAIL);
  48. }
  49.  
  50. public static function getById($uid)
  51. {
  52. $u = new User();
  53. $query = sprintf('SELECT * FROM %susers WHERE USER_ID = %d', DB_TBL_PREFIX, $uid);
  54. $result = mysql_query($query, $GLOBALS['DB']);
  55.  
  56. if (mysql_num_rows($result))
  57. {
  58. $row = mysql_fetch_assoc($result);
  59. $u->exist = true;
  60. $u->username = $row['username'];
  61. $u->gadugadu = $row['gadugadu'];
  62. $u->password = $row['password'];
  63. $u->position = $row['position'];
  64. $u->email = $row['email'];
  65. $u->banned = $row['banned'];
  66. $u->pseudo = $row['pseudo'];
  67. $u->uid = $uid;
  68. }
  69.  
  70. return $u;
  71. }


ciąg dalszy klasy:
  1. public static function getByUsername($username)
  2. {
  3. $u = new User();
  4. $query = "SELECT * FROM ".DB_TBL_PREFIX."users WHERE username = '".mysql_real_escape_string($username, $GLOBALS['DB'])."'";
  5. $result = mysql_query($query, $GLOBALS['DB']);
  6.  
  7. if (mysql_num_rows($result))
  8. {
  9. $row = mysql_fetch_assoc($result);
  10. $u->exists = TRUE;
  11. $u->username = $username;
  12. $u->password = $row['password'];
  13. $u->position = $row['position'];
  14. $u->gg = $row['gadugadu'];
  15. $u->email = $row['email'];
  16. $u->banned = $row['banned'];
  17. $u->uid = $row['user_id'];
  18. }
  19.  
  20. return $u;
  21. }
  22.  
  23. public static function save()
  24. {
  25. if ($this->uid)
  26. {
  27. $query = sprintf('UPDATE %susers SET password = "%s", gadugadu = "%s", email = "%s", pseudo = "%s" WHERE user_id = %d', DB_TBL_PREFIX,
  28. mysql_real_escape_string($this->password, $GLOBALS['DB']), mysql_real_escape_string($this->gadugadu, $GLOBALS['DB']),
  29. mysql_real_escape_string($this->email, $GLOBALS['DB']), mysql_real_escape_string($this->pseudo, $GLOBALS['DB']), $uid);
  30. mysql_query($query, $GLOBALS['DB']);
  31. }
  32. else
  33. {
  34. $query = "INSERT INTO ".DB_TBL_PREFIX."users SET username = '".mysql_real_escape_string($this->username, $GLOBALS['DB'])."',
  35. password = '".mysql_real_escape_string($this->password, $GLOBALS['DB'])."', position = '".mysql_real_escape_string($this->position, $GLOBALS['DB'])."',
  36. gadugadu = '".mysql_real_escape_string($this->gadugadu, $GLOBALS['DB'])."', email = '".mysql_real_escape_string($this->email, $GLOBALS['DB'])."',
  37. pseudo = '".mysql_real_escape_string($this->pseudo, $GLOBALS['DB'])."'";
  38. mysql_query($query, $GLOBALS['DB']);
  39. }
  40. }
  41.  
  42. public static function getUserAccess($uid)
  43. {
  44. $u = new User();
  45. $query = "SELECT autopilot, pozdrowienia, utwor, ramowka, lista, erds FROM ".DB_TBL_PREFIX."user_access WHERE user_id = '".$uid."'";
  46. $result = mysql_query($query, $GLOBALS['DB']);
  47.  
  48. if (mysql_num_rows($result))
  49. {
  50. $row = mysql_fetch_assoc($result);
  51. $u->autopilot = $row['autopilot'];
  52. $u->pozdrowienia = $row['pozdrowienia'];
  53. $u->utwor = $row['utwor'];
  54. $u->ramowka = $row['ramowka'];
  55. $u->erds = $row['erds'];
  56. }
  57.  
  58. return $u;
  59. }
  60.  
  61. public static function saveLogs($text, $data, $czas, $kategoria)
  62. {
  63. $u = new User();
  64. $query = "INSERT INTO ".DB_TBL_PREFIX."logs SET tresc = '".$text."', data = '".$data."', godzina = '".$czas."',
  65. kategoria = '".$kategoria."'";
  66. $result = mysql_query($query, $GLOBALS['DB']);
  67.  
  68. if (!$result)
  69. {
  70. $u->wynik = 'ok';
  71. }
  72.  
  73. return $u;
  74. }
  75. }
  76. ?>


otóż mam problem z modyfikacją danych.
funkcja za to odpowiedzialna wygląda tak:

  1. public static function save()
  2. {
  3. if ($this->uid)
  4. {
  5. $query = sprintf('UPDATE %susers SET password = "%s", gadugadu = "%s", email = "%s", pseudo = "%s" WHERE user_id = %d', DB_TBL_PREFIX,
  6. mysql_real_escape_string($this->password, $GLOBALS['DB']), mysql_real_escape_string($this->gadugadu, $GLOBALS['DB']),
  7. mysql_real_escape_string($this->email, $GLOBALS['DB']), mysql_real_escape_string($this->pseudo, $GLOBALS['DB']), $uid);
  8. mysql_query($query, $GLOBALS['DB']);
  9. }
  10. else
  11. {
  12. $query = "INSERT INTO ".DB_TBL_PREFIX."users SET username = '".mysql_real_escape_string($this->username, $GLOBALS['DB'])."',
  13. password = '".mysql_real_escape_string($this->password, $GLOBALS['DB'])."', position = '".mysql_real_escape_string($this->position, $GLOBALS['DB'])."',
  14. gadugadu = '".mysql_real_escape_string($this->gadugadu, $GLOBALS['DB'])."', email = '".mysql_real_escape_string($this->email, $GLOBALS['DB'])."',
  15. pseudo = '".mysql_real_escape_string($this->pseudo, $GLOBALS['DB'])."'";
  16. mysql_query($query, $GLOBALS['DB']);
  17. }
  18. }


podczas próby modyfikacji otrzymuje błąd:

Kod
Fatal error: Using $this when not in object context in C:\xampp\htdocs\panel\lib\user.php on line 99


dodam jeszcze że skrypt wywołuje tak:
blooregard
Nie możesz odwoływać się do składowych klasy poprzez $this w metodach zadeklarowanych jako statyczne, stąd ten błąd:
  1. public static function save()
  2. {
  3. if ($this->uid)
  4. {
  5. ...

muniekw
Tu masz trochę o metodach statycznych Metody statyczne
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.