Jump to content
php.lv forumi
Sign in to follow this  
ziedinjsh

pārbauda vai nav jauni dati

Recommended Posts

Sveiki. 

Ir tāda lieta, ka vajadzētu pārbaudīt vai nav iekš datubāzes jauni ieraksti.

Izmeiģināju šādi. ul - li sarakstā ar jquery paņem pēdējo ieraksta id un pārbauda vai nav jaunāks(-ki), ja ir tad updeito sarakstu. Strādā, bet protams tikai manā klientu pusē, ne citiem.

 

jQuery:

jQuery(function(){
	var lastid = jQuery('ul#update > li:first').attr('class');
		setInterval(function(){
		jQuery.get('process/public.php?w=check&id='+lastid, function(data){
			if(data){
				jQuery('#update').load(location.href+' #update');
			}
		});
		},5000);
});

 

php:

if($w=='check'){
	
		$last = mysql_fetch_array(mysql_query("select pid from public order by pid desc LIMIT 0,1"));
			if($last['pid']==$id){
				echo 'success';
			}
	}

 

Kā varētu panāk to lai viņš pieprasīju veic kaut kā ar php, lai saraksts apdeitojas visiem?

 

Paldies jau iepriekš.

Edited by ziedinjsh

Share this post


Link to post
Share on other sites

AJAX ar intervālu vai web soketi.

Share this post


Link to post
Share on other sites

nu man jau ir it kā ar intervālu, bet es domāju kā pārbaudīt to visās klientu pusēs.. šādi viņš trādā tikai manis atvērtajā browserī.. ja es kko ierakstīšu.. citiem viņš neatjaunos sarakstu.

Share this post


Link to post
Share on other sites

Visos broveros ar AJAX ik pēc noteikta laika pieprasi jaunākos ierakstus no datubāzes.

Share this post


Link to post
Share on other sites

nu man jau ir it kā ar intervālu, bet es domāju kā pārbaudīt to visās klientu pusēs.. šādi viņš trādā tikai manis atvērtajā browserī.. ja es kko ierakstīšu.. citiem viņš neatjaunos sarakstu.

 

Kas ir - "ja es kko ierakstīšu"?

Tavs norādītais datu update kods ir ok. Ir nianses, ko varētu uzlabot, bet būtu jāstrādā, ja pēc "ja es kko ierakstīšu" tiek atjaunota db.

 

Share this post


Link to post
Share on other sites

nu kā, nopostojot tekstu, ievadās datubāzē, jquery sākumā no ul paņem pēdējo li kurā ir pēdēja datubāzes ieraksta id un tad salīdzina to iekš php faila kur viņš pārbauda vai ir kaut kas jaunāks par šo pēdējo id, ja ir tad viņš veic ul apdeitu. Sēžot savā brovserī viņš to izdara, bet ieejot citā brovserī un ar citu lietotāju viņš to neizdara

Share this post


Link to post
Share on other sites

tad vaina būs php kodā 

$last = mysql_fetch_array(mysql_query("select pid from public order by pid desc LIMIT 0,1"));
			if($last['pid'] != $id){
				echo 'update';
			}

pie jquery pārbaudes koda pieliku alert(); lai zināt cik bieži viņš čeko, bet tagad viņš viņu visu laiku čeko.. vaig vai nevaig

            
Edited by ziedinjsh

Share this post


Link to post
Share on other sites

ko nozīmē vajag vai nevajag? tev taču ir setInterval, tas nozīmē, ka jeburā gadījumā pēc noteikta skaita sekunžu viņš mēģināts reloadot. 

Ja sapratu, tad tu gribi, lai ajax "sēž mierā" kamēr PHP nav padevis šim, ka ir jauni dati.. Es gan nezinu kā to īstenot un vai vispār tā vienkārši var. 

Share this post


Link to post
Share on other sites

nu tā.. rezultāts bija ļoti tuvu.. jquery funkcijā: vieta kur iegust pedējo id vajag ielikt iekš intervāla funkcijas.. tagad viss trādā ka bija nepieciešams

 

rezultāts

 

jQuery:

jQuery(function(){
		setInterval(function(){
		var lastid = jQuery('ul#update > li:first').attr('class');
			jQuery.get('process/public.php?w=check&id='+lastid, function(data){
				if(data){
					jQuery('#update').load(location.href+' #update');
					alert(data); // pārbaudei
					jQuery('#test').html(data+'<br> id='+lastid); //pārbaudei
				}
			});
		},5000);
});

 

PHP:

$last = mysql_fetch_array(mysql_query("select pid from public order by pid desc LIMIT 0,1"));
			if($last['pid'] != $id){
				echo 'update';
			}

 

jQuery atjauno sarakstu tikai tad jau ir kaut kas jaunāks par pēdējo sarakstā norādīto id. Tagad vis trādā kā nākas.. Bez liekas vajadzības saraksts netiek atjaunots.

Edited by ziedinjsh

Share this post


Link to post
Share on other sites

> Es gan nezinu kā to īstenot un vai vispār tā vienkārši var.

 

Atkārtoju — web soketi.

Share this post


Link to post
Share on other sites

> Es gan nezinu kā to īstenot un vai vispār tā vienkārši var.

 

Atkārtoju — web soketi.

 

paļdies, palasīšos

Share this post


Link to post
Share on other sites

paļdies, palasīšos

arī es... kā gan es to varēju nezināt? Bet lūk tā:

A secure version of the WebSocket protocol is implemented in Firefox 6 (named MozWebSocket), Google Chrome 14, Opera 12.10 and Internet Explorer 10.

laikam vairs nevajadzēs risinājumus ar flash.

Share this post


Link to post
Share on other sites

arī es... kā gan es to varēju nezināt? Bet lūk tā:laikam vairs nevajadzēs risinājumus ar flash.

 

Visērtākais risinājums šim ir socket.io ar node.js Bibliotēka pati izvēlas, kuru metodi izmantot, atkarībā no tām, kas pieejamas, sākot ar websocket, flašu un beidzot ar longpollingu. Ejošu čatu var dabūt gatavu padsmit minūtēs un ies uz visām kaut cik mūsdienās lietotām platformām.

 

 

Supported browsers

Desktop

Internet Explorer 5.5+

Safari 3+

Google Chrome 4+

Firefox 3+

Opera 10.61+

Mobile

iPhone Safari

iPad Safari

Android WebKit

WebOs WebKit

Edited by codez

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...