Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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);
?>

Compartilhar este post


Link para o post
Compartilhar em outros 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");
}

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.