Ir para conteúdo

POWERED BY:

Arquivado

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

GuilhermeWD

não consigo deletar várias imagem checkbox

Recommended Posts

Eu estou com problema pra usar o Unlink, quero deletar mais de 1 foto do diretorio e não consigo, alguem pode me ajudar ?

<?php 

$post = $_GET['postId'];

        $SQL     = "SELECT * FROM imgs WHERE postId = '$post'";
        $executa = mysql_query($SQL);
        
        if(isset($_POST['excluir'])){


		if(!isset($_POST['check'])){
		
		echo "<script type='text/javascript'>alert('Selecione uma Imagem!');</script>";	

			
			}else{

				$check = $_POST['check'];
	
	
						$pasta = 'upload/';
						$imagemId = $_POST['imgId'];
						unlink($pasta.$imagemId);
		

						
	       foreach($check as $valor){	


			$DEL = "DELETE FROM imgs WHERE imgId = '$valor'"; // Identar um código é uma das melhores formas de perceber erros. 
			$QUERY = mysql_query($DEL) or die (mysql_error()); //a função MYSQL_QUERY executa seu comando.
		
				


            echo "<div class=\"ok\">Suas imagens foram deletadas com sucesso!</div>";
        }

        }
		
		}




		echo '<form action="" method="post" name="formularioCheckbox">';
		      echo '<input type="submit" name="excluir" value="Deletar imagens selecionadas" class="excluir_btn" />';
		echo "<div id='fotos_exibe'>";
        while($exibir = mysql_fetch_assoc($executa)){
            echo "<input type='checkbox' name='check[]' value=".$exibir['imgId']." style='width:30px; float:left; position:absolute;' />";

			echo "<img src='timthumb.php?src=upload/".$exibir['imgName']."&h=100&w=100&zc=1' style='border:1px solid #F90; float:left; margin-left:5px;' alt=''>";

			
			  echo "<input type='hidden' name='imgName' value=".$exibir['imgName']." />";
			  echo "<input type='hidden' name='imgId' value=".$exibir['imgId']." />";
			


        }
		  echo "</div'>";
        echo '</form>';
    ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comece colando o unlink dentro do foreach...

 

Opa amigão, eu fiz isso, mas ele so deleta 1 imagem da pasta, quaria que deletasse mais de 1 quando eu selecionasse com o checkbox

Compartilhar este post


Link para o post
Compartilhar em outros sites

utilieze um foreach ou um for.

Antes e claro um if para verificar se o usuário fez o click depois de seleciona os checkbox.

Compartilhar este post


Link para o post
Compartilhar em outros sites

utilieze um foreach ou um for.

Antes e claro um if para verificar se o usuário fez o click depois de seleciona os checkbox.

 

Paulinho, pode me mostrar como ficaria?sou iniciante em php ainda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem duas tabelas, uma para gravar a galeria e outra para as fotos?

 

 

Tente assim:

 

 

foreach($_POST['check'] as $registro) {
		
            $sql = "DELETE FROM imgs WHERE imgId = $registro";
            $delImg = mysql_query($sql);
            $pasta = 'upload/';
            
            if ($delImg) {
                @unlink($pasta.'/'.$imgId);
            } else {
		// Coloquei apenas para ver se está deletando
                echo "A imagem nao pode ser excluída!";
            }
        } // Fim do For

Mais ai teria que pegar o nome da imagem na pasta e não o ID, para isso vc deveria fazer um select antes no DELETE para pegar o nome.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem duas tabelas, uma para gravar a galeria e outra para as fotos?

 

 

Tente assim:

 

 

foreach($_POST['check'] as $registro) {
		
            $sql = "DELETE FROM imgs WHERE imgId = $registro";
            $delImg = mysql_query($sql);
            $pasta = 'upload/';
            
            if ($delImg) {
                @unlink($pasta.'/'.$imgId);
            } else {
		// Coloquei apenas para ver se está deletando
                echo "A imagem nao pode ser excluída!";
            }
        } // Fim do For

Mais ai teria que pegar o nome da imagem na pasta e não o ID, para isso vc deveria fazer um select antes no DELETE para pegar o nome.

 

O codigo ta assim agora, as imagens estão na mesma pasta independente da galeria de fotos, eu queria que quando eu selecionasse o "check" eu conseguisse deletar mais 1 imagem por vez com o unlink(), mas não estou conseguindo, a função está deletando apenas 1 foto da pasta "upload" e na DB ta normal, ta deletando todas que eu seleciono.

	$post = $_GET['postId'];
        $SQL     = "SELECT * FROM imgs WHERE postId = '$post'";
        $executa = mysql_query($SQL);
        $pasta = 'upload/';

        if(isset($_POST['excluir'])){
		if(!isset($_POST['check'])){
			echo "<script type='text/javascript'>alert('Selecione uma Imagem!');</script>";	
		}else{
			$check = $_POST['check'];
			$imgNome = $_POST['imgName'];
			foreach($check as $valor){
				$DEL = "DELETE FROM imgs WHERE imgId = '$valor'"; // Identar um código é uma das melhores formas de perceber erros. 
				$QUERY = mysql_query($DEL) or die (mysql_error()); //a função MYSQL_QUERY executa seu comando.

	
foreach($_POST['check'] as $registro) {
		
            $sql = "DELETE FROM imgs WHERE imgId = $registro";
            $delImg = mysql_query($sql);
            $pasta = 'upload/';
            
            if ($delImg) {
                @unlink($pasta.'/'.$imgName);
            } else {
		// Coloquei apenas para ver se está deletando
                echo "A imagem nao pode ser excluída!";
            }
         // Fim do For 
}
				 
				 



	        		}
			echo "<div class=\"ok\">Suas imagens foram deletadas com sucesso!</div>";
	        }
	}
	echo '<form action="" method="post" name="formularioCheckbox">';
	echo '<input type="submit" name="excluir" value="Deletar imagens selecionadas" class="excluir_btn" />';
	echo "<div id='fotos_exibe'>";
	while($exibir = mysql_fetch_assoc($executa)){
		echo "<input type='checkbox' name='check[]' value=".$exibir['imgId']." style='width:30px; float:left; position:absolute;' />";
		echo "<img src='timthumb.php?src=upload/".$exibir['imgName']."&h=100&w=100&zc=1' style='border:1px solid #F90; float:left; margin-left:5px;' alt=''>";	
		echo "<input type='hidden' name='imgName' value=".$exibir['imgName']." />";
		echo "<input type='hidden' name='imgId' value=".$exibir['imgName']." />";

	}
	echo "</div'>";
	echo '</form>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo:

 

 

...
while($exibir = mysql_fetch_assoc($executa)){
echo "<input type='checkbox' name='check[]' value=".$exibir['imgName']." style='width:30px; float:left; position:absolute;' />";
}
...

 

Quando eu receber o POST eu percorro cada posição do array:

 

 

$img = $_POST['check'];
$pasta = "upload/";
foreach($img as $k){
unlink($pasta.$k);
}

 

Isto é só para entender a lógica, quando você cria um input com o atributo name em forma de array, o POST será da mesma forma, no seu código vc estava passando para o comando unlink o path e o nome da imagem, mas apenas de uma imagem, é mais fácil vc passar no value do input o nome da imagem, depois é só correr o array e ir apagando as imagens, é claro que tem que fazer algumas validações etc...

Compartilhar este post


Link para o post
Compartilhar em outros sites

De uma testada assim:

<?php
$post       = $_GET['postId'];
$SQL        = "SELECT * FROM imgs WHERE postId = '$post'";
$executa    = mysql_query($SQL);
$pasta      = 'upload/';

if(isset($_POST['excluir'])){
    if(!isset($_POST['check'])){
        echo "<script type='text/javascript'>alert('Selecione uma Imagem!');</script>";	
    } else {
	$check = $_POST['check'];
        $imgNome = $_POST['imgName'];
			
        foreach($_POST['check'] as $registro) {
            
            // Pego no nome da imagem para ser deletada através do ID passado pelo checkbox
            $sql = mysql_query("SELECT * FROM imgs WHERE imgId = '{$registro}' LIMIT 1");
            $dados = mysql_fetch_assoc($sql);            
            // Deleto a imagem do banco
            $sql = "DELETE FROM imgs WHERE imgId = $registro";
            $delImg = mysql_query($sql);
            // Deleto a imagem da pasta
            if ($delImg) {
                @unlink($pasta.'/'.$dados['imgNome']); // Veja se imgNome é um campo da sua tabela, pois não tenho sua tabela para saber
            } else {
		// Coloquei apenas para ver se está deletando
                echo "A imagem nao pode ser excluída!";
            }
      
        }
    }
    echo "<div class=\"ok\">Suas imagens foram deletadas com sucesso!</div>";
                        
}
echo '<form action="" method="post" name="formularioCheckbox">';
echo '<input type="submit" name="excluir" value="Deletar imagens selecionadas" class="excluir_btn" />';
echo "<div id='fotos_exibe'>";
while($exibir = mysql_fetch_assoc($executa)){
    echo "<input type='checkbox' id='check[]' name='check[]' value=".$exibir['imgId']." style='width:30px; float:left; position:absolute;' />";
    echo "<img src='timthumb.php?src=upload/".$exibir['imgName']."&h=100&w=100&zc=1' style='border:1px solid #F90; float:left; margin-left:5px;' alt=''>";	
    echo "<input type='hidden' name='imgName' value=".$exibir['imgName']." />";
    echo "<input type='hidden' name='imgId' value=".$exibir['imgName']." />";
}
echo "</div'>";
echo '</form>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

MUITOOOOO OBRIGADO! me salvou amigão, podem marcar como resolvido.

 

Junior a tabela ela imgName e não imgNome, eu apenas alterei isso no codico que você me enviou e deu certo, valeu mesmo amigão, abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Boa noite, estou com o mesmo problema que o amigo ai de cima, meu script [e um pouco diferente, até olhei pelo dele mas não consegui arrumar, só consigo excluir uma imagem por vez mesmo sendo selecionado pelo check, coloquei um input trazendo o nome da imagem, mas quando ponho esse input com o value com o nome da foto, se eu selecionar uma foto para deletar, ele passa na url todas as fotos, mesmo sem eu ter setado elas, me ajudem por favor.

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.