I have this code and need to update the image that is already saved in the database, but it does not work.
Codes
<?php
require 'conexao.php';
//Pega o id da url
if ( isset( $_GET['id'] ) && ! empty( $_GET['id'] ) ) {
//Prepra ligacao php mysql
$stm = $pdo->prepare( 'SELECT id, nome, conteudo, tipo, tamanho FROM ifsp WHERE id = :id LIMIT 1' );
//Atribui o paramentro ao $_GET['id'] que é o id que esta na url e coloca ele no prepare acima
$stm->bindValue( ':id', $_GET['id'] );
//Executa o pdo
$stm->execute();
//Tranforma o consulta em matriz
$consulta = $stm->fetch( PDO::FETCH_ASSOC );
// Se executado
if ($stm->execute())
{
// Alocando foto
$foto = $stm->fetchObject();
// Se existir
if ($foto != null)
{
}
}
// Verificando se selecionou alguma imagem
if (!isset($foto->conteudo))
{
exit;
} else {
// Recupera os dados dos campos
$foto = $_FILES['foto'];
$nome = $foto['name'];
$tipo = $foto['type'];
$tamanho = $foto['size'];
// Transformando foto em dados (binário)
$conteudo = file_get_contents($foto['tmp_name']);
if ( $_POST ) {
//Ligação php mysql
$stm = $pdo->prepare( 'UPDATE ifsp SET nome = :nome,
conteudo = :conteudo,
tipo = :tipo,
tamanho = :tamanho WHERE id = :id' );
//Atribui o paramentro ao $_POST['e a referecia onde ele esta'] e coloca ele no prepare acima
$stm->bindParam(':nome', $nome, PDO::PARAM_STR);
$stm->bindParam(':conteudo', $conteudo, PDO::PARAM_LOB);
$stm->bindParam(':tipo', $tipo, PDO::PARAM_STR);
$stm->bindParam(':tamanho', $tamanho, PDO::PARAM_INT);
//Atribui o paramentro ao $_GET['id'] que é o id que esta na url e coloca ele no prepare acima
$stm->bindValue( ':id', $_GET['id'] );
//Executa o pdo
$stm->execute();
//depois de executar o header o rediciona para outro local
header( 'Location: index.php' );
}
}
}
require 'views/editarfoto.php';
html
<!--Inclui a pagina inicial (cabeçalho) pois é iguaal para todos-->
<?php include 'header.php'; ?>
<h1>Editar Contato</h1>
<!--submete o metodo post para a url informada com o id do comando php a essa url-->
<form enctype="multipart/form-data" action='editarfoto.php?id=<?php echo $consulta['id']; ?>' method='post'>
<label>Foto</label>
<input type="file" name="foto" />
<input type="submit" value="Salvar" />
<a href='index.php'>Cancelar</a>
</form>
<?php include 'footer.php'; ?>
bank
CREATE TABLE 'ifsp' (
'id' int(10) unsigned NOT NULL AUTO_INCREMENT,
'nome' varchar(60) NOT NULL,
'conteudo' mediumblob NOT NULL,
'tipo' varchar(20) NOT NULL,
'tamanho' int(10) unsigned NOT NULL,
PRIMARY KEY ('id')
) ENGINE=InnoDB;