Witam,
właśnie zacząłem próbować pisać cos obiektowo w php...
na razie wyszło mi coś takiego:
klasa do łączenia z bazą danych
<?php
class polacz_sql {
private $sql;
public function __construct() {
$this -> db_host = '127.0.0.1'; // Adres serwera
$this -> db_name = 'oop_cms'; // Nazwa bazy danych
$this -> db_user = 'root'; // Nazwa uzytkownika
$this -> db_password = 'root'; // Haslo
$this -> sql
= mysql_connect($this -> db_host
, $this -> db_user
, $this -> db_password
);
}
}
public function __destruct() {
}
}
}
?>
klasa do zarządzania podstronami:
<?php
require_once 'class.polaczenie_sql.php';
class podstrona extends polacz_sql {
public function pobierz_podstrone($id) {
$this -> res
= mysql_query("SELECT * FROM podstrony WHERE id = '$id' LIMIT 1"); return $this -> res;
}
public function edytuj_podstrone($id, $menu, $tresc) {
mysql_query("UPDATE `oop_cms`.`podstrony` SET `menu` = '$menu', `tresc` = '$tresc' WHERE `id` = $id LIMIT 1");
}
public function lista_podstron() {
$this -> res
= mysql_query("SELECT id, menu FROM podstrony"); return $this -> res;
}
public function usun_podstrone($id) {
mysql_query("DELETE FROM `podstrony` WHERE `id` = $id LIMIT 1");
}
public function dodaj_podstrone($nazwa) {
INSERT INTO `oop_cms`.`podstrony` (
`id` ,
`menu` ,
`tresc`
)
VALUES (
NULL , '$nazwa', ''
)
");
}
}
?>
oraz zastosowanie:
<?php
include("class.podstrona.php");
$objPodstrona = new podstrona();
?>
<h2>Edycja podstron</h2>
<?php
if(isset($_GET['zmien'])) { $objPodstrona -> edytuj_podstrone($_GET['zmien'], $_POST['menu'], $_POST['tresc']);
}
if(isset($_GET['usun'])) { $objPodstrona -> usun_podstrone($_GET['usun']);
}
if(isset($_GET['dodaj'])) { $objPodstrona -> dodaj_podstrone($_POST['menu']);
}
if(isset($_GET['edycja'])) {
$res = $objPodstrona -> pobierz_podstrone($_GET['edycja']);
Edycja podstrony:
<form method="post" action="?zmien='.$rekord['id'].'">
<input type="text" name="menu" value="'.$rekord['menu'].'" /><br />
<textarea name="tresc">'.$rekord['tresc'].'</textarea><br />
<input type="submit" value="Edytuj" />
</form>
';
}
}
?>
<hr />
Lista podstron:<br /><br />
<?php
$res = $objPodstrona -> lista_podstron();
echo $rekord['menu'].' <a href="?edycja='.$rekord['id'].'">edycja</a> | <a href="?usun='.$rekord['id'].'">usun</a> <br />'; }
?>
<br /><hr /><br />
Dodaj podstrone:
<form method="post" action="?dodaj">
<input type="text" name="menu" /><br />
<input type="submit" value="Dodaj" />
</form>
nie pisałem narazie nic wiecej, sprawdzania poprawnosci wpisanych danych itp.
czytałem kilka tematów na tym forum, starałem się nie popełniać błędów innych... wątpie żeby mi się to udało.. ale
mam kilka pytań

1. co jest źle? co napisalibyście inaczej?
2. jak to poprawnie napisać stosując szablony MVC?
z tego co wiem to strona widoku może mieć PHP ale tylko podstawowa skladnia typu for, if, while...
tylko jak to rozbić na kontroler i model? czy przy tak prostych klasach jest to możliwe?
3. czy dobrze wykombinowałem z łączenie z bazą danych? czy może ta klasa być dziedziczona przez inne?
4. czy na stronie widoku mogę używać normalnych zmiennych typu $jakas_zmienna ?

zaraz pewnie ktoś napisze ze to co zrobiłem to jeszcze nie prawdziwe OOP, ale to dopiero mój początek z OOP więc proszę o wyrozumiałość oraz wskazówki co mógłbym jeszcze tutaj zastosować
Ten post edytował terabit 9.07.2008, 18:27:43