Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    41

    inserimento data inizio e fine turno di lavoro in record phpmyadmin

    Buonasera a tutti,
    Ho da poco ripreso in mano la programmazione PHP, quindi sono un pò digiuno, chiedo il vostro aiuto!
    Devo creare una sorta di software per l'azienda cui lavoro gestirà la registrazione degli ingressi dei dipendenti.
    Ho creato il form e vorrei che ogni volta che si "piggia" il pulsante inserisci orario, questo script esegua prima l'inserimento della data di inizio attività e al secondo submit sul pulsante inserisca la seconda. Tutto questo in un'unica riga del db, i poche parole ogni dipendente che si logga ha il suo bel turno, orario inizio e fine.
    Ovviamnte io l'ho pensata forse troppo semplice, ma ho provato anche a fare 2 tabelle con la medesima struttura (una per ora inizio, una per ora fine) ma mi hanno sconsigliato di fare in questo modo e di mettere tutto nella stessa tabella(in realtà non mi hanno spiegato molto del perchè). comunque vi chiedo cortesemente aiuto, anche se avete una procedura diversa da quella che ho pensato io ( chiedo per imparare).
    grazie mille a chi mi risponderà e vi auguro una buona serata

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Il consiglio di mettere tutto in una tabella è giusto, inutile avere tutti quei dati replicati.

    Per esempio la tabella potrebbe avere i campi:
    id, un int unsigend auto_increment
    dipendente, sarà un id se hai la tabella dipendenti e spero di si
    data, conterrà la data in cui si è premuto il pulsante e presumibilmente sarà la data corrente nel formato YYYY-MM-DD
    orario_inizio (hh:mm:ss formato 24h)
    orario_fine (hh:mm:ss formato 24h)

    Alla pressione del pulsante:
    - verifichi con una select se esiste un record che abbia la coppia dipendente-data
    --- se non c'è vuol dire chè è la prima volta che si preme il pulsante e si è ad inizio turno, quindi con un'insert inserisci una entry contenente dipendente, data, orario_inizio
    --- se c'è leggi i dati che ha recuperato
    ------ se il campo orario_fine è compilato vuol dire che il pulsante per il fine turno era già stato premuto e non fai niente
    ------ se il campo orario_fine è vuoto vuol dire che si è a fine turno e fai una update sulla riga aggiornando orario_fine

    Probabilmente pui risparmiarti il campo id, come chiave primaria dovrebbe funzionare anche la coppia dipendente-data che dovrebbe sempre essere univoca

    Questo sistema non tiene conto di turni a cavallo di due date, turni notturni per intenderci, ma basta cambiare un po' la logica, l'idea resta questa.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    41
    Grazie Alhazred per la tua risposta,
    Stò cercando di capire la logica per poter fare quello che mi hai indicato, ma non ci stò capendo granchè. Ti posto il codice che ho elaborato fino ad ora, se gentilmente puoi darmi dei suggerimenti in merito te ne sarei infinitamente grato!

    if(isset($_POST['inserisci']) ){// SE HO SETTATO INSERISCI...

    $nome=$_POST['nome']; //assegno a $nome il valore di input text nome
    $cognome=$_POST['cognome']; //assegno a cognome il valore di input text cognome
    $data=date("Y-m-d");//data odierna
    $ora=date("H:i:s");
    echo $ora;
    $select="select matricoladip from dipendenti where nome='$nome' AND cognome='$cognome'";
    $result=mysql_query($select);
    while($riga=mysql_fetch_assoc($result)){
    $contenuto=$riga["matricoladip"];
    }

    echo $contenuto." matricola dipendente"; //sulla base del nome e del cognome ricavo la matricola dipendente

    if($contenuto!=" "){
    $select2="SELECT data_inizio FROM orelavorate WHERE data_inizio= '$data'";
    $result2=mysql_query($select2);
    }
    if($result2!=" "){
    $select3="SELECT matricoladip_ol,inizio_lavoro,ora_inizio FROM orelavorate WHERE matricoladip_ol='$contenuto' && inizio_lavoro='$data'";
    $result3=mysql_query($select3);
    while($riga=mysql_fetch_assoc($result3)){
    $contenuto=$riga["matricoladip_ol"];
    $contenuto2=$riga["inizio_lavoro"];
    $contenuto3=$riga["ora_inizio"];
    }

    echo $contenuto." ".$contenuto2. " ".$contenuto3;
    }
    if($contenuto="" || $contenuto2=" " || $contenuto3=" "){
    $insert="INSERT INTO orelavorate (matricoladip_ol,inizio_lavoro,ora_inizio) VALUES('$contenuto','$data','$ora')";
    $result5=mysql_query($insert);
    }else{
    echo "</br>";
    echo "ciao!";
    }



    }

    oltre alla tabella dipendenti(che avevo) nel db ho la tabella orelavorate con la seguente struttura:
    id autoincrement;
    ore_totale date;
    matricoladip_ol int;
    inizio_lavoro date;
    ora_inizio time;
    pos_inizio null;
    fine_lavoro date;
    ora_fine time;
    pos_fine null;

    pos inizio e fine mi serviranno per memorizzare le coordinate geografiche del cliente che si logga.
    grazie per il tuo/vostro supporto!
    danylo87

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.