O tecnologia.com.pt mudou de visual. Envie-nos aqui a sua opinião, feedback ou sugestões.
Olá, efectue login com as suas credenciais do fórum ou registe-se aqui
Pesquise no fórum

Autor Tópico: PHP e Ajax como atualizar  (Lida 741 vezes)

Offline thedarkzeno

  • Newbie
  • *
  • Mensagens: 5
  • Sexo: Masculino
PHP e Ajax como atualizar
« em: Setembro 07, 2011, 20:22:00 pm »
olá pessoal sou novo no fórum e meu primeiro post é uma duvida, em breve eu lhes trago alguns tutoriais ou códigos, mas antes preciso que tirem-me a dúvida.
Vamos lá, estou criando um jogo em php/mysql e para algumas funções eu uso o ajax(javascript)
porém não estou conseguindo fazer uma coisa indispensável que é a pagina se atualizar.
 por exemplo eu criei um código em ajax q atualiza uma página a cada 1 segundo e exibi isso numa div, quando o resultado for que é a sua vez no duelo então ele exibi uma mensagem, mas ao envez disso eu gostaria que ele atualizasse a página mas quando eu tento usar o comando <meta> para fazer o refresh ele não funciona
o código é o seguinte:
Aqui o ajax:
Código: [Seleccione]
<script type="text/javascript">
var http = false;
http = new XMLHttpRequest();
function pegaDate() {
http.abort();
http.onreadystatechange=function() {
if(http.readyState == 4) {
document.getElementById('lblHora').innerHTML = http.responseText;
}
}
http.open("GET", "leadmore.php", true)
http.send(null);
}
</script>



<script type="text/javascript">
x = setInterval ("pegaDate()", 1000);
</script>
Aqui o php:
Código: [Seleccione]
<?php include('conect.php'); ?>
<?php 
 
  $queryduelos $db->execute("select * from `duels` where (`owner`=? or `rival`=?)", array($pers$pers));


while(
$duinfo $queryduelos->fetchrow())
{

if (
$queryduelos->recordcount() > 0){
if (
$duinfo['active'] == 't'){
echo 
"Clique <a href='pvp.php'>aqui</a> para ir para a página de duelo.<br>
"
;
}
elseif (
$duinfo['active'] == 'w'){
if(
$duinfo['rival'] == $pers){
$xql "SELECT * FROM acessos_online WHERE id = '".$duinfo['owner']."'";
$queri mysql_query($xql);

$rou mysql_num_rows($queri);
$sql "SELECT * FROM personagens WHERE Id = '".$duinfo['owner']."'";
$query mysql_query($sql);

$row mysql_fetch_array($query);
if(
$rou 0){
$msg_id=$row['Nome']; $message=$duinfo['id']; ?>
<?php echo 'Você tem um duelo pendente com '.$row['Nome'].'<br>';
echo 
'<a href="eduel.php?aceita=y">Aceitar</a>';
echo 
' | ';
echo 
'<a href="eduel.php?aceita=n">Recusar</a>';


 
?>
<br /> <?php }}}}} ?>
alguém pode me ajudar?

Offline d.martins

  • Enthusiast Member
  • *
  • Mensagens: 445
Re: PHP e Ajax como atualizar
« Responder #1 em: Setembro 07, 2011, 21:25:42 pm »
Tu não tens o id que dás ao Ajax para ele actualizar, por isso é que não funciona, isto: document.getElementById('lblHora').innerHTML = http.responseText;
Tens ali o "getElementById('lblHora')", o ID que dás ao Ajax não existe na parte do código em php, logo o Ajax não vai fazer nada porque não tem um elemento onde meter o conteúdo.
www.belver.org - A Vila mais bonita de Portugal na Internet;

Offline thedarkzeno

  • Newbie
  • *
  • Mensagens: 5
  • Sexo: Masculino
Re: PHP e Ajax como atualizar
« Responder #2 em: Setembro 08, 2011, 00:19:37 am »
Olá de novo, seguinte, é que eu sou meio leigo com isso, então como fazer para funcionar?

desculpe se meu português parecer estranho e nao estiver na terceira pessoa é que sou do Brasil =D

Offline brunoais

  • Newbie
  • *
  • Mensagens: 30
  • Sexo: Masculino
    • Email
Re: PHP e Ajax como atualizar
« Responder #3 em: Setembro 08, 2011, 07:23:10 am »
Aonde é que está o elemento com o id: lblHora ?

Offline thedarkzeno

  • Newbie
  • *
  • Mensagens: 5
  • Sexo: Masculino
Re: PHP e Ajax como atualizar
« Responder #4 em: Setembro 08, 2011, 23:43:33 pm »
se está falando da <div> que pede o id ela fica na pagina do duelo, mas é o seguinte, o problema não é q não está funcionando, funciona perfeitamente, meu problema é o seguinte, na outra pagina o php é verificado para saber se é a sua vez no duelo, se sim eu gostaria que ele atualizasse a pagina inteira, mas não consigo isso, já tentei usar o comando <meta http-equiv='refresh' content='0;pvp.php'>
mas não da certo, alguém sabe o q fazer?

Offline brunoais

  • Newbie
  • *
  • Mensagens: 30
  • Sexo: Masculino
    • Email
Re: PHP e Ajax como atualizar
« Responder #5 em: Setembro 09, 2011, 13:22:07 pm »
Código: (php) [Seleccione]
header('location: pvp.php');

Offline thedarkzeno

  • Newbie
  • *
  • Mensagens: 5
  • Sexo: Masculino
Re: PHP e Ajax como atualizar
« Responder #6 em: Setembro 09, 2011, 21:44:02 pm »
o comando header não deu certo, com eu uso ajax para atualizar de tempo em tempo e o php fica em outra pagina, então ao envez de redirecionar, aparece uma pagina em baixo da q já estou usando

Offline Umbus

  • Eternal Poster
  • *
  • Mensagens: 4595
  • Sexo: Masculino
    • Email
Re: PHP e Ajax como atualizar
« Responder #7 em: Setembro 10, 2011, 01:48:17 am »
Boas,

Quanto ao que o brunoais disse penso que seja para carregares a pagina que vai aparecendo numa pagina separada. Ou seja, na primeira pagina tens o codigo em ajax, e na segunda apenas tens o header, ao carregares a pagina em php a pagina onde tens o ajax faz automaticamente o refresh.

Uma pergunta. Para que queres actualizar a pagina de 1 em 1 seg? Para um jogo como dizes, se queres demonstrar o tempo que falta para a construção de alguma coisa, estas no sentido errado, visto que actualizares de seg a seg irá sobrecarregar o servidor.

Faz antes de outra maneira. Vais buscar os dados a base de dados para saber o tempo que falta para determinada coisa, ao mesmo tempo que em ajax fazes as contas e transferes os dados para a base de dados novamente. Simples, eficaz embora além de ser menos sobrecarregado, sempre puxa um pouco pelo servidor.

Quanto à contagem decrescente custumo usar isto (neste caso está para 5 segundos mas podes alterar):

Código: [Seleccione]
var milisec=5
 var seconds=5
 document.getElementById("segundos").innerHTML = '5';

function display(){
 if (milisec<=0){
    milisec=9
    seconds-=1
 }
 if (seconds<=-1){
    milisec=0
    seconds+=1
 }
 else
    milisec-=1
    document.getElementById("segundos").innerHTML = seconds+"."+milisec;
    setTimeout("display()",100)
}
display()

Por outro lado se queres em ajax para um div usa isto:

Código: [Seleccione]
setInterval( "SANAjax();", 1000 );
 
$(function() {
SANAjax = function(){
 
$('#dataDisplay').prepend("teste").fadeIn("slow");
 
}
 });

Finalmente tenta no teu codigo usar isto:
http.open("GET", "leadmore.php", true);
« Última modificação: Setembro 10, 2011, 01:58:04 am por Umbus »






Offline thedarkzeno

  • Newbie
  • *
  • Mensagens: 5
  • Sexo: Masculino
Re: PHP e Ajax como atualizar
« Responder #8 em: Setembro 10, 2011, 16:34:06 pm »
hmm, legal, mas e se eu quiser colocar ao envez de só uma div pra ficar atualizando e se eu colocar 2, eu to tentando aki e não certo a segunda é assim:
Código: [Seleccione]
<script type="text/javascript">
var http = false;
http = new XMLHttpRequest();
function pegaDate1() {
http.abort();
http.onreadystatechange=function() {
if(http.readyState == 4) {
document.getElementById('lblHoras').innerHTML = http.responseText;
}
}
http.open("GET", "sataque.php", true)
http.send(null);
}
</script>



<script type="text/javascript">
x = setInterval ("pegaDate1()", 5000);

</script>
<center><span id="lblHoras"></span>
eu modifiqueio function e de lblHora coloquei lblHoras, mesmo assim naum vai.

Offline Umbus

  • Eternal Poster
  • *
  • Mensagens: 4595
  • Sexo: Masculino
    • Email
Re: PHP e Ajax como atualizar
« Responder #9 em: Setembro 13, 2011, 12:31:08 pm »
A partida e so fazeres o mesmo mas com outras variaveis, mas quando mudas as variaveis, os divs tem de existir na mesma ;)