Ir para conteúdo

POWERED BY:

Arquivado

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

manoaj

Entender codigo

Recommended Posts

pessoal eq ueria ajuda de vcs pra entender este codigo aqui , assim eu queria cria um sistema de postagens que são exibidas em tempo real , ao usuario postar a noticia ela já é exibida instantaneamente , eu recebi algumas opções para faser isto neste tocpico Clique aqui que me ajudaram entender oq ue eu queria realmente fazer ,me indicaram ali principalmente o node mas eu dei uma lida sobre e não gsotei muito então fui atraz do ajax e me deparei com esse codigo é simples porem não tenho muito conhecimento sobre a interação do ajax com php , ai queria ajuda de vcs pra me explicar o que acontece ali e se possivelajudar a organizar o codigo :upset:/>

 

Noticia.php

<?php
include_once('config.php');

$id = $_GET['id'];

$ler = mysql_query("SELECT * FROM noticias WHERE id = '$id'");
while($ver = mysql_fetch_assoc($ler)){
$titulo_db = $ver['titulo'];
$noticia_db = $ver['noticia'];
$data_add_db = $ver['data_add'];
$imagem_db = $ver['imagem'];
echo "<h3>".$titulo_db."<i>  ".$data_add_db."</i></h3>";
echo "<img src='imagens/".$imagem_db."' border='0' /><br /><br />";
echo "<b>".$noticia_db."</b><br /><br />";
echo "<a href='index.php'>Voltar</a>";
}
?>

 

script.js

function objXMLHttp(){
if(window.XMLHttpRequest){
	var objetoXMLHttp = new XMLHttpRequest();
	return objetoXMLHttp;
}else if(window.ActiveXObject){
	var versoes = ["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];
	for(var i = 0; i < versoes.length; i++){
		try{
			var objetoXMLHttp = new ActiveXObject(versoes[i]);
			return objectXMLHttp;
		}catch(ex){

		}
	}
}
return false;
}
function enviar(ID){
var dados = "noticia.php?id=" + ID;
var oXMLHttp = objXMLHttp();
oXMLHttp.open("GET", dados, true);
oXMLHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
oXMLHttp.onreadystatechange = function(){
	if(oXMLHttp.readyState == 4){
		if(oXMLHttp.status == 200){
			mensagem(oXMLHttp.responseText);
		}else{
			mensagem("Ocorreu erro: "+ oXMLHttp.statustext);
		}
	}
};
oXMLHttp.send(null);
return false;
}

function mensagem(main){
document.getElementById('main').innerHTML=main;
}

dados.php

<?php
include_once('config.php');

$valor = array();

$ler = mysql_query("SELECT * FROM noticias ORDER BY id DESC LIMIT $numero");
while($ver = mysql_fetch_assoc($ler)){
$id = $ver['id'];
$titulo_db = $ver['titulo'];
$noticia_db = $ver['noticia'];
$data_add_db = $ver['data_add'];
$valor[] = $data_add_db."<br /><b>".$titulo_db."</b><br />
<a href='#' onClick='javascript:enviar(".$id.");'>".substr($noticia_db,0,$letras)."...</a>";
}
echo json_encode($valor);
?>

 

ajax.js

$(document).ready(function(){
  window.setInterval("atualiza()", 1000);
  $.getJSON('dados.php', function(r){
   	$("#noticia").html("");
 		$.each(r, function(indice, msg){
   		$("#noticia").append(msg + "<br />");
 		});
  }); 
});
function atualiza(){
var n = Math.random();
n++;
$.getJSON('dados.php?rand=' + n, function(r){
 $("#noticia").html("");
  $.each(r, function(indice, msg){
   $("#noticia").append(msg + "<br />");
 });
});
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eita!

 

Esse código pode ser subtraído e se tornar mais simples. Como eu indiquei na resposta do seu tópico, veja este exemplo aqui.

 

É muito mais fácil do que você imagina. Se tiver dificuldades depois de ler este artigo do Beraldo, solicite que te ajudarei com a lógica. :thumbsup:

 

@Edit

Mas por que você não gostou do Node? Ele é poderosíssimo, sabia? Sim, é complexo e talvez a sua aplicação não exija tanto, mas saiba que ele é sempre a melhor opção — em questão de performance — para aplicações em tempo real. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim o Node é muito bom pelo que vi mas é como você falo complexo e o meu sistema não exige tanto no momento pois é uma aplicação pequena só pra ir aprendendo o basico , e assim vi umas palestras sobre o node eu nem sabia que ele existia mas parece que ta crescendo bastante ultimamente . possivelmente vou usar ele no furturo depois que aprender o basico .

pois ele realmente é completo em relação a sistemas em tempo real .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, ele é realmente promissor. Como sua aplicação é de pequeno porte, dê uma olhada no link que postei.

 

Sei que entender aplicações em tempo real é monstruoso no começo, portanto, se tiver dúvidas, poste!

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom vamos lá o exemplo que tem no link que você mandou é feito uma aplicação com as mudanças em um arquivo txt , mas no caso euq uero faser com um select do meu banco de dados

 

este nome do arquivo consulta.php

<?php include ('connections/conexao.php'); ?>
<?php
   $postagem = mysql_query("SELECT *  FROM c_posts")or die(mysql_error());
   	while($res_user_select = mysql_fetch_array($postagem)){

	$postagems_users   = $res_user_select['postagem'];

?>
<?php echo $postagems_users; ?>
<?php
}	
?>

 

no caso o script do exeplo serviria para um interação desse tipo com select ou eu teria que muda algo no codigo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, serve para o seu objetivo sim.

 

O exemplo do Beraldo está explícito o seguinte: quando houver alguma alteração no arquivo.txt, envie-me!.

 

Você fará o mesmo, só que com o banco.

 

Lá na sua tabela de notícias você deve ter uma coluna que indique a data e/ou o ID da notícia. Se o ID da notícia que o usuário estiver visualizando for menor que o último ID cadastrado no banco, então significa que há novos registros no banco. Se há novos registros no banco, retorne para mim.

 

E ah, essa mesma lógica funcionará com a data, ok? Se a data do último registro no banco for MAIOR que a da notícia que o usuário visualiza, então significa também que há um novo registro e precisamos trazer isto para ele [usuário].

 

Essa verificação de diferenças está explícita aqui:

if ( $requestedTimestamp == null || $modifiedAt > $requestedTimestamp )

Já sabe onde vai armazenar o horário da notícia que o usuário está visualizando? E já consegues recuperar o horário da notícia no banco?

 

Se sim, poste pra mim que vou te ajudar. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas assim no caso eu nãqo queria que fosse por id e tal pq vai ser uma pagina só e estas noticias vãos er exibidas todas de uma vez , ou seja eu precisaria que a div fosse atualizada cada vez que fosse inserido um registro , no caso ali ele vai exibir se o usuario ver a noticia para que ele faça a comparação ou não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi. Então você deve armazenar em algum lugar alguma informação de referência à última notícia vista pelo usuário.

 

Quando ele acessar a página, você deve armazenar em algum lugar — uma SESSION, por exemplo — o ID do último registro inserido no banco. Com essa informação em mãos, você tem que verificar se a informação é menos recente que a última inserida no banco. Se for igual, então está atualizado. Se for menor, então precisa ser atualizado.

 

Você precisa de um ponto de partida, entende? Precisa referenciar de alguma forma qual é a última notícia que o usuário recebeu para comparar com o banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

definitivamente não tem coisa pior que isso kkkkkkk não conssegui faser essa ***** essenegocio de atualização em tempo real é a pior coisa que já vi ate agora em programação :pinch:/>

 

alguem faz uma video aula ae kkkk

Compartilhar este post


Link para o post
Compartilhar em outros sites

Clique aqui

jquery, Ajax , isso é muito simples de se fazer além de te facilitar muito a API jquery você consegue usar o ajax muito mais fácil, resumindo, é muito simples fazer um requisição ajax com jquery, caso você não consiga usar eu posto um exemplar depois, mais tenta ae"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Clique aqui

jquery, Ajax , isso é muito simples de se fazer além de te facilitar muito a API jquery você consegue usar o ajax muito mais fácil, resumindo, é muito simples fazer um requisição ajax com jquery, caso você não consiga usar eu posto um exemplar depois, mais tenta ae"

@Dellacurtais seu exemplo cairia bem agora kkkkk estudei , vi e revi varios conteudos obre o ajax mas não entendi , achoq uesó na pratica esse negcoio de ta lendo não é muito pra mim , só funciona para aprender o superficial :upset:

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.