Jump to content
Sign in to follow this  
AndersonRodrigues

Alterar cadastro não exibe & deleta imagem.

Recommended Posts

Boa tarde a todos.

Estou aprendendo PHP & MySQL e me deparei com um problema que não consegui achar solução pela internet, todas que achei não sanaram meu problema.

Código de Cadastro.

<?php
if(isset($_POST['enviar'])) {

	$titulo = $_POST['titulo'];
	$original = $_POST['original'];
	$capa = $_FILES["capa"];
	$lancamento = $_POST['lancamento'];
	$genero = $_POST['genero'];
	$diretor = $_POST['diretor'];
	$sinopse = $_POST['sinopse'];
	$midia = $_POST['video'];

	if (!empty($capa["name"])) {

		$largura = 152;
		$altura = 214;
		$tamanho = 1000000;

    	if(!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $capa["type"])){
     	   $error[1] = "Isso não é uma imagem.";
   	 	} 

		$dimensoes = getimagesize($capa["tmp_name"]);

		if($dimensoes[0] > $largura) {
			$error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels";
		}

		if($dimensoes[1] > $altura) {
			$error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels";
		}

		if($capa["size"] > $tamanho) {
   		 	$error[4] = "A imagem deve ter no máximo ".$tamanho." bytes";
		}

			preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $capa["name"], $ext);
 
        	$nome_imagem = md5(uniqid(time())) . "." . $ext[1];

        	$caminho_imagem = "../capas/" . $nome_imagem;

			move_uploaded_file($capa["tmp_name"], $caminho_imagem);

			$sql=mysql_query("INSERT INTO lancamentos VALUES('', '', '$titulo', '$original', '$capa', '$diretor', '$lancamento', '$genero', '$midia', '', '', '$sinopse')");
			echo "INSERT INTO lancamentos VALUES('', '', '$titulo', '$original', '$capa', '$diretor', '$lancamento', '$genero', '$midia', '', '', '$sinopse')";
			if($sql)
			{
				header("location: lancamentos-gerenciar.php");
		}
	}
}
?>

Código para alterar o Cadastro. Meu problema está aqui acredito, pois ele cadastra normalmente e salva na pasta a imagem, porem no campo do MySQL ele fica preenchido como Array, achei que ele ficaria com o caminho da imagem salva no MySQL.

<?php
if(isset($_GET['id']))
{
$id=$_GET['id'];
if(isset($_POST['enviar'])) {

	$titulo = $_POST['titulo'];
	$original = $_POST['original'];
	$capa = $HTTP_POST_FILES["capa"];
	$lancamento = $_POST['lancamento'];
	$genero = $_POST['genero'];
	$diretor = $_POST['diretor'];
	$sinopse = $_POST['sinopse'];
	$midia = $_POST['video'];

	if (!empty($capa["name"])) {

		$largura = 152;
		$altura = 214;
		$tamanho = 1000000;
    	if(!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $capa["type"])){
     	   $error[1] = "Isso não é uma imagem.";
   	 	} 
		$dimensoes = getimagesize($capa["tmp_name"]);

		if($dimensoes[0] > $largura) {
			$error[2] = "Largura da capa não pode ultrapassar ".$largura." pixels";
		}
		if($dimensoes[1] > $altura) {
			$error[3] = "Altura da capa não pode ultrapassar ".$altura." pixels";
		}
		if($capa["size"] > $tamanho) {
   		 	$error[4] = "A capa pode ter apenas ".$tamanho." bytes";
		}

			preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $capa["name"], $ext);
        	$nome_imagem = md5(uniqid(time())) . "." . $ext[1];
        	$caminho_imagem = "../capas/" . $nome_imagem;
			move_uploaded_file($capa["tmp_name"], $caminho_imagem);

			$sql=mysql_query("update lancamentos set titulo='$titulo', original='$original', capa='$capa', lancamento='$lancamento', genero='$genero', diretor='$diretor', sinopse='$sinopse', midia='$midia' where id='$id'");
			if($sql)
			{
			header('location: lancamentos-gerenciar.php');
		}
	}
}
$query1=mysql_query("select * from lancamentos where id='$id'");
$query2=mysql_fetch_array($query1);
?>

eu chamo os campo com <?php echo $query2['valor']; ?> na questão da img tentei de varias formas e só retorna "Array" ou o icon da img quebrada.

Código que uso para excluir.

<?php
if(isset($_GET['id']))
{
$id=$_GET['id'];
$query1=mysql_query("delete from lancamentos where id='$id'");
if($query1)
{
header('location: lancamentos-gerenciar.php');
}
}
?>

Tentei usar unlink para deletar junto a img porem ele deleta o cadastro e a img continua na pasta.

Não precisam resolver o código, apenas me apontar alguns caminhos. Para que eu possa compreender o que esta saindo errado.
Acho que uma parte do problema seja ele não estar salvando o caminho do arquivo no MySQL, onde ele não consegue capturar o caminho, onde fica retornando "Array" ou "ico da img quebrada.".
A parte de apagar a img deve ser mesma coisa ele não acha o caminho da img ai não consegue deletar.

Estou aprendendo lendo alguns tutoriais, já consegui fazer muita coisa de um sisteminha básico que to fazendo apenas para aprender. E já finalizei ele quase todo, porem fiquei travado nessa parte da img.

Desde já um muito obrigado, e ficarei aguardando uma luz no fim do túnel.

Share this post


Link to post
Share on other sites

a parte do caminho da img no MySQL consegui resolver. Refiz o código resumidamente e ele salvo o nome da img no MySQL normalmente agora.
Codigo:

<?php
if(isset($_POST['enviar'])) {

	$titulo = $_POST['titulo'];
	$original = $_POST['original'];
	$capa = $_FILES["capa"] ["name"];
	$lancamento = $_POST['lancamento'];
	$genero = $_POST['genero'];
	$diretor = $_POST['diretor'];
	$sinopse = $_POST['sinopse'];
	$midia = $_POST['video'];
	
	$caminho_img = "../capas/";

	if(move_uploaded_file($_FILES["capa"]["tmp_name"],$caminho_img."/".$capa)) {

	$mysql_path = $caminho_img."/".$capa;

			$sql=mysql_query("INSERT INTO lancamentos  VALUES('', '', '$titulo', '$original', '$capa', '$diretor', '$lancamento', '$genero', '$midia', '', '', '$sinopse')");
			echo "INSERT INTO lancamentos VALUES('', '', '$titulo', '$original', '$capa', '$diretor', '$lancamento', '$genero', '$midia', '', '', '$sinopse')";
			if($sql)
				{
			echo 'Inserido com sucesso.';
			}
			else {
			echo 'Não foi possivel inserir no banco de dados.';
			}
		}
			else {
			echo 'Falha upload da image';
	}
			{
				header("location: lancamentos-gerenciar.php");
		}
	}
?>

Problema de visualizar img e deletar resolvido, so remover o file_dir pra img aparecer.

<img src="<?php echo '../capas/' . $query2['capa']; ?>" />

Deletar img, refiz o codigo lendo o manual e consegui fazer deletar a img.

<?php
if(isset($_GET['id']))
{
$id=$_GET['id'];
$query1=mysql_query("select capa from lancamentos where id='$id'");
$query2=mysql_fetch_array($query1);
mysql_query("DELETE from lancamentos where id='$id'");
unlink("../capas/".$query2['capa']);
if($query1)
{
header('location: lancamentos-gerenciar.php');
}
}
?>

Agora falta apenas arrumar o alterar, pra quando alterar a img ele deletar a antiga e colocar a nova. quem puder ajudar nessa parte, pois ta dificil. estou olhando em uns forum gringo mais ta complicado.

Edited by AndersonRodrigues

Share this post


Link to post
Share on other sites

Muito obrigado pela resposta, a parte de adicionar a img e excluir eu consegui resolver.

Estou travado na parte de alterar a img, como fazer pra ele dar um update na img e apagar a antiga.
Os outros dados ele altera normalmente, tanto que no código de editar os dados eu deixei a img de fora, em quanto não acho nada relacionado.

tentei dar um select nela depois um delete, e depois um update mais não deu certo ou fiz errado.

Codigo como está agora.

<?php
if(isset($_GET['id']))
{
$id=$_GET['id'];
if(isset($_POST['enviar'])) {

	$titulo = $_POST['titulo'];
	$original = $_POST['original'];
	$lancamento = $_POST['lancamento'];
	$genero = $_POST['genero'];
	$diretor = $_POST['diretor'];
	$sinopse = $_POST['sinopse'];
	$midia = $_POST['video'];
		

			$sql=mysql_query("update lancamentos set titulo='$titulo', original='$original', lancamento='$lancamento', genero='$genero', diretor='$diretor', sinopse='$sinopse', midia='$midia' where id='$id'");
			if($sql)
			{
			header('location: lancamentos-gerenciar.php');
		}
	}

$query1=mysql_query("select * from lancamentos where id='$id'");
$query2=mysql_fetch_array($query1);
?>

Share this post


Link to post
Share on other sites

Então cara, teste e de uma olhada nesse código aqui, se ele poder lhe ajuda ficarei feliz :)

$capa = $_FILES["capa"];


if(!empty($capa['name'])){


$imNome = $capa['name'];
$deImg  = "../capas/".$imNome;


$SQL_IM = mysql_query("SELECT capa FROM lancamentos WHERE id=$id_adm");


while($imP = mysql_fetch_array($SQL_IM)){
$nmImP = $imP['capa'];
}


$dir = "../capas/".$nmImP;


if(file_exists($dir) && $nmImP != "default.png"){
unlink($dir);
}


move_uploaded_file($capa['tmp_name'], $deImg);


mysql_query("UPDATE administradores SET imgPerfil='$imNome' WHERE id=$capa");


header("location: lancamentos-gerenciar.php");
}

Share this post


Link to post
Share on other sites

Acho que compreendi a parte da remoção da image.

Não sei se o que colocarei abaixo estará certo, pois ainda estou lendo o manual la no php :kiss: para tentar entender melhor.

$capa = "../capas/".$_FILES['capa']['name'];if ($capa != "" || file_exists($capa)):unlink ("$capa");

E depois adicionar a parte de adição da nova image? E ai, estou no caminho certo ou errei feio.

Tive a ideia olhando esse código seu Madetsf, porem ainda não testei, irei testar de manha para ver com quais erros irei me deparar.

 

E Muito obrigado novamente.

 

 

Problema resolvido, agora tenho apenas um problema.

Como faço para registrar em uma categoria.

Me passaram algo do tipo,

INSERT INTO tabela-alvo (campo1, campo2, campo3...)

SELECT campo FROM tabela-origem;

 

Porem não consegui fazer funcionar, criei um select pra selecionar a categoria. Porem

não captura a id da categoria ele registra tudo com ID 0.

 

 

Problema resolvido.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.