Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> $_POST w OOP PDO
Sakil
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 29.07.2011

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


Witam.
Robię prostą listę 'todo'.
Tak wygląda html z formularzem:
  1. <!DOCTYPE html>
  2. <head>
  3. <link rel="stylesheet" type="text/css" href="index.css" />
  4. <meta charset="UTF-8" />
  5. <title> Todo list </title>
  6. </head>
  7. <body>
  8. <div id="wrapper">
  9. <h1> Todo list </h1>
  10. <form action="dodaj.php" method="POST">
  11. <input type="text" name="todo" value="Co masz zrobić?" />
  12. <input type="submit" value="Dodaj" />
  13. </form>
  14. </div>
  15. </body>
  16. </html>


Dodaj.php:
  1. <?php
  2. class DB_CONN
  3. {
  4. public $todo = $_POST['todo'];
  5. public $DBH;
  6. public $STH;
  7.  
  8.  
  9. function __construct($path_to_db)
  10. {
  11. try
  12. {
  13. $this->DBH = new PDO("sqlite:".$path_to_db);
  14. echo "Succesfully connected<br />";
  15. }
  16. catch(PDOException $e)
  17. {
  18. echo $e->getMessage();
  19. }
  20. }
  21.  
  22. function __destruct()
  23. {
  24. $this->DBH = null;
  25. }
  26.  
  27. function add_todo()
  28. {
  29. try
  30. {
  31. $this->STH = $this->DBH->prepare("insert into todo_list (todo) values(':todo')");
  32. //var_dump($this->DBH->prepare("insert into todo_list (todo) values(:todo)"));
  33. $this->STH->bindParam(':todo', $this->todo);
  34. $this->STH->execute();
  35. }
  36. catch(PDOException $e)
  37. {
  38. echo $e->getMessage();
  39. }
  40. }
  41. }
  42.  
  43. $driver = new DB_CONN("D:/Programy/moja_db.db");
  44. $driver->add_todo('asd');
  45. print_r($_POST);
  46. ?>

PHP wywala errora: Parse error: syntax error, unexpected '$_POST' (T_VARIABLE) on line 5
Linijka 5:
  1. public $todo = $_POST['todo'];

Szukałem jakiś błędów w kodzie, ale jedynym średnikiem jaki mógłbym pominąć był ten przy error_reporting. Jeśli zmienię $todo na cokolwiek innego poza $_POST lub $_GET to wszystko działa. Poza tym jeśli wywalę tą linijkę poza klasę też wszystko działa.
Pracuję na PHP 5.4.4 na localhoscie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


To niedozwolona (na szczęście) konstrukcja.
Toż to straszna głupota gdyby takie coś dało się robić.

Dane do klasy przekazujesz z zewnątrz jako parametry metod.

Ten post edytował markonix 2.08.2012, 17:10:05


--------------------
Go to the top of the page
+Quote Post
Sakil
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 29.07.2011

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


Jakie niebezpieczeństwo się z tym wiążę? Mógłbyś podać jakiś realny przykład, bo po prostu nie mogę sobie tego wyobraźić biggrin.gif?
Go to the top of the page
+Quote Post
markonix
post
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Nie napisałem o żadnym niebezpieczeństwie tylko zupełnie bezsensownej składni.
U góry ustala się wyłącznie atrybuty klasy, domyślne parametry można ustalić w kostruktorze, a z zewnątrz idą przez parametry metod.
Tutaj będzie to logicznym aby dodać to do add_todo.


--------------------
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 Aktualny czas: 21.08.2025 - 11:14