Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. chinoknot
    3. Post
    C

    chinoknot

    @chinoknot

    • Profilo
    • Chi segue 0
    • Da chi è seguito 0
    • Discussioni 1
    • Post 2
    • Migliore 0
    • Gruppi 0
    Iscrizione Ultimo Accesso
    Località roma Età 42
    0
    Reputazione
    2
    Post
    0
    Visite al profilo
    0
    Da chi è seguito
    0
    Chi segue
    User Newbie

    Post creati da chinoknot

    • RE: Ciclo PHP molto complesso

      Il problema è che mi sono bloccato con la logica e non riesco a mettere in codice un ragionamento simile.

      postato in Coding
      C
      chinoknot
    • Ciclo PHP molto complesso

      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>";
      } [/PHP]

      postato in Coding
      C
      chinoknot