Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola Pessoal
JÁ PESQUISEI SOBRE MAS NÃO ENCONTREI NADA SATISFATORIO.
Estou començando meus estudos com arquivo texto, pois bem, estou com uma duvida aqui...
PRA ENTENDER: estou fazendo upload de imagens com arquivo texto (sem bd), ele grava no .txt o "nr. do id" e a "descricao da imagem", assim:
>
3|descricao da imagem 3
2|descricao da imagem 2
1|descricao da imagem 1
e a imgem é gravada na pasta com o mesmo "nr. do id" tambem, assim:
>
3.jpg
2.jpg
1.jpg
Beleza, dai eu mostra o album de fotos e tals... entendido!
O QUE EU QUERO FAZER:
Como o sistema já grava, agora eu quero EXCLUIR...
Eu já consigo excluir as imagens, assim:
unlink("fotos/$id.jpg");
A PERGUNTA:COMO FAÇO PARA LOCALIZAR UM "ID" NO ".TXT" E EXCLUIR A LINHA DELE.
Eu até consigo pegar todo arquivo assim:
<?php
$fp = fopen("./imagens.txt", "r");
while (!feof($fp)){
$char .= fgetc($fp);
}
fclose($fp);
echo $char."<br><br>";
?>
Mas como eu disse preciso preciso LOCALIZAR UM "ID" NO ARQUIVO TXT E EXCLUIR A LINHA QUE TEM ESSE ID.
COMO?
FAVOR.
Vou pesquisar sobre isso, mas se já tiver um exemplo que possa me indicar em algum lugar agradeço.
Não que eu queira que façam pra mim, beleza! na boa! ^_^
Pessoal, Tive de dar uma parada nesse projeto, pois tive de fazer outro mais urgente.
Agora estou com uma duvida, veja o que eu fiz:
// file() lê todo o arquivo
$linhas = file("./imagens.txt");
//Mostra os dados das linhas do txt
foreach ($linhas as $dados_das_linhas)
{
echo "$dados_das_linhas <BR>";
}>
3|descricao teste da imagem do id 3
2|descricao teste da imagem do id 2
1|descricao teste da imagem do id 1
AGORA, COMO EU FARIA PARA EXCLUIR A LINHA INTEIRA DO ARQUIVO TXT QUE TEM O ID 2, POR EXEMPLO.
EU NÃO SEI COMO, ALGUEM PODE ME AJUDAR?
Como o Beraldo disse.
Depois de 'guardar num array', você remove o indice do array, e então reescreve o arquivo completamente, já com o indice excluido, pois o array não o terá mais.
Pessoal, tá quaaaaaze, mas tem outra duvida, veja:
//pega id
$id = $_GET["id"];
//lê todo o arquivo .txt
$file = file("./imagens.txt");
//Mostra os dados das linhas do .txt
foreach ($file as $linhas)
{
echo "$linhas <BR>";
}//Localiza a linha que tem o ID
$linha_do_id = $file[$id-1];
//Imprimir a linha encontrada
echo "<BR>Linha encontrada:<BR><b>".$linha_do_id."</b><BR><BR>";//Cria nova array sem a linha do id encontrada acima
$novo_file = str_replace($linha_do_id, "", $file);
foreach ($novo_file as $linhas)
{
echo "$linhas <BR>";
}1|descricao teste da imagem do id 1
VEJA QUE FICOU UMA QUEBRA BEM ONDE EU DELETEI A LINHA QUE TINHA O ID 2, QUE ERA PRA DELETAR MESMO.MINHA DUVIDA É: COMO EU DELETO (str_replace) A LINHA SEM FAZER ESSA QUEBRA ?
Hi,@Dário.
tente assim:
<?php
$txt = "BD.txt";
$id = 50;
echo preg_match("/ID:$id/i",file_get_contents($txt),$m)? file_put_contents($txt,str_replace($m[0],"",file_get_contents($tx)),FILE_APPEND) ? "error ao excluir!" : "ok.." : "Id não encontrado..";
?>
Abraços.
você precisará reescrever o arquivo
use file() para colocar cada linha num índice de array. Localize o índice com o ID a ser removido. Remova esse índice (pode user unset() ) e salva o array no arquivo novamente