[Resolvido] Apagar arquivo no banco

Caros Colegas, criei uma aplicação para salvar um arquivo ate tudo bem, porem quando apago no form, não apaga o arquivo que esta dentro da aplicação _lib/file/doc.

Como fazer para apagar o mesmo, desde já agradeço a todos pela ajuda.

Alguem por favor

Crie um botão php e no botão use o comando

unlink(nome_do_arquivo);

Caro Almeida, mas para cada arquivo terei que criar o botão. O como ficaria para o usuário?

não precisa, coloca o comando no evento onafterdelete.

Por Favor colegas, agradeço o auxilio, mas ainda não entendi como fazer.

Seguindo a ideia do Haroldo, no evento onAfterDelete coloque a funcao. Nesse formulário deve ter um campo que contenha o nome do arquivo.

unlink({campo_nome_arquivo});

PS: Tem que fornecer o caminho/nomearquivo para o unlink.

Caro Almeida, fiz como voce falou mas não funcionou, terei que colocar o nome de cada arquivo, mas são 2GB de arquivos com nomes diferentes

Na sua tabela tem algum CAMPO que faça referência ao nome do arquivo e extensão?

Se tiver:
Isso é apenas um exemplo, adapte sua lógica.

[code]$sql = select nome_arquivo, extensao FROM tabela WHERE idarquivo = 1; ///exemplo
sc_lookup(rs, $sql);

$caminho = “path/files/”;
$arquivo = $caminho . {rs[0][0]} . “.” . {rs[0][1]};
unlink($arquivo); //observe que usei a variavel arquivo; contendo o Caminho + Arquivo + Extensão.[/code]

Se não tiver.
Veja sobre o comando opendir e percorra o diretório adicionando no banco um nome do arquivo e extensão, pois é de suma importância ter esse dados salvos.

Caros desculpem-me mas ficou complicado e não estou conseguindo entender, segue minha aplicação como ficaria utilizando esta tebela.

Teria como postar o resultado de um select a uma linha sua a essa tabela?
Para ver como os dados estão sendo salvos.

Os campos arquivo_1 e arquivo_2 salva o nome do arquivo.extensao, caminho/arquivo.extensao ?

Como é salvo esses dados no banco arquivo_1 e arquivo2?

Segue veja se é isso.

Aguardo retorno ansiosamente.

Poxa cara, tinha esquecido de seu tópico, abri ele e depois esqueci, ae ele sumiu dos principais rsrs…

Analisando, a unica opção que me veio a cabeça é essa mesmo. Agora com algumas modificações.

no evento, onAfterDelete coloque:

[code]
$files[] = $this->Ini->path_embutida . “/_lib/file/doc/” . {arquivo_1};
$files[] = $this->Ini->path_embutida . “/_lib/file/doc/” . {arquivo_2};

foreach($files as $file) {
if(file_exists($file)) {
unlink($file);
}
}[/code]

Caro Almeida desculpe, mas esta dando este erro
unlink(/home/storage/6/8d/86/portalmetodo/public_html/portal//_lib/file/doc/) [function.unlink]: Is a directory

o que pode ser e o que seria path_embutida

hum… parece que o formulário não está retornando o caminho para o arquivo.

eveno onBeforeDelete

$sql = "SELECT 
     arquivo_1,
     arquivo_2
    FROM assinantes
    WHERE id = " . {id};
sc_lookup(rs, $sql);

[del_arquivo_1] = {rs[0][0]}
[del_arquivo_2] = {rs[0][1]}

evento onAfterDelete

[code]
$files[] = $this->Ini->path_embutida . “_lib/file/doc/” . [del_arquivo_1];
$files[] = $this->Ini->path_embutida . “_lib/file/doc/” . [del_arquivo_2];

foreach($files as $file) {
if(!is_dir($file)) {
unlink($file);
}
}[/code]

Marque as variáveis globais [del_arquivo_1] e [del_arquivo_2] como Saida.
Perceba que nesse novo código foi alterado o caminho do diretório do arquivo, retirando a / do inicio.
Importante: No select no onBeforeDelete coloquei sua tabela com o nome de assinantes, se não for esse nome substituir.

Esta dando este erro

Parse error: syntax error, unexpected T_VARIABLE in /home/storage/6/8d/86/portalmetodo/public_html/portal/sup_form_assinantes/sup_form_assinantes_apl.php on line 3001

Na linha tem isso:
$this->sc_temp_del_arquivo_1 = $this->rs[0][0]
$this->sc_temp_del_arquivo_2 = $this->rs[0][1]
if (isset($this->sc_temp_del_arquivo_1)) { $_SESSION[‘del_arquivo_1’] = $this->sc_temp_del_arquivo_1;}
if (isset($this->sc_temp_del_arquivo_2)) { $_SESSION[‘del_arquivo_2’] = $this->sc_temp_del_arquivo_2;}
if (isset($this->NM_ajax_flag) && $this->NM_ajax_flag)

Corrigido o problema, tinha esquecido de fechar a linha de comando, famosos ; .

eveno onBeforeDelete

$sql = "SELECT 
     arquivo_1,
     arquivo_2
    FROM assinantes
    WHERE id = " . {id};
sc_lookup(rs, $sql);

[del_arquivo_1] = {rs[0][0]};
[del_arquivo_2] = {rs[0][1]};

Caro Almeida, você é o cara, gostaria de te agradecer muito e a todos que me ajudaram nesta etapa, muito mesmo pelo apoio.

Você é fenomenal