├── composer.json ├── composer.phar ├── app ├── Controller │ ├── ErroController.php │ ├── SobreController.php │ ├── HomeController.php │ ├── PostController.php │ └── AdminController.php ├── View │ ├── create.html │ ├── home.html │ ├── update.html │ ├── admin.html │ ├── sobre.html │ └── single.html ├── Core │ └── Core.php ├── Model │ ├── Comentario.php │ └── Postagem.php └── Template │ └── estrutura.html ├── lib └── Database │ └── Connection.php └── index.php /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": { 3 | "twig/twig": "^2.9" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /composer.phar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RafaelCapo/site-php-mvc-crud/HEAD/composer.phar -------------------------------------------------------------------------------- /app/Controller/ErroController.php: -------------------------------------------------------------------------------- 1 | Criar Publicação 2 | 3 |
4 | Título
5 |

6 | 7 | Conteúdo
8 |

9 | 10 | 11 |
-------------------------------------------------------------------------------- /app/Controller/SobreController.php: -------------------------------------------------------------------------------- 1 | load('sobre.html'); 10 | 11 | $parametros = array(); 12 | 13 | $conteudo = $template->render($parametros); 14 | echo $conteudo; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/View/home.html: -------------------------------------------------------------------------------- 1 |
2 |

Postagens:

3 | 4 | {% for postagem in postagens %} 5 |
6 |
7 |

{{postagem.titulo}}

8 |
9 | 10 |

{{postagem.conteudo}}

11 |
12 | {% endfor %} 13 | 14 |
-------------------------------------------------------------------------------- /app/View/update.html: -------------------------------------------------------------------------------- 1 |

Alterar Publicação

2 | 3 |
4 | Título
5 |

6 | 7 | Conteúdo
8 |

9 | 10 | 11 | 12 | 13 |
-------------------------------------------------------------------------------- /app/Controller/HomeController.php: -------------------------------------------------------------------------------- 1 | load('home.html'); 14 | 15 | $parametros = array(); 16 | $parametros['postagens'] = $colecPostagens; 17 | //var_dump($colecPostagens); 18 | 19 | $conteudo = $template->render($parametros); 20 | echo $conteudo; 21 | 22 | 23 | 24 | } catch (Exception $e) { 25 | echo $e->getMessage(); 26 | } 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/Core/Core.php: -------------------------------------------------------------------------------- 1 | $id)); 32 | 33 | } 34 | } -------------------------------------------------------------------------------- /app/View/admin.html: -------------------------------------------------------------------------------- 1 |

Gerenciador de Conteúdo

2 | 3 | Criar Publicação

4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | {% for postagem in postagens %} 15 | 16 | 17 | 18 | 19 | 20 | 21 | {% endfor %} 22 | 23 |
IDTÍTULOALTERAÇÃODELEÇÃO
{{postagem.id}}{{postagem.titulo}}ALTERAÇÃODELEÇÃO
-------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | start($_GET); 27 | 28 | $saida = ob_get_contents(); 29 | ob_end_clean(); 30 | 31 | $tplPronto = str_replace('{{area_dinamica}}', $saida, $template); 32 | echo $tplPronto; -------------------------------------------------------------------------------- /app/View/sobre.html: -------------------------------------------------------------------------------- 1 |

Sobre

2 |

asdas asdbaskdas dkas dasjkd askjd asjkd sakjdas jdkasd asdkjasd asjkd akjs dasjk asdas asdbaskdas dkas dasjkd askjd asjkd sakjdas jdkasd asdkjasd asjkd akjs dasjk asdas asdbaskdas dkas dasjkd askjd asjkd sakjdas jdkasd asdkjasd asjkd akjs dasjk asdas asdbaskdas dkas dasjkd askjd asjkd sakjdas jdkasd asdkjasd asjkd akjs dasjk

3 |

asdas asdbaskdas dkas dasjkd askjd asjkd sakjdas jdkasd asdkjasd asjkd akjs dasjk asdas asdbaskdas dkas dasjkd askjd asjkd sakjdas jdkasd asdkjasd asjkd akjs dasjk asdas asdbaskdas dkas dasjkd askjd asjkd sakjdas jdkasd asdkjasd asjkd akjs dasjk asdas asdbaskdas dkas dasjkd askjd asjkd sakjdas jdkasd asdkjasd asjkd akjs dasjk

4 |

asdas asdbaskdas dkas dasjkd askjd asjkd sakjdas jdkasd asdkjasd asjkd akjs dasjk asdas asdbaskdas dkas dasjkd askjd asjkd sakjdas jdkasd asdkjasd asjkd akjs dasjk asdas asdbaskdas dkas dasjkd askjd asjkd sakjdas jdkasd asdkjasd asjkd akjs dasjk asdas asdbaskdas dkas dasjkd askjd asjkd sakjdas jdkasd asdkjasd asjkd akjs dasjk

-------------------------------------------------------------------------------- /app/View/single.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

{{titulo}}

5 |
6 | 7 |

{{conteudo}}

8 | 9 |
10 |
11 |
12 | 13 |
14 | Nome:
15 |

16 | 17 | Mensagem:
18 |

19 | 20 | 21 | 22 | 23 |
24 |

25 | 26 | {% if comentarios == false %} 27 |

Nenhum comentário encontrado para essa postagem

28 | {% else %} 29 | {% for coment in comentarios %} 30 |

{{coment.nome}}

31 |

{{coment.mensagem}}

32 |
33 | {% endfor %} 34 | {% endif %} 35 | 36 |
37 | 38 |
-------------------------------------------------------------------------------- /app/Model/Comentario.php: -------------------------------------------------------------------------------- 1 | prepare($sql); 11 | $sql->bindValue(':id', $idPost, PDO::PARAM_INT); 12 | $sql->execute(); 13 | 14 | $resultado = array(); 15 | 16 | while ($row = $sql->fetchObject('Comentario')) { 17 | $resultado[] = $row; 18 | } 19 | 20 | return $resultado; 21 | } 22 | 23 | public static function inserir($reqPost) 24 | { 25 | $con = Connection::getConn(); 26 | 27 | $sql = "INSERT INTO comentario (nome, mensagem, id_postagem) VALUES (:nom, :msg, :idp)"; 28 | $sql = $con->prepare($sql); 29 | $sql->bindValue(':nom', $reqPost['nome']); 30 | $sql->bindValue(':msg', $reqPost['msg']); 31 | $sql->bindValue(':idp', $reqPost['id']); 32 | $sql->execute(); 33 | 34 | if ($sql->rowCount()) { 35 | return true; 36 | } 37 | 38 | throw new Exception("Falha na inserção"); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/Controller/PostController.php: -------------------------------------------------------------------------------- 1 | load('single.html'); 13 | 14 | $parametros = array(); 15 | $parametros['id'] = $postagem->id; 16 | $parametros['titulo'] = $postagem->titulo; 17 | $parametros['conteudo'] = $postagem->conteudo; 18 | $parametros['comentarios'] = $postagem->comentarios; 19 | //var_dump($colecPostagens); 20 | 21 | $conteudo = $template->render($parametros); 22 | echo $conteudo; 23 | 24 | } catch (Exception $e) { 25 | echo $e->getMessage(); 26 | } 27 | } 28 | 29 | public function addComent() 30 | { 31 | try { 32 | Comentario::inserir($_POST); 33 | 34 | header('Location: http://localhost/PROJS/VIDEO_AULAS/SERIE/02_PHP+MVC+CRUD/?pagina=post&id='.$_POST['id']); 35 | } catch (Exception $e) { 36 | echo ''; 37 | echo ''; 38 | } 39 | 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/Template/estrutura.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 27 | 28 |
29 |
30 |
31 | 36 |
37 |
38 | 39 |
40 | {{area_dinamica}} 41 |
42 |
43 | 44 | -------------------------------------------------------------------------------- /app/Model/Postagem.php: -------------------------------------------------------------------------------- 1 | prepare($sql); 12 | $sql->execute(); 13 | 14 | $resultado = array(); 15 | 16 | while ($row = $sql->fetchObject('Postagem')) { 17 | $resultado[] = $row; 18 | } 19 | 20 | if (!$resultado) { 21 | throw new Exception("Não foi encontrado nenhum registro no banco"); 22 | } 23 | 24 | return $resultado; 25 | } 26 | 27 | public static function selecionaPorId($idPost) 28 | { 29 | $con = Connection::getConn(); 30 | 31 | $sql = "SELECT * FROM postagem WHERE id = :id"; 32 | $sql = $con->prepare($sql); 33 | $sql->bindValue(':id', $idPost, PDO::PARAM_INT); 34 | $sql->execute(); 35 | 36 | $resultado = $sql->fetchObject('Postagem'); 37 | 38 | if (!$resultado) { 39 | throw new Exception("Não foi encontrado nenhum registro no banco"); 40 | } else { 41 | $resultado->comentarios = Comentario::selecionarComentarios($resultado->id); 42 | } 43 | 44 | return $resultado; 45 | } 46 | 47 | public static function insert($dadosPost) 48 | { 49 | if (empty($dadosPost['titulo']) OR empty($dadosPost['conteudo'])) { 50 | throw new Exception("Preencha todos os campos"); 51 | 52 | return false; 53 | } 54 | 55 | $con = Connection::getConn(); 56 | 57 | $sql = $con->prepare('INSERT INTO postagem (titulo, conteudo) VALUES (:tit, :cont)'); 58 | $sql->bindValue(':tit', $dadosPost['titulo']); 59 | $sql->bindValue(':cont', $dadosPost['conteudo']); 60 | $res = $sql->execute(); 61 | 62 | if ($res == 0) { 63 | throw new Exception("Falha ao inserir publicação"); 64 | 65 | return false; 66 | } 67 | 68 | return true; 69 | } 70 | 71 | public static function update($params) 72 | { 73 | $con = Connection::getConn(); 74 | 75 | $sql = "UPDATE postagem SET titsulo = :tit, conteudo = :cont WHERE id = :id"; 76 | $sql = $con->prepare($sql); 77 | $sql->bindValue(':tit', $params['titulo']); 78 | $sql->bindValue(':cont', $params['conteudo']); 79 | $sql->bindValue(':id', $params['id']); 80 | $resultado = $sql->execute(); 81 | 82 | if ($resultado == 0) { 83 | throw new Exception("Falha ao alterar publicação"); 84 | 85 | return false; 86 | } 87 | 88 | return true; 89 | } 90 | 91 | public static function delete($id) 92 | { 93 | $con = Connection::getConn(); 94 | 95 | $sql = "DELETE FROM postagem WHERE id = :id"; 96 | $sql = $con->prepare($sql); 97 | $sql->bindValue(':id', $id); 98 | $resultado = $sql->execute(); 99 | 100 | if ($resultado == 0) { 101 | throw new Exception("Falha ao deletar publicação"); 102 | 103 | return false; 104 | } 105 | 106 | return true; 107 | } 108 | 109 | } 110 | -------------------------------------------------------------------------------- /app/Controller/AdminController.php: -------------------------------------------------------------------------------- 1 | load('admin.html'); 10 | 11 | $objPostagens = Postagem::selecionaTodos(); 12 | 13 | $parametros = array(); 14 | $parametros['postagens'] = $objPostagens; 15 | 16 | $conteudo = $template->render($parametros); 17 | echo $conteudo; 18 | } 19 | 20 | public function create() 21 | { 22 | $loader = new \Twig\Loader\FilesystemLoader('app/View'); 23 | $twig = new \Twig\Environment($loader); 24 | $template = $twig->load('create.html'); 25 | 26 | $parametros = array(); 27 | 28 | $conteudo = $template->render($parametros); 29 | echo $conteudo; 30 | } 31 | 32 | public function insert() 33 | { 34 | try { 35 | Postagem::insert($_POST); 36 | 37 | echo ''; 38 | echo ''; 39 | } catch(Exception $e) { 40 | echo ''; 41 | echo ''; 42 | } 43 | 44 | } 45 | 46 | public function change($paramId) 47 | { 48 | $loader = new \Twig\Loader\FilesystemLoader('app/View'); 49 | $twig = new \Twig\Environment($loader); 50 | $template = $twig->load('update.html'); 51 | 52 | $post = Postagem::selecionaPorId($paramId); 53 | 54 | $parametros = array(); 55 | $parametros['id'] = $post->id; 56 | $parametros['titulo'] = $post->titulo; 57 | $parametros['conteudo'] = $post->conteudo; 58 | 59 | $conteudo = $template->render($parametros); 60 | echo $conteudo; 61 | } 62 | 63 | public function update() 64 | { 65 | try { 66 | Postagem::update($_POST); 67 | 68 | echo ''; 69 | echo ''; 70 | } catch (Exception $e) { 71 | echo ''; 72 | echo ''; 73 | } 74 | } 75 | 76 | public function delete($paramId) 77 | { 78 | try { 79 | Postagem::delete($paramId); 80 | 81 | echo ''; 82 | echo ''; 83 | } catch (Exception $e) { 84 | echo ''; 85 | echo ''; 86 | } 87 | 88 | } 89 | } 90 | --------------------------------------------------------------------------------