Upload de Imagem MVC
Fiz um sisteminha de CRUD, porém, não consigo inserir um upload no cadastro, gostaria da ajuda dos magos em php, pois estou iniciando no POO MVC, desde ja agradeço imensamente pela ajuda.
Obs.: é um script para aprendizagem e não comercialização do mesmo.
view/formAdicionaContato.php
<html>
<head>
<meta charset="utf-8"/>
<title>Cadastrar Contato</title>
</head>
<body>
<h1>Cadastro de Contatos</h1>
<form action="contato.php?func=cadastrar" method="post" enctype="multipart/form-data">
<fieldset>
<legend>Dados Pessoais</legend>
Nome: <input type="text" name="nome"/><br>
E-mail: <input type="text" name="email"/>
Foto: <input type="file" name="foto"/>
</fieldset>
<input type="submit" name="enviar" value="Enviar"/>
</form>
</body>
</html>
model/Contato.class.php
<?php
class contato{
private $id;
private $nome;
private $email;
private $foto;
//construtor
public function Contato(){
}
//setters e getters
public function setId($id){
$this->id = $id;
}
public function getId(){
return $this->id;
}
public function setNome($nome){
$this->nome = $nome;
}
public function getNome(){
return $this->nome;
}
public function setEmail($email){
$this->email = $email;
}
public function getEmail(){
return $this->email;
}
public function setFoto($foto){
$this->foto = $foto;
}
public function getFoto(){
return $this->foto;
}
}
model/ContatoDAO.class.php
<?php
//inclue as classes necessarias
include_once ("modelo/ConnectionFactory.class.php");
include_once ("modelo/Contato.class.php");
class ContatoDAO{
//ira receber uma conexao
public $con = null;
//construtor
public function ContatoDAO(){
$conexao = new ConnectionFactory();
//cria um new PDO e faz a conexao
$this->con = $conexao->getConnection();
}
//realiza um inserção
public function inserir($contato){
try{
//evitando SQL INJECTION
//dois pontos significa rotulo, armazena o local onde vai inserir as informações
$stmt = $this->con->prepare("INSERT INTO contato (nome, email, foto) VALUES (:nome, :email, :foto)");
//sequencia de indices que representam cada valor de minha query
//bindValue = vincular valor
$stmt->bindValue(":nome", $contato->getNome());
$stmt->bindValue(":email", $contato->getEmail());
stmt->bindValue(":foto", $contato->getFoto());
//executo a query preparada
$stmt->execute();
//fecho a conexao
//$this->con = null;
//caso ocorra um erro, retorna o erro;
}catch(PDOException $ex){
echo "Erro:".$ex->getMessage();
}
}
//realiza um update
public function alterar($contato){
try{
$stmt = $this->con->prepare("UPDATE contato SET nome=:nome, email=:email WHERE id=:id");
//beginTransation - transação para que toda a ação seja completada
$this->con->beginTransaction();
$stmt->bindValue(":nome", $contato->getNome());
$stmt->bindValue(":email", $contato->getEmail());
$stmt->bindValue(":id", $contato->getId());
$stmt->execute();
$this->con->commit();
//fecho a conexao
//$this->con = null;
//caso ocorra um erro, retorna o erro;
}catch(PDOException $ex){
echo "Erro:".$ex->getMessage();
}
}
/**
* Exclui um contato identificado pelo id
* $contato int o id do contato a ser excluído
*/
public function excluir ($contato){
try{
//$this->con-exec = retorno de linhas afetadas
$num = $this->con->exec("DELETE FROM contato WHERE id=".$contato);
if($num >= 1){
return $num;
}else{
return 0;
}
}catch(PDOException $ex){
echo "Erro:".$ex->getMessage();
}
}
//jquery recebe num significa que não quero filtrar a resposta
//se fosse passar sql - executo a sql
//query é uma consulta/retorno de um result set
public function listar($query=null){
try{
if($query == null){
$stmt = $this->con->query("SELECT * FROM contato");
}else{
$stmt = $this->con->con->query($query);
}
//desconecta
//$this->con = null;
//gera um array de objetos
$lista = array();
foreach ($stmt as $reg){
$cont = new Contato();
$cont->setId($reg["id"]);
$cont->setNome($reg["nome"]);
$cont->setEmail($reg["email"]);
$lista[] = $cont;
}
//retorna o resultado da query
return $lista;
}catch(PDOException $ex){
echo "Erro:".$ex->getMessage();
}
}
public function exibir($id){
try{
$stmt = $this->con->query("SELECT * FROM contato WHERE id=".$id);
foreach ($stmt as $reg){
$cont = new Contato();
$cont->setId($reg["id"]);
$cont->setNome($reg["nome"]);
$cont->setEmail($reg["email"]);
$cont->setFoto($reg["foto"]);
}
//retorna o resultado da query
return $cont;
}catch(PDOException $ex){
echo "Erro:".$ex->getMessage();
}
}
}
controller/AdicionarContatos.class.php
<?php
include_once"modelo/ContatoDAO.class.php";
class AdicionarContato{
function AdicionarContato(){
if(isset($_POST["enviar"])){
$dao = new ContatoDAO();
$contato = new Contato();
$contato->setNome($_POST["nome"]);
$contato->setEmail($_POST["email"]);
$dao->inserir($contato);
$lista = $dao->listar();
include_once "visao/listaContatos.php";
}else{
include_once "visao/formAdicionaContato.php";
}
}
}
Arquivo completo nos anexos
Discussão (0)
Carregando comentários...