Ciclo PHP molto complesso

Syd Chino Barrett

Nuovo Utente
22 Ott 2015
3
0
0
Salve a tutti, sono abbastanza nuovo al PHP e sto affrontando alcune problematiche molto toste.
Vi spiego il mio problema che ormai mi assilla da due giorni e ancora non ho trovato una soluzione.
Il risultato è un "cartellino online" delle ore lavorate al netto dell'inattività dell'utente. Vi spiego il funzionamento: la mattina l'utente fa "Avvio" su di una pagina e viene registrato un datalog, nel caso il mouse resti fermi per 10 minuti parte uno script che registra i minuti di inattività, al movimento del mouse vengono registrate i minuti di inattività in tabella, al termine del lavoro l'utente fa "Stop" e viene anche qui registrato un datalog. Il risultato come ho detto è cercare le ore lavorate al netto dell'inattività, e questo sono riuscito a farlo seppur con qualche difficoltà, con una sottrazione tra stop e avvio - il tempo di inattività. Il problema sorge quando gli utenti non fanno ciò che gli si era chiesto di fare, ossia premono "Start" o "Stop" più volte o "a caso". Infatti succede che se viene premuto START - STOP, poi di nuovo START - STOP, io a video ho due colonne che mi riportano la stessa data e il risultato (ad esempio 01/10/2015 1 ora - 1/10/2015 1 ora e mezza), ciò che io vorrei è la somma di queste ore lavorate e un controllo sulle azioni che fa l'utente perchè ci sono problemi anche nel caso in cui l'utente faccia START - START - STOP, il programma prende in considerazione solamente il secondo start. Inoltre vorrei che il punto di partenza sia sempre e solo lo start (capita a volta che parte l'inattività per colpa delle donne delle pulizie che muovono il muose e poi lo script parte, ma questi sono casi proprio eccezionali e poi ci penso). Purtroppo educare gli utenti è complicato vorrei risolvere il problema magari con un'indicazione da parte Vostra. Vi posto il codice sotto. A monte di tutto c'è una query che mi tira fuori i vari dati idoperatore, datalog, etc, poi me li vado a recuperare sotto.
La logica che ho utilizzato: il programma entra e mette blank a tutti i campi fino a che non trova stesso operatore e stessa data e fa il check sulle azioni (da me nominate 1 - Start, 3 - Overtime che andrà ad autoincrementarsi , 4 - Stop). Sul 4 lui fa i calcoli necessari per tirarmi fuori il tempo e funziona benissimo. Ora stavo provando ad utilizzare 2 altre variabili azioneold e azionenew per dirgli se azioneold è diversa da azionenew fai che vai oltre, ma giuro che mi sono perso.
Idee?


PHP:
$RsSql=$oConn->Query($strSql);
if ($oConn->RecordCount>0) 
$nRec = $oConn->RecordCount;
else
$nRec = 0;

$operatore1 = "";
$ora1 = "";
$data1 = "";

$operatore0 = "";
$ora0 = "";
$data0 = "";
//$nextstep = "1";
//$primostep = "";
$azioneold = "";

/* $str1 = "prova";
$str2 = "si";
$pos = strpos($str1,$str2);
echo $pos; 
*/
while(!$oConn->EOF) {

$azionenew = $RsSql['azione'];
//echo $azione ;
$datafunk = "";
$data = $RsSql['Data'];
$cellaora = "";
$operatore1 = $RsSql['nome'];
$descrizione = $RsSql['Descrizione'];
$pos = strpos($azione,$nextstep);
//echo $pos."-".$nextstep."<br/>";



SWITCH ($azionenew) {

case 1:
//if ( isset($pos) && !empty($pos) ) {
//$nextstep = 3 || 4; 
if ($azionenew != $azioneold) {

$datafunk1 = $RsSql['datafunk'];
//$data1 = substr($RsSql['Data'], 0 , 10); 
$data1 = $RsSql['Data']; 
$overtime = "";
}	

echo $azionenew;
//}
break;	

case 3:
//if ($pos >0)	{
//	$nextstep = 4;
$overtime += $RsSql['Overtime'];
echo $azionenew;
//}

break;

case 4:
//if ($pos >0)	{
//$primostep = 1;
$descrizione = "Ore Lavorate";
$datafunk = $RsSql['datafunk']; 
echo $azionenew;

break;
//}
}

if (($operatore1 == $operatore0) && ($data1 == $data0) && ($azionenew == 4) ) {
//$stop = $datafunk;

$lavorato = abs(strtotime($datafunk) - strtotime($datafunk1));
$minutes = floor($lavorato / 60);
$cellaora = $minutes - $overtime;
$cellaora = substr(($cellaora / 60),0,4);
$StrDati.=" <tr>";
$StrDati.=" <td>".$RsSql['nome']."</td>
<td>".$data0."</td>

<td>".$descrizione."</td>
<td>".$cellaora."</td>
</tr>";
}
 

n1k4r0

Utente Attivo
15 Nov 2012
135
0
0
confesso di non aver esattamente capito ma parte del problema assomiglia all'invio multiplo di form perché ripetutamente cliccato il bottone.
come prima contromisura dovresti far sì che una volta premuto START sia impossibile cliccarlo di nuovo fino a che non viene cliccato STOP. in questo modo eviteresti il problema START - START - STOP perché impossibile da fare.
per gli START - STOP multipli direi che ad ogni START dovresti controllare la data e se uguale a quella corrente invece di iniziare il conteggio da zero lo fai iniziare dal valore nel db.
ovviamente avendo solo parzialmente compreso potrei aver scritto un sacco di stro... stupidaggini, non adirarti
 

marino51

Utente Attivo
28 Feb 2013
3.050
193
63
Lombardia
da come lo proponi, sembra uno spudoratissimo controllo delle persone, antisindacale ....
probabilmente lo hanno capito benissimo e te lo boicottano ... giustamente
 
Discussioni simili
Autore Titolo Forum Risposte Data
Monital [PHP] ciclo su un file json molto grande PHP 1
E Inviare variabile a PHP da ciclo in JS Javascript 0
I Eecuzione di javascript in ciclo foreach php. PHP 7
B [PHP] formula e ciclo PHP 5
M [PHP] Come inserire codice html in un ciclo while PHP 2
T con oop creare un ciclo per una pagina dinamica html con php PHP 3
G [PHP] totale per ogni id di un ciclo PHP 1
S [PHP] Ciclo foreach su più array PHP 2
N [PHP] Controllare condizione ciclo While PHP 9
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
N [PHP] Registrare variabili all'interno di un ciclo PHP 3
MattiaBL [PHP] Problema ciclo while PHP 3
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
C [PHP] Ciclo for dinamico PHP 14
gandalf1959 [PHP] query all'interno di un ciclo while PHP 3
Z [PHP] ciclo for PHP 9
valvasori [PHP] Problema ciclo for PHP 12
A [PHP] metodo di una classe per estrarre i dati con ciclo while PHP 1
H [PHP] Ciclo per calcolare i chilometri PHP 4
S [PHP] Recupero più dati da form realizzata ciclo FOR PHP 5
gandalf1959 [PHP] ciclo while non scrive dove dovrebbe... PHP 2
M [PHP] Errore in ciclo foreach PHP 1
G Ciclo if php per far comparire un pulsante solo nel caso in cui una variabile sia 0 PHP 2
B ciclo in PHP per creare numero progressivo PHP 2
S [risolto] Aiuto: ciclo php ( for / while). popolare select dinamicamente da array id. PHP 9
A [risolto] caricare con un ciclo For dei file PHP inclusi in una variabile array PHP 3
IImanuII Ciclo in php e tempo PHP 6
neo996sps PHP: problema con ciclo for PHP 1
S Problema ciclo php ed errore [object XMLHttpRequest] Ajax 0
W fare la somma di un valore estratto da un ciclo while Classic ASP 0
P Incrementare nodo in ciclo for-each XML 6
M UPDATE non aggiorna db se lo inserisco in un ciclo Database 1
V Ciclo for per Pulsante in JavaScript Javascript 7
O Ciclo non visualizzato PHP 1
M problema ciclo javascript Javascript 4
F Problema codice in un ciclo while PHP 2
T ciclo $.each non va jQuery 4
V Generare array da ciclo while e prendere valori casuali PHP 4
I tabella con ciclo, recupero dati PHP 3
Monital Problema con un ciclo for. PHP 1
M Problema con ciclo foreach per chiusura apertura div in base al numero di record in database PHP 1
minatore Ciclo while PHP 3
D ciclo while mi genera due campi vuoti PHP 5
K Problema con update di un database in un ciclo Classic ASP 1
P JAVA 8 Ciclo For all'interno di un altro Ciclo For Java 2
otto9due Problema inserimento ciclo foreach o while in variabile PHP 1
M Caricare più google maps con un ciclo Javascript 1
N Stranezza sul ciclo while PHP 1
M Aiuto su come procedere con un ciclo foreach PHP 4
A Tabella e ciclo for PHP 7

Discussioni simili