Ir para conteúdo

POWERED BY:

Arquivado

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

uiLhian

Deletando "pela metade"

Recommended Posts

Bom o que acontece é o seguinte, tenho um BD tres tabelas Obras - Fotos - Usuarios

ae o que acontece quando eu clico em "DELETAR ALBUM/OBRA" ele deleta as fotos do da pasta e tbm deleta os dados da tabela "Obras" mas não apaga os dados refente da tabela "Fotos" que no caso seria as fotos referente ao album/obra deletada.

o comando é esse...

 

if ( isset( $_GET['delete'] ) && !empty( $_GET['delete'] ) )
{
$obra_id = $_GET['delete'];
$db->query( "SELECT * FROM fotos WHERE foto_album = $obra_id;" )->fetchAll();
if ( $db->rows >= 1 )
{
foreach ( $db->data as $foto )
{
$f = ( object ) $foto;
$file = "../fotos/$f->foto_url";
if ( file_exists( $file ) )
{
@unlink( $file );
}
}
}
$db->query( "DELETE FROM obras WHERE obra_id = $obra_id" );
$db->query( "DELETE FROM fotos WHERE foto_album = $obra_id" );
header( "Location: album.php" );
}

não apresenta erro nenhum nada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dei olhada rapida no seu código é num vi nenhum erro.

Pode ser que o erro esteja em sua consulta sql verifique se os dados $obra_id realmente é o paramentro correto para se passar na consulta.

$db->query( "DELETE FROM fotos WHERE foto_album = $obra_id" );

Posta o código de sua tabela que fica mais facil de ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi.

Se vc trocar o comando SQL ( = ) pelo ( IN ) ele vai apagar todos os registos com aquela mesma ID.
Pois se vc colocar ( = ) ele vai apagar 1 linha, pois não está em Loop, tente assim:

$db->query( "DELETE FROM fotos WHERE foto_album IN $obra_id" );

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz uns teste aqui, se a sua variável receber os valores separados por virgula EX: 1,2,3,4 , ou mesmo que seja apenas um valor, todos os registros do banco serão apagados. Aqui funcionou com campo numérico INT no Banco.

$db->query( "DELETE FROM fotos WHERE foto_album in (".$obra_id.")" );

Vamos supor que o valor requisitado na variável ( obra_id ) seja 10, todas as linhas da coluna foto_album que tiverem o valor 10 serão excluídos.

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

então desculpa a demora pra responder, mas ontem depois que postei a duvida não testei mais...

ae hj liguei o pc e fui testar e funcionou corretamente, não fiz nada de modificação e tal...

 

agora a duvida é o seguinte o código em si esta montado certo ?

ele ta executando tudo certo e tal, mas só queria ter a certeza de que ta montado certo, pois não manjo muito de php não sou apenas "curioso". :)

 

desde ja valeu a todos. :)

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.