Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: $_POST w OOP PDO
Forum PHP.pl > Forum > PHP > Object-oriented programming
Sakil
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.
markonix
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.
Sakil
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?
markonix
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.
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.