Cześć, robię swój własny CMS. Po raz pierwszy chcę napisać skrypt nie strukturalnie tylko obiektowo. Napotkałem kilka problemów. Aktualnie pracuję nad aktualnościami. Może przedstawię najpierw kod z plików:
add_news.php:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Add news - CMS</title>
<style>
a { color: #000; text-decoration:none; }
a:hover { color: #40b000; }
nav { text-align:center; width: 50%; }
nav li { display: inline; list-style-type:none; }
textarea { width: 250px; height: 150px; }
.name { font-size: 1.250em; text-align: center; }
.content { text-align:center; margin: 120px; }
</style>
</head>
<body>
<div class="name">
<p>Content management system</p>
</div>
<nav>
<ul>
<li><a href="page">Home page</a></li>
<li><a href="add_news">Add news</a></li>
</ul>
</nav>
<div class="content">
<form action="add_news?action=add" method="post">
<p>Enter your news topic:</p>
<input type="text" name="topic" placeholder="topic"/>
<p>Enter your news</p>
<textarea type="text" name="news" placeholder="news"></textarea>
<p><button type="submit" name="submit-news">Add news</button></p>
</form>
</div>
<?php
require_once 'sql_database.class.php';
require_once 'add_news.class.php';
?>
</body>
</html>
sql_database.class.php:
<?php
class SqlDatabase{
function __construct() {
try{
$db = new PDO('mysql:host=localhost;dbname=cms', 'root', '',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}catch(PDOException $e){
print_r('Connection database was broken!');
}
}
}
$ins = new SqlDatabase();
?>
add_news.class.php:
<?php
class ValidateUrl{
public function AddNews(){
if (isset ($_GET['action']) && $_GET['action'] == 'add') {
echo 'Youe news will by add!';
}
}
public function ExampleQuery(){
$query = $db->exec("INSERT INTO `CMS` SET `nick` = 'cos'");
}
}
$ins = new ValidateUrl();
$ins->AddNews();
$ins->ExampleQuery();
?>
Chodzi mi o wykonanie prostego zapytania dodającego jakieś "śmieci" w kolumnie nick(tak jak wyżej). Chodzi o to, żebym załapał o co w tym chodzi. Normalnie gdybym pisał strukturalnie to nie było by problemów. Kilka takich skryptów już napisałem, próbuję napisać coś obiektowo.
I co? Otrzymuję jedną notyfikację oraz błąd krytyczny:
Notice: Undefined variable: db in C:\xampp\htdocs\CMS\add_news.class.php on line 9
Fatal error: Call to a member function exec() on null in C:\xampp\htdocs\CMS\add_news.class.php on line 9
Jak się z tym uporać. Z bazą danych wszystko się łączy poprawnie, bo testowałem. Prosiłbym też o spojrzenie na całość dotychczasowego kodu i doradzenie mi czy postępuję "zgodnie ze sztuką" oraz czy idę w dobrym kierunku?