Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Przesyłanie danych z formularza do PHP - problem, Błąd: Undefined property
xsalok
post 18.01.2016, 21:06:05
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 18.01.2016

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


Witam!
Pracuję aktualnie nad projektem z PHP na uczelnię i przeglądarka zwraca takie oto błędy oraz zapytanie:

Notice: Undefined property: user_data_base::$login in C:\xampp\htdocs\php_new\user_data_base.php on line 17

Notice: Undefined property: user_data_base::$email in C:\xampp\htdocs\php_new\user_data_base.php on line 17

Notice: Undefined property: user_data_base::$password in C:\xampp\htdocs\php_new\user_data_base.php on line 17

INSERT INTO users.users ('login','email','password') VALUES('','','');

Próbowałem przesyłać z formularza metodą GET i POST , obie dają te same rezultaty a ja nie wiem już co robić. Jak widać zapytanie które jest przesyłane do bazy danych jest puste(wartości z formularza).


plik z formularzem wygląda tak:
  1. <title> Rejestracja użytkownika</title>
  2. </head>
  3.  
  4. <form method="POST" action="" onsubmit="">
  5. <table border=0>
  6.  
  7. <tr>
  8. <td>Login </td>
  9. <td align="center"><input type="text" name="login" size="40" maxlength="50" /></td>
  10. </tr>
  11. <tr>
  12. <td>E-mail </td>
  13. <td align="center"><input type="email" name="email" size="40" maxlength="50" /></td>
  14. </tr>
  15. <tr>
  16. <td>Hasło</td>
  17. <td><input type="password" name="password" size="40" maxlength="50" /></td>
  18. </tr>
  19. <tr>
  20. <td colspan="2" align="center">
  21. <input name="rejestruj" type="submit" value="Rejestruj"/>
  22. <a href="index.html">Wstecz</a>
  23. </button>
  24. </td>
  25. </tr>
  26. </table>
  27. </form>
  28. </body>
  29.  
  30. </html>

  1. <?php
  2. if(isset($_POST['rejestruj'])) {
  3. include 'user.php';
  4. include 'user_data_base.php';
  5.  
  6.  
  7. $user = new user_data_base($_POST['login'],$_POST['email'],$_POST['password']);
  8. $user->save();
  9. }
  10.  
  11. ?>


a pozostałe pliki php z klasami tak:
1.user.php
  1. <?php
  2.  
  3. class user{
  4.  
  5. private $login;
  6. private $email;
  7. private $password;
  8.  
  9. function __construct($login,$email,$password){
  10. $this->login = $login;
  11. $this->email = $email;
  12. $this->password = $password;
  13. }
  14.  
  15.  
  16. }
  17. ?>

2.user_data_base.php
  1. <?php
  2.  
  3. $class_db_file = 'data_base.php';
  4. if (file_exists($class_db_file)){
  5. require_once($class_db_file);
  6. }
  7. else{
  8. echo 'Klasa ' .$class_db_file. ' nie została odnaleziona';
  9. }
  10.  
  11. class user_data_base extends user{
  12.  
  13. function save(){
  14. $db = new data_base();
  15. $db->connect();
  16. $sql = "INSERT INTO users.users ('login','email','password') VALUES('".$this->login."','".$this->email."','".$this->password."');";
  17. $db->select($sql);
  18. echo $sql;
  19. }
  20.  
  21. }
  22.  
  23.  
  24. ?>

3.data_base.php
  1. <?php
  2. class data_base{
  3.  
  4. // na początek zmienny prywatne, niedostępne poza klasą
  5. // ustalamy zmienne na stałe które w pliku php ustalamy
  6. // za pomocą define(DB_HOST, 'db_host');
  7. private $db_host = 'localhost'; // podstawiamy host bazy danych
  8. private $db_name = 'users'; // podajemy nazwę bazy danych
  9. private $db_user = 'user'; // podajemy nazwę użytkownika z uprawnieniami odczytu i zapisu
  10. private $db_passw = 'user'; // podajemy hasło dla użytkownika;
  11.  
  12. // zmienne publiczne - dostępne poza klasą
  13. public $connection; // połączenie
  14. public $error; // ew. błąd zwrócony przez bazę danych
  15.  
  16.  
  17. //łaczenie z bazą danych
  18. public function connect(){
  19. //sprawdzam czy uda mi się nawiązać połączenie z bazą danych
  20. //jeśli połączenie zostanie nawiązane podstawiam je pod zmienną $connection
  21. if($connection = mysql_connect($this->db_host, $this->db_user, $this->db_passw))
  22. //sprawdzam czy uda mi się wybrać bazę danych, jeśli tak to podstawiam pod $connection połączenie i zwracam true
  23. if(mysql_select_db($this->db_name, $connection)){
  24. $this->connection = $connection;
  25. return true;
  26. }
  27. //jeśli nie podstawiam pod zmienną error błąd MYSQL do późniejszego sformatowania
  28. else {
  29. $this->error=mysql_error();
  30. return false;
  31. }
  32. }
  33.  
  34.  
  35. //w przypadku powodzenia zwraca wynik zapytania SQL
  36. public function select($sql){
  37. //sprawdzam czy istnieje aktywne połączenie z bazą danych
  38. if($this->connection){
  39. //ustawiam kodowanie dla połączenia na UTF-8
  40. mysql_set_charset('utf8',$this->connection);
  41. //sprawdzam czy $sql zaiwera zapytanie SQL do bazy danych i czy nie jest pusta
  42. if(isset($sql) && $sql!=''){
  43. //wysyłam zapytanie do bazy jeśli operacja skończy się sukcesem to zwracam wynik
  44. if($result = mysql_query($sql)){
  45. return result;
  46. }
  47. //jeśli nie to błąd do $error
  48. else {
  49. $this->error = mysql_error();
  50. return false;
  51. }
  52. }
  53. else{
  54. $this->error = 'Błąd zapytania SQL';
  55. return false;
  56. }
  57. }
  58. else{
  59. $this->error = 'Brak połączenia z bazą danych';
  60. return false;
  61. }
  62. }//eof select();
  63.  
  64.  
  65. //funkcja która zwraca TRUE jako potwierdzenie pomyślnego wykonania operacji
  66. public function query($sql){
  67. if (isset($sql) && $sql != '') {
  68. if ($this->connection) {
  69. mysql_set_charset('utf8', $this->connection);
  70. //różnica pomiędzy selectem jest tutaj
  71. if (mysql_query($sql)){
  72. return true;
  73. } //eof różnica
  74. else {
  75. $this->error = mysql_error();
  76. return false;
  77. }
  78. }
  79. else {
  80. $this->error = 'Brak połączenia z bazą danych';
  81. return false;
  82. }
  83. }
  84. else {
  85. $this->error = 'Błąd zapytania SQL';
  86. return false;
  87. }
  88. }//eof query();
  89.  
  90.  
  91. //zamknięcie połączenia z bazą danych
  92. public function close(){
  93. if($this->connection){
  94. if (mysql_close($this->connection)){
  95. return true;
  96. }
  97. else{
  98. $this->error = mysql_error();
  99. return false;
  100. }
  101. }
  102. else{
  103. $this->error = 'Brak aktywnego połączenia';
  104. return false;
  105. }
  106.  
  107. }//eof close();
  108.  
  109. }
  110. ?>


Będę wdzięczny za jakąkolwiek wskazówkę.

Ten post edytował xsalok 18.01.2016, 21:10:36
Go to the top of the page
+Quote Post
darko
post 18.01.2016, 21:10:56
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Próbujesz dostać się bezpośrednio do zmiennych prywatnych, podstawy podstaw...

Cytat
$sql = "INSERT INTO users.users ('login','email','password') VALUES('".$this->login."','".$this->email."','".$this->password."');";



--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
xsalok
post 18.01.2016, 21:13:41
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 18.01.2016

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


Dzięki, faktycznie nie zwróciłem uwagi na zasięg zmiennych w klasie user smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 22:36