Přesně tak :)
Mám další otázku... Vynechme MVC, v tom momentálně dělat nechci. Je takopvý zápis v pořádku?
Třída:
class CalendarEvent {
private $_db;
function __construct(PDO $_db) {
$this->_db = $_db;
}
function addEvent($name, $start, $end, $user, $text, $klient = 0) {
$insertSql = "INSERT INTO calendar (nazev, start, end, user, klient, text) VALUES (?, STR_TO_DATE(?,'%d.%m.%Y-%H-%i'), STR_TO_DATE(?,'%d.%m.%Y-%H-%i'), ?, ?, ?)";
$insert = $this->_db->prepare($insertSql);
$insert->execute([$name, $start, $end, $user, $klient, $text]);
}
function getAll($user = null, $order = "id desc") {
if($user) $where = "WHERE `user` = $user";
else $where = "";
$sqlSelect = "SELECT * FROM calendar $where order by $order";
$select = $this->_db->prepare($sqlSelect);
$select->execute();
return $select->fetchAll();
}
function getEvent($id) {
$sqlLoad = "SELECT * FROM calendar WHERE id = ?";
$loadResult = $this->_db->prepare($sqlLoad);
$loadResult->execute([$id]);
$data = $loadResult->fetch();
return (object) $data;
}
function updateEvent($data, $id) {
$sqlLoad = "UPDATE calendar SET nazev = ?, start = STR_TO_DATE(?,'%d.%m.%Y-%H-%i'), end = STR_TO_DATE(?,'%d.%m.%Y-%H-%i'), klient = ?, text = ? WHERE id = ?";
$loadResult = $this->_db->prepare($sqlLoad);
$loadResult->execute([$data["nazev"],$data["start"],$data["end"],$data["klient"],$data["text"],$id]);
}
function removeEvent($id) {
$sqlLoad = "DELETE from calendar WHERE id = ?";
$loadResult = $this->_db->prepare($sqlLoad);
$loadResult->execute([$id]);
}
}
Ten zápis metody add a edit je naschvál - zajímá mě, jestli je mezi tim v praxi rozdíl? Příjde mi totiž přehlednější to mít rovnou v deklaraci proměnných než to posílat jako pole (netbeans mi ukaze, jaky jsou dulezity parametry u metody, kdyz predavam pole, tak ne)
Add.php:
if(isset($_POST["calendar_add"])) {
try {
$calendar = new CalendarEvent($_db);
$start = $_POST["start"]."-".$_POST["start_hh"]."-".$_POST["start_mm"];
$end = $_POST["end"]."-".$_POST["end_hh"]."-".$_POST["end_mm"];
$calendar->addEvent($_POST["name"], $start, $end, $_SESSION["loginId"], $_POST["text"] ,$_POST["klient"]);
Messages::writeSucces("Done...", "index.php"]);
} catch (Exception $ex) {
Messages::writeError($ex->getMessage());
}
}
FORM()....
Třídu messages neřešte, to je moje pomocná třída, která filtruje hlášky a případně vrací na index...
Vypis vsech eventů:
$calendar = new CalendarEvent($_db);
$calendarData = $calendar->getAll();
foreach($calendarData as $event) {
echo $event["id"]." - ". $event["nazev"].....
}
1) Moje otázka je zase správnost zápisu
2) chci zeptat, nechci MVC - věci jako foreach ktery vypisujou mam delat rovnou tak kde se to zobrazuje, nebo si to nekde pripravit a v html pak jen <?= $vygenerovaneHTML ?>
3) Kdyz je to foreachAll(), jde docílit z toho aby každej row v cyklu byl jako objekt a né pole?