pdo->prepare("INSERT INTO Formation (labelFormation, isInternal) VALUE (:label,:isInternal);"); $st->execute([ "label" => $label, "isInternal" => $isInternal? 1 : 0 ]); return $this->pdo->lastInsertId(); } public function exists(string $label) : int{ $st = $this->pdo->prepare("SELECT idFormation FROM Formation WHERE labelFormation = :label"); $st->execute([ "label" => $label ]); return $st->fetch()["idFormation"]?: 0; } public function delete(int $id) : bool{ $st = $this->pdo->prepare("DELETE FROM Formation WHERE idFormation = :id"); return $st->execute([ "id" => $id ]); } /* (x) Gets a formation by its ID || getAll * * @form_id [OPT] The formation id, if not set, getAll() * * @return formations The formations matching id * ---------------------------------------------------------*/ public function get(?int $form_id) : array{ /* (1) Manage if no id given */ $cond = is_null($form_id) ? '' : 'WHERE Form.idFormation = :form_id'; $parm = is_null($form_id) ? [] : [ ':form_id' => $form_id ]; /* (2) Prepare statement */ $st = $this->pdo->prepare("SELECT IFNULL(VHCours,0) VHCours, IFNULL(VHTd,0) VHTd, IFNULL(VHTp,0) VHTp, (IFNULL(VHCours,0) + IFNULL(VHTd,0) + IFNULL(VHTp,0)) VHTotal, Form.isInternal isInternal, Form.idFormation idForm, Form.labelFormation labelForm FROM Formation Form LEFT JOIN (SELECT IFNULL(SUM(C.volume),0) VHCours, GC.Formation_idFormation idForm FROM GroupeCours GC LEFT JOIN Cours C ON GC.Cours_idCours = C.idCours GROUP BY GC.Formation_idFormation) VHCours ON VHCours.idForm = Form.idFormation LEFT JOIN (SELECT IFNULL(SUM(T.volume),0) VHTd, GTD.Formation_idFormation idForm FROM GroupeTD GTD LEFT JOIN TD T ON GTD.TD_idTD = T.idTD GROUP BY GTD.Formation_idFormation) VHTd ON VHTd.idForm = Form.idFormation LEFT JOIN (SELECT IFNULL(SUM(T2.volume),0) VHTp, GTP.Formation_idFormation idForm FROM GroupeTP GTP LEFT JOIN TP T2 ON GTP.TP_idTP = T2.idTP GROUP BY GTP.Formation_idFormation) VHTp ON VHTp.idForm = Form.idFormation $cond;"); /* (3) Bind params and execute statement */ if( is_bool($st) ) return []; $success = $st->execute($parm); /* (4) Manage error */ if( !$success ) return []; /* (5) Get data */ $fetched = $st->fetchAll(); /* (6) Return [] on no result */ if( $fetched === false ) return []; /* (7) Return data */ return $fetched; } }