Cronometro php

ciccio9999

Utente Attivo
16 Ago 2011
30
0
0
Ragazzi mi servirebbe fare in modo che mi salvo i minuti di una partita a mo di diretta testuale. Per salvare il tempo devo fare così:
$a=time();
$b=date('H:i:s', $a);

Se io clicco un bottone trovo l'orario attuale. Come faccio a "convertirlo in minuti"?
ES: alle 15.02 inizia una partita. La squadra fa gol alle 15.20. Deve venire fuori che il gol è stato fatto al 18°. Non so se mi sono spiegato
 
ciao
dipende anche da come è impostata l'ora di inizio partita e l'ora in cui vine fatto il gol
mettiamo che entrambe siano scritte come indichi nel post. potresti fare una function del tipo

PHP:
<?php
function intervallo($i, $f){
	//per ore scritte tipo 15.25
	//esplodo secondo il puto
	$i_e=explode(".",$i);
	$f_e=explode(".";$f);
	//trasformo tutto in minuti
	$i_m=$i_e[0]*60+$i_e[1];
	$f_m=$f_e[0]*60+$f_e[1];
	$intervallo=$f_m-$i_m;
	return $intervallo;
}
//prova della function
$inizio="15.25";
$gol="16.18";
echo intervallo($inizio,$gol);
?>
ho scritto la function con tutti i passaggi logici, è evidente che può essere semplificata
leggermente diversa sarebbe si gli orari fossere in formato timestamp, ma il principio è lo stesso.
più complicata se gli orari sono informato diverso.
non ho considerato gli eventuali controlli (es. per errore gol minore di inizio)
 
Si funziona questa cosa! Ti ringrazio. Un'ultima cosa però: io vorrei fare in modo che il tempo di inizio partita sia tempo reale ma fisso.
Per dire io vorrei cliccare su un bottone INIZIA PARTITA e salvarmi il tempo di inizio partita. E ogni evento successivo confrontarlo con quel tempo.
Il mio problema è che ogni volta che inserisco un evento poi se faccio così:

$a=time();
$b=date('H.i', $a);

quando clicco il bottone questo salva il tempo di inizio, ma se poi riclicco per inserire l'evento, cambierebbe anche questo tempo, e quindi il tempo 0 sarebbe il tempo dell'evento.
Rischio che se alle 15.01 inizia la partita e alle 15.13 c'è il primo evento, questo evento è al 12°, ma poi se ce n'è un altro alle 15.21 questo sarà all'8° minuto. Capito che intendo?
 
ciao

intendi salvare in db? o il tempo di inizio deve rimanere solo per il periodo che sei sul sito?
poi hai una partita sola o più partite?

Mi serve che per ogni partita, se io clicco su un bottone, mi si salvi l'orario esatto in cui inizia la partita. In modo che per ogni evento poi calcolo semplicemente quanto tempo è passato
 
ciao
ho messo giù un'idea, però è "abbastanza" soddisfaciente se le partite sono una, se sono di più il discorso si complica dovendo usare array di array di array.
il sistema ha il difetto che se esci dal bw le sessioni si annullano, cioè lo script funzia solo sino a che sei dentro il sito.
se vuoi aumentare il numero di partite e usarlo uscendo/entrando dal bw non c'è altro che usare un db.

PHP:
<?php
function intervallo($i, $f){
    //per ore scritte tipo 15.25
    //esplodo secondo il punto
    $i_e=explode(".",$i);
    $f_e=explode(".",$f);
    //trasformo tutto in minuti
    $i_m=$i_e[0]*60+$i_e[1];
    $f_m=$f_e[0]*60+$f_e[1];
    $intervallo=$f_m-$i_m;
    return $intervallo;
}

if(!isset($_SESSION)){session_start();}
if(isset($_GET['del']) && $_GET['del']=="0"){
	session_destroy();
}
if(isset($_GET['ok'])){
	if(!isset($_SESSION['inizio'])){
		//se non ho l'inizio lo valorizzo
		$_SESSION['inizio']=time();
		$_SESSION['conta']=0;
		echo "inizio partita alle: ".date("H.i",$_SESSION['inizio']);
	}else{
		$ini=date("H.i",$_SESSION['inizio']);
		echo "inizio partita alle: $ini<br>";
		$c=$_SESSION['conta'];
		$_SESSION['evento'][$c]=time();
		for($j=0;$j<=$c;$j++){
			$eve=date("H.i",$_SESSION['evento'][$j]);
			$intervallo=intervallo($ini, $eve);
			echo "----evento ". ($j+1) ." ($eve) al $intervallo ° minuto<br>";
		}
		$c++;
		$_SESSION['conta']=$c;
	}
}else{
	$_SESSION=array();
	$c=0;
}
?>
<p>partita <a href="?ok=1">evento</a></p>
<p><a href="?del=0">annulla tutto</a></p>

lo script (così com'è) funzia, però secondo me è da considerare solo come un'idea di partenza.
qundi chiami lo script per la prima volta ti appaiono solo i link evento e annulla tutto (simulano pulsanti).
cliccando la prima volta su evento imposti l'ora di inizio della partita (che rimane sempre quello). poi ogni volta che riclicchi si aggiunge un evento e calcola a quanto tempo è avvenuto dall'inizio.
 
ciao
ho messo giù un'idea, però è "abbastanza" soddisfaciente se le partite sono una, se sono di più il discorso si complica dovendo usare array di array di array.
il sistema ha il difetto che se esci dal bw le sessioni si annullano, cioè lo script funzia solo sino a che sei dentro il sito.
se vuoi aumentare il numero di partite e usarlo uscendo/entrando dal bw non c'è altro che usare un db.

PHP:
<?php
function intervallo($i, $f){
    //per ore scritte tipo 15.25
    //esplodo secondo il punto
    $i_e=explode(".",$i);
    $f_e=explode(".",$f);
    //trasformo tutto in minuti
    $i_m=$i_e[0]*60+$i_e[1];
    $f_m=$f_e[0]*60+$f_e[1];
    $intervallo=$f_m-$i_m;
    return $intervallo;
}

if(!isset($_SESSION)){session_start();}
if(isset($_GET['del']) && $_GET['del']=="0"){
	session_destroy();
}
if(isset($_GET['ok'])){
	if(!isset($_SESSION['inizio'])){
		//se non ho l'inizio lo valorizzo
		$_SESSION['inizio']=time();
		$_SESSION['conta']=0;
		echo "inizio partita alle: ".date("H.i",$_SESSION['inizio']);
	}else{
		$ini=date("H.i",$_SESSION['inizio']);
		echo "inizio partita alle: $ini<br>";
		$c=$_SESSION['conta'];
		$_SESSION['evento'][$c]=time();
		for($j=0;$j<=$c;$j++){
			$eve=date("H.i",$_SESSION['evento'][$j]);
			$intervallo=intervallo($ini, $eve);
			echo "----evento ". ($j+1) ." ($eve) al $intervallo ° minuto<br>";
		}
		$c++;
		$_SESSION['conta']=$c;
	}
}else{
	$_SESSION=array();
	$c=0;
}
?>
<p>partita <a href="?ok=1">evento</a></p>
<p><a href="?del=0">annulla tutto</a></p>

lo script (così com'è) funzia, però secondo me è da considerare solo come un'idea di partenza.
qundi chiami lo script per la prima volta ti appaiono solo i link evento e annulla tutto (simulano pulsanti).
cliccando la prima volta su evento imposti l'ora di inizio della partita (che rimane sempre quello). poi ogni volta che riclicchi si aggiunge un evento e calcola a quanto tempo è avvenuto dall'inizio.

Ho preferito risolvere in altro modo: metto un altro attributo alla tabella partita che sarebbe orario esatto partita che si aggiorna quando clicco su inizia partita. Lo stesso si riaggiorna sovrascrivendo quando inizia il secondo tempo
 

Discussioni simili