Ir para conteúdo

POWERED BY:

Arquivado

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

Giooo

[Resolvido] apagar determinada linha de um array

Recommended Posts

olá a todos, estou com um problema que realmente nao sei nem pelo que procurar.

tenho um seguinte array, que pega os dados de um arquivo e me mostra linha por linha.

agora se eu quiser apagar pelo navegador determinada linha? pelo que sei, para se remover um array se usa o unset,

mas como determinar qual a linha que eu vou dar o unset?

segue abaixo o codigo:

<?php

$lines = file ('teste.txt');
foreach ($lines as $line_num => $line) {
echo ('<tr><td  width="300" style="background-color: rgb(230, 230, 230);">' .($line) . '</td><td><a href= #?????????????????????# ><img border=0 src=images/discard.png></a></td></tr>');
}

?>

 

ou seja, ele esta me mostrando o conteudo do arquivo, com uma imagem de remover ao lado de cada linha, como pegar o numero dessa linha para dar o unset no array?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

O unset() pode tanto destruir todo o array ou apenas um indice dele. Ou você pode usar o explode() para manipular as linhas/colunas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, mas imagine o seguinte.

meu arquivo tem o seguinte conteudo:

LINHA 1

LINHA 2

LINHA 3

ETC...

 

no navegador ele vai me mostrar

LINHA 1 <apagar>

LINHA 2 <apagar>

etc...

 

agora se eu apertar o botao apagar na linha 20 por exemplo?

como eu faço para passar para o unset ou explode essa linha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para apagar uma linha expecífica use o número da mesma.

 

unset($array[19]); // apaga linha 20 do browser

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, até ai eu sei.

mas como eu vou pegar o valor da linha?

é nisso que eu quero chegar...

ao clicar na linha 20, como vou mandar para uma variavel que esse é o array 19?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser via javascript, via ajax, via formulário ai depende do que você quer e como quer fazer.

Como você quer fazer? O que ja tem pronto?

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da pra fazer de várias formas, mas se deseja alterar o array então tem que recarregar a pagina PHP.

Como você não carrega a pagina via ajax tem que ser via submit.

Você passa o valor da linha via GET e ao receber este GET você faz o unset.

 

Ex:

 

unset($array[$_GET['linha']]);

Veja no google alguns exemplos de dados enviados via javascript. Desta forma da pra fazer com href.

 

submit via Javascript

 

Para maiores informações sobre javascript e ajax você pode pesquisar melhor no google ou pesquisar / abrir um tópico na sessão de Javascript do fórum.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Giooo, faz assim cara:

		echo '<tr><td  width="300" style="background-color: rgb(230, 230, 230);">'.$line.'</td>
		<td><a href="?line='.$line_num.'"><img border=0 src=images/discard.png></a></td></tr>';

pronto ^_^

acho que o amigo Periscuelo, não entendeu oque você perguntou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode ser logo embaixo doq você já tem uê..

if( isset( $_GET['line'] ))
{
 //aqui você apaga a linha $_GET['line'];
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

seria algo mais ou menos assim?

<?php

$lines = file ('teste.txt');
foreach ($lines as $line_num => $line) {
echo ('<tr><td  width="300" style="background-color: rgb(230, 230, 230);">' .($line) . '</td><td> <a href="?linha='.$line_num.')"><img src="images/discard.png" border="0" /></a></td></tr>');

if( isset( $_GET['linha'] ))
{
unset($lines[$_GET['linha']]);
} 
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quase isso Giooo

 

Realmente eu confundi mesmo a sua dúvida com outra coisa. :P

 

Tenta assim:

 

<?php

$lines = file ('teste.txt');
foreach ($lines as $line_num => $line) {
echo ('<tr><td  width="300" style="background-color: rgb(230, 230, 230);">' .($line) . '</td><td> <a href="?linha='.$line_num.')"><img src="images/discard.png" border="0" /></a></td></tr>');
}

if( isset( $_GET['linha'] ))
{
unset($lines[$_GET['linha']]);
} 
?>

 

O if tem que ficar fora do foreach.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo, assim você vai conseguir a alteração do arquivo desejado.

Utilize ...

 

fopen('teste.txt','w+');

... e a função fwrite() para concluir a gravação.

 

Acesse o link da função fwrite que disponibilizei para ver mais exemplos de como gravar o arquivo.

Veja também o fopen()

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza, deu certo, mas agora tenho outra duvida.

Quando eu clico na imagem ele apaga o array e joga no final do link o numero da linha ex. ?linha=2.

tem uma forma de ele fazer isso sem colocar o ?linha=2 no fim do link?

 

 

Obrigado!!!

 

eu tentei com javascript, mas nao deu muito certo.

<a href="" onclick=javascript:location.href="?linha='.$line_num.'"> 

no firefox até que funcionou, ele abre uma segunda pagina e ali funciona beleza,mas a primeira ainda mostra a linha. mas no IE ele continua mostrando o ?linha=x e abre uma pagina com about:blank

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.