Giooo 0 Denunciar post Postado Janeiro 18, 2011 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
gugoan 0 Denunciar post Postado Janeiro 18, 2011 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
Giooo 0 Denunciar post Postado Janeiro 18, 2011 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
Periscuelo 20 Denunciar post Postado Janeiro 18, 2011 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
Giooo 0 Denunciar post Postado Janeiro 18, 2011 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
Periscuelo 20 Denunciar post Postado Janeiro 18, 2011 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
Giooo 0 Denunciar post Postado Janeiro 18, 2011 eu fiz conforme o script ali em cima, ele gera um href para cara linha do array, mas nao sei se desse jeito da de fazer. Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Janeiro 18, 2011 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 0 Denunciar post Postado Janeiro 18, 2011 Obrigado Periscuelo!!! vou me virar aqui!!! Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 18, 2011 @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
Giooo 0 Denunciar post Postado Janeiro 18, 2011 valeu William, mas e agora, onde eu vou usar o unset? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 18, 2011 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
Giooo 0 Denunciar post Postado Janeiro 18, 2011 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
Periscuelo 20 Denunciar post Postado Janeiro 18, 2011 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
Giooo 0 Denunciar post Postado Janeiro 18, 2011 ah beleza!!! agora eu tenho que regravar esse array modificado no arquivo certo? Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Janeiro 18, 2011 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
Giooo 0 Denunciar post Postado Janeiro 24, 2011 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