• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czas odliczanie - php

Object Storage Arubacloud
–1 głos
388 wizyt
pytanie zadane 9 listopada 2017 w PHP przez hiper007 Stary wyjadacz (11,270 p.)

Witam. Zrobiłem odliczanie w php od momentu wydrukowania ostatniej etykiety. Czas normalnie się odlicza. Ma się jeszcze aktualizować co sekundę (żeby na wszystkich kompach, który się zaloguje na IP programu pokazywał aktualny czas jaki upłynął). Wszystko działa, ale nie raz mi przeskakuje o 2 sek. a nieraz normalnie odlicza... Oto kod... Wie ktoś gdzie jest błąd??

			require_once "connect.php";
			
			if (!$polaczenie = mysql_connect($host,$db_login,$db_pass,$db_name)) {
			echo 'Nie można nawiązać połączenia z bazą danych';
			exit;
				
			}else
			{
			
			if (!mysql_select_db('sinbin', $polaczenie)) {
			echo 'Nie można wybrać bazy danych';
			exit;
			}	
			
			$kodowanie=mysql_query('SET NAMES \'utf8\'');
	
			if($result = mysql_query("SELECT data,login FROM sin ORDER BY data DESC LIMIT 1", $polaczenie))
			{
								
	
					$ilu_userow=mysql_num_rows ($result);
					if($ilu_userow>0)
					{
						
						while($wiersz=mysql_fetch_assoc($result))
						{
						
				
							$data=$wiersz['data'];
							$login=$wiersz['login'];
							
							$czas= new DateTime ($data);
							$czas->format('Y-m-d H:i:s');
							$czas2=new DateTime ();
							$czas2->format('Y-m-d H:i:s');
							$roz=$czas2->diff($czas);
							$roz->format('%y-%m-%d-%h-%i-%s');
							$godzina=explode("-", $roz->format('%Y-%M-%D-%H-%I-%S'));

												
								$dzien2 = $godzina[2];
								$godzina2 = $godzina[3];
								$minuta2 = $godzina[4];
								$sekunda2 = $godzina[5];

										$sekunda2=$sekunda2+1;
										if ($sekunda2>=60) {$sekunda2=0; $minuta2=$minuta2+1;}
										if ($minuta2>=60) {$minuta2=0; $godzina2=$godzina2+1;}
										if ($godzina2>23) {$godzina2=0; $dzien2=$dzien2+1;}
										if ($dzien2>30)
										{
											header("Location: index.php");
										} else{
											if ($sekunda2<10) $sek2="0".$sekunda2; else $sek2=$sekunda2;
											if ($minuta2<10) $min2=$minuta2;
											if ($godzina2<10) $godz2=$godzina2;
											if ($dzien2<10) $day2=$dzien2;
										
										
echo<<<END
								

<span style="width:200px; height:25px; background-color:lightgreen;  border-radius: 20px/50px; color:black; padding:8px; box-shadow: 5px 5px 2px 2px grey; border:2px solid green;"><span id="ok2" style="color:black; font-weight:bold;">Ostatnią etykietę wydrukowano: </span><span id="licz1" style="color:red; font-weight:bold;"></span><span style="color:red; font-weight:bold;">$day2 </span><span id="z1" style="color:black; font-weight:bold;"> Dni, </span><span id="licz2" style="color:red; font-weight:bold;"></span><span style="color:red; font-weight:bold;">$godz2 </span><span id="z2" style="color:black; font-weight:bold;"> Godz, </span><span id="licz3" style="color:red; font-weight:bold;"></span><span style="color:red; font-weight:bold;"> $min2 </span><span id="z3" style="color:black; font-weight:bold;"> Min, </span><span id="licz4" style="color:red; font-weight:bold;"></span><span style="color:red; font-weight:bold;"> $sek2 </span><span id="z4" style="color:black; font-weight:bold;"> Sek.</span><span id="z5" style="color:black; font-weight:bold;"> przez: </span><span style="color:red; font-weight:bold;">$login</span></span>		

	
END;
																										
										}   

				

					}
					
				}																
		
			}
						
			mysql_close($polaczenie);
			
		}

 


setInterval("odswiez2();",1000);

function odswiez2(){
$('#ost').load('http://172.27.189.18/ #ost');
}

Wiem, że używam mysql_connect (bo zaraz pojawią sie komentarze typu już się nie używa itp ;) ja to wiem) bo mam starą wersje webserv, xxamp nie działa bo są poblokowane porty. Chodzi mi oto jak rozwiązać ten problem ;)

komentarz 9 listopada 2017 przez xandros Nałogowiec (29,450 p.)

xxamp nie działa bo są poblokowane porty

Chyba porty mozna zmienić, a nawet jeśli to:

http://php.net/manual/pl/features.commandline.webserver.php

w konsoli wpisujesz: {php} -S {NazwaServera}:{port} -t {lokalizacjaWeb}

Gdzie:

  • php: plik wykonwyalny php, lub lepiej samo php, ale tylko działa, jak masz scieżke z php dodaną do środowiska.
  • Nazwaserwera: nazwa lub adres IP pod którym mają być nasłuchiwane połączenia. Zwykle wpisuje się localhost
  • port: nr portu na który ma serwer nasłuchiwać
  • lokalizacjaWeb: ścieżka, w której serwer ma znależć pliki do interpretacji np. index.php

Więcej masz w manualu. Polecam poczytać.

 

1 odpowiedź

+1 głos
odpowiedź 9 listopada 2017 przez CzikaCarry Szeryf (75,340 p.)
Takie rzeczy rozwiązuje się po stronie JS...
3
komentarz 9 listopada 2017 przez Ehlert Ekspert (212,670 p.)

Przy zadawaniu pytania z PHP powinna być captcha:

Której funkcji, lub klasy używamy do nawiązania połączenia z bazą danych?

komentarz 9 listopada 2017 przez CzikaCarry Szeryf (75,340 p.)
Haha, nawet nie zwróciłem uwagi, do kodu nawet nie zajrzałem, po przeczytaniu tresci posta już wiedziałem, że robi odliczanie od tyłu strony, znaczy po stronie serwera.
komentarz 9 listopada 2017 przez xandros Nałogowiec (29,450 p.)
edycja 9 listopada 2017 przez xandros
W pierwszym połączeniu ze stroną, strona generuje czas (timestamp), w którym została wydrukowana ostatnia etykieta.

Następnie przekazujemy ten czas do JSa, i JSem obliczamy różnice między aktualnym czasem, a tym zapodanym przez serwer. Tą różnice pokazujemy na ekranie.

https://jsfiddle.net/5donvcxo/
komentarz 10 listopada 2017 przez hiper007 Stary wyjadacz (11,270 p.)
edycja 10 listopada 2017 przez hiper007
<div id="aaa" style="margin-top:20px;">

<?php

	
			require_once "connect.php";
		
			if (!$polaczenie = mysql_connect($host,$db_login,$db_pass,$db_name)) {
			echo 'Nie można nawiązać połączenia z bazą danych';
			exit;
				
			}else
			{
			
			if (!mysql_select_db('sinbin', $polaczenie)) {
			echo 'Nie można wybrać bazy danych';
			exit;
			}	
			
			
					$kodowanie=mysql_query('SET NAMES \'utf8\'');
			
			
					if($result = mysql_query("SELECT login FROM sin ORDER BY data DESC LIMIT 1", $polaczenie))
					{	
						
							$ilu_userow=mysql_num_rows ($result);
							if($ilu_userow>0)
							{

										while($wiersz=mysql_fetch_assoc($result))
										{
											
											$login=$wiersz['login'];
											$data=$wiersz['data'];
							
											$czas= new DateTime ($data);
											$czas->format('Y-m-d H:i:s');
											$czas2=new DateTime ();
											$czas2->format('Y-m-d H:i:s');
											$roz=$czas2->diff($czas);
											$roz->format('%y-%m-%d-%h-%i-%s');
											$godzina=explode("-", $roz->format('%Y-%M-%D-%H-%I-%S'));
											
?>

<script>											
                                    echo"var dzien2 = $godzina[2];";
                                    echo"var godzina2 = $godzina[3];";
                                    echo"var minuta2 = $godzina[4];";
                                    echo"var sekunda2 = $godzina[5];";


										function odliczanie()
										{
										sekunda2=sekunda2+1;
										if (sekunda2>=60) {sekunda2=0; minuta2=minuta2+1;}
										if (minuta2>=60) {minuta2=0; godzina2=godzina2+1;}
										if (godzina2>23) {godzina2=0; dzien2=dzien2+1;}
										if (dzien2>30)
										{
											location.reload();
										} else{
											if (sekunda2<10) var sek2="0"+sekunda2; else sek2=sekunda2;
											if (minuta2<10) var min2="0"+minuta2; else min2=minuta2;
											if (godzina2<10) var godz2="0"+godzina2; else godz2=godzina2;
											if (dzien2<10) var day2="0"+dzien2; else day2=dzien2;
								

											document.getElementById('licz1').innerHTML='<span style="color:red; font-weight:bold;">'+day2+'</span>';
											document.getElementById('licz2').innerHTML='<span style="color:red; font-weight:bold;">'+godz2+'</span>';
											document.getElementById('licz3').innerHTML='<span style="color:red; font-weight:bold;">'+min2+'</span>';
											document.getElementById('licz4').innerHTML='<span style="color:red; font-weight:bold;">'+sek2+'</span>';
											
									
											setTimeout("odliczanie()", 1000);
										}   

										}	
										

</script>
<?php

								
								echo '<span style="width:200px; height:25px; background-color:lightgreen;  border-radius: 20px/50px; color:black; padding:8px; box-shadow: 5px 5px 2px 2px grey; border:2px solid green;"><span id="ok2" style="color:black; font-weight:bold;">Ostatnią etykietę wydrukowano: </span><span id="licz1" style="color:red; font-weight:bold;"></span><span id="z1" style="color:black; font-weight:bold;"> Dni, </span><span id="licz2" style="color:red; font-weight:bold;"></span><span id="z2" style="color:black; font-weight:bold;"> Godz, </span><span id="licz3" style="color:red; font-weight:bold;"></span><span id="z3" style="color:black; font-weight:bold;"> Min, </span><span id="licz4" style="color:red; font-weight:bold;"></span><span id="z4" style="color:black; font-weight:bold;"> Sek.</span><span id="z5" style="color:black; font-weight:bold;"> przez: </span><span style="color:red; font-weight:bold;">'.$login.'</span></span>';				

								
					
										}

							}else
							{
								
							echo '<span style="width:200px; height:25px; background-color:lightgreen;  border-radius: 20px/50px; color:black; padding:8px; box-shadow: 5px 5px 2px 2px grey;"><span id="ok2" style="color:black; font-weight:bold;">Ostatnią etykietę wydrukowano: </span><span id="licz1" style="color:red; font-weight:bold;"></span><span id="z1" style="color:black; font-weight:bold;"> Dni, </span><span id="licz2" style="color:red; font-weight:bold;"></span><span id="z2" style="color:black; font-weight:bold;"> Godz, </span><span id="licz3" style="color:red; font-weight:bold;"></span><span id="z3" style="color:black; font-weight:bold;"> Min, </span><span id="licz4" style="color:red; font-weight:bold;"></span><span id="z4" style="color:black; font-weight:bold;"> Sek.</span><span id="z5" style="color:black; font-weight:bold;"> przez: </span><span style="color:red; font-weight:bold;">'.$login.'</span></span>';				
	
							}
					}else
					{
																								
					echo "Błąd bazy danych, nie można wykonać zapytania do bazy\n";
					echo 'Błąd MySQL: ' . mysql_error();
					exit;
					}
					
			mysql_close($polaczenie);
			
			}
		
?>



</div>
setInterval("odswiez2();",5000);

function odswiez2(){
$('#aaa').load('http://172.27.189.18/ #aaa');
}

Czas się odlicza prawidłowo ;) ale po odświeżeniu diva poprzez Jquery nie aktualizuje się czas;)

komentarz 10 listopada 2017 przez xandros Nałogowiec (29,450 p.)

php chyba nie ma takiej składni:

function odliczanie()
                                        {
                                        sekunda2=sekunda2+1;
                                        if (sekunda2>=60) {sekunda2=0; minuta2=minuta2+1;}
                                        if (minuta2>=60) {minuta2=0; godzina2=godzina2+1;}
                                        if (godzina2>23) {godzina2=0; dzien2=dzien2+1;}
                                        if (dzien2>30)
                                        {
                                            location.reload();
                                        } else{
                                            if (sekunda2<10) var sek2="0"+sekunda2; else sek2=sekunda2;
                                            if (minuta2<10) var min2="0"+minuta2; else min2=minuta2;
                                            if (godzina2<10) var godz2="0"+godzina2; else godz2=godzina2;
                                            if (dzien2<10) var day2="0"+dzien2; else day2=dzien2;
                                 
 
                                            document.getElementById('licz1').innerHTML='<span style="color:red; font-weight:bold;">'+day2+'</span>';
                                            document.getElementById('licz2').innerHTML='<span style="color:red; font-weight:bold;">'+godz2+'</span>';
                                            document.getElementById('licz3').innerHTML='<span style="color:red; font-weight:bold;">'+min2+'</span>';
                                            document.getElementById('licz4').innerHTML='<span style="color:red; font-weight:bold;">'+sek2+'</span>';
                                             
                                     
                                            setTimeout("odliczanie()", 1000);
                                        }   
 
                                        }   

 

Podobne pytania

0 głosów
2 odpowiedzi 423 wizyt
pytanie zadane 29 grudnia 2017 w PHP przez mi-20 Stary wyjadacz (13,190 p.)
0 głosów
0 odpowiedzi 1,025 wizyt
pytanie zadane 11 marca 2017 w PHP przez BjoTrek Nowicjusz (180 p.)
0 głosów
1 odpowiedź 160 wizyt
pytanie zadane 16 kwietnia 2022 w PHP przez brzuszek Nowicjusz (120 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...