Ir para conteúdo

POWERED BY:

Arquivado

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

Giooo

[Resolvido] link

Recommended Posts

Olá a todos.

eu fiz essa pergunta no forum de php, mas acredito que aqui seja o lugar certo.

tenho um link que pega a variavel do numero do array em php

 

<a href="?linha='.$line_num.')">

 

 

 

mas assim sempre que aperto no link ele coloca no fim do link o numero da linha ex. pagina.php?linha=2 e nao atualiza a pagina.

entao tentei com javascript, mas ainda 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

 

teria um meio de fazer isso com JS ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas assim sempre que aperto no link ele coloca no fim do link o numero da linha ex. pagina.php?linha=2 e nao atualiza a pagina.

então teu problema parece ser cache.

 

corrija isso. Qq outra coisa, como usar javascript, será apenas gambiarra.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum Willian, ou eu nao te entendi ou você nao me entendeu...

imagina o seguinte, eu usando o href se eu clicar na linha 2 por exemplo ele vai mostrar no navegador ?linha=1, mas depois disso a pagina nao se atualiza entao continua os mesmo dados do array na pagina, por exemplo:

linha 1

linha 2

linha 3

linha 4

mas agora como eu apaguei a linha 2 e ele continua me mostrando linha 1 , linha 2, linha 3 e linha 4

se eu colocar pra atualizar ele vai apagar agora a linha 3 (que na verdade ja é 2) e se eu for apagar a linha 4 ela nem existe mais...

 

 

entendeu ou to fazendo muita confusao???

Compartilhar este post


Link para o post
Compartilhar em outros sites

você que não me entendeu mesmo.

e se você apertar F5, a 'linha' que deveria sumir, some, certo ?

 

 

é cache mesmo.

coloque o seguinte no inicio do teu script php.

	//Evitando cache de arquivo
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last Modified: '. gmdate('D, d M Y H:i:s') .' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Pragma: no-cache');
header('Expires: 0');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu acertei o teu 'problema' desde o inicio.

 

é cache, faça oque eu sugeri.

e coloca essa meta html tb:

<meta http-equiv="Pragma" content="no-cache" />

:lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste o código php completo ai pra eu testar

Compartilhar este post


Link para o post
Compartilhar em outros sites

index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
 <base target="corpo">
 <link rel="stylesheet" type="text/css" href="style.css">
 <title>Teste</title>
 <script src="scripts/prototype-1.6.0.2.js"></script>
 <script type="text/javascript">
   function submitForm(form) {
       /*
       usa m�todo request() da classe Form da prototype, que serializa os campos
       do formul�rio e submete (por POST como default) para a action especificada no form
       */
       form.request({
         onComplete: function(transport){
             /*
           se o retorno for diferente de -1, entende-se que n�o houve problemas, ent�o apaga-se
           os campos do formul�rio usando o m�todo reset() da classe Form
           */
           if(transport.responseText!=-1)
               form.reset();
           }
       });
       return false;
   }

       function timeout() {
               setTimeout('window.location.reload( true )',500);
                               }



       </script>
               </head>
 <body style="background-color: rgb(255, 255, 255);" onLoad= "self.focus();document.edit.dominio.focus()">

 <form id="edit" name="edit" action="block.php" onsubmit="submitForm(this); return false;">

 <table align="center">
   <tbody>
     <tr>
       <td><img src="images/lock-sm.gif" border="0"></td>
       <td>Bloqueio de dominios no Servidor</td>
     </tr>
     <tr>
       <td></td>
       <td>Dominio: <input type="text" name="dominio" id="dominio" /> <input type="submit" value="salvar" onClick=timeout() />
     </tr>
   </tbody>
 </table>
</form>

  <table align="center">
   <tbody>


<meta http-equiv="Pragma" content="no-cache" />


<?php
//Evitando cache de arquivo
       header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
       header('Last Modified: '. gmdate('D, d M Y H:i:s') .' GMT');
       header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
       header('Pragma: no-cache');
       header('Expires: 0');


$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.'" onClick=timeout()> <img src="images/discard.png" border="0"/></a>
</td></tr>');
}
// "?linha='.$line_num.'"
//  onclick=javascript:location.href="?linha='.$line_num.'">
if( isset( $_GET['linha'] ))
{
$abre =  fopen("teste.txt","r");
$dados = fread($abre,filesize("teste.txt"));
fclose($abre);
$linhas = explode("\n",$dados);
unset($linhas[$_GET['linha']]);
$recria = fopen('teste.txt',"w+");
fwrite($recria, implode("\n",$linhas));
fclose($recria);
}

?>

</tbody>
</table>
</body>
</html>

 

block.php

<?php
$dominio = $_POST["dominio"];
$temp = $dominio .PHP_EOL;
$arqTemp = fopen("teste.txt" , "a+");
$escreve = fwrite($arqTemp, $temp);
fclose($arqTemp);
?>

 

e daí william!!!

rodou aì pra ti ou ta muito errado essa minha pagina???

 

Abraço!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

então você faz a exclusão com ajax :lol:

 

ponto importante isso, deveria ter mencionado.

 

oque você precisa agora, é logo depois de fazer a exclusão, enviar um outro ajax, para refazer a lista.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vix, aí lascou...

kkkk

e me diz uma coisa, se eu fizer como o amigo periscuelo postou no forum de php? enviar usando um form com a imagem?

nao daria por exemplo, abrir um popup, executar o unblock.php, fechar a pagina e voltar para a index atualizada com a funcao timeout?

 

William se estou escrevendo muita besteira me desculpe, mas estou começando agora nesse mundo...

 

 

Obrigado por enquando velho!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

muito complicado isso ^_^ não gostei

 

faz com ajax tudo logo então

não posso te ajudar muito com o prototype pq nunca parei pra estudar, mas com jQuery ou javascript puro, tô aqui qq coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voltei!!!!

William da uma olhada aí se estou no caminho certo!!

 

<script>
$(document).ready(function(){
$("#linkajax").click(function(evento){
evento.preventDefault();
$(document).load("unblock2.php");
});
})

 

aí a parada é a seguinte, la no array:

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

 

ele só esta executando a funçao na primeira linha. ainda nao estou mandando a variavel, mas fiz um teste com o unset linha 1 por exemplo, ele está excluindo certinho a segunda linha sempre, mas só funciona no link da primeira.

 

 

Tks!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

deletar.php

<?php
if( isset( $_GET['line'] ) )
{
$abre =  fopen("teste.txt","r");

$dados = fread($abre,filesize("teste.txt"));
fclose($abre);
$linhas = explode("\n",$dados);

unset( $linhas[$_GET['line']] );

$recria = fopen('teste.txt',"w+");
if( fwrite($recria, implode("\n",$linhas)) )
{
	fclose($recria);
	echo '1';
}
}

 

index.php

<html>
<head>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#linhas_txt a').click(function( e ){
	e.preventDefault();

	var li =  $( this ).parent('li');
	var linha = $( this ).attr('href');

	linha = linha.substr( 1, linha.length );


	$.ajax({
		type: 'GET',
		url: 'deletar.php',
		data: linha,
		success: function( data )
		{
			if( data==1 )
				$( li ).remove();
			else
				alert( 'Erro ao tentar excluir: '+data );
		}
	});
});
});
</script>
</head>
<body>
<?php

$lines= file('teste.txt');

echo '<ul id="linhas_txt">';
foreach ($lines as $line_num => $line) 
{
	echo '<li>'.$line.'<a href="?line='.$line_num.'"><img src="images/discard.png" border="0"/></a></li>';
}
echo '</ul>';

?>
</body>
</html>

 

teste.txt

Primeiro Registro
Segundo Registro
Terceiro Registro
Avulso
Quarto Registro
Quinto Registro
Sétimo Registro

 

veja o caminho do jQuery e ajuste para o teu, aqui funcionou perfeitamente.

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.