Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Timbratrice ingresso e uscita

    Buonasera a tutti,
    ne sto uscendo scemo , ma purtroppo ho problemi con questo pezzo di codice, un utente quando effettua un ingresso all'interno del gestionale per timbrare l'entrata cliccando su un bottone e lui richiede l'uscita.
    Il problema sta nella verifica se l'utente ha già timbrato nello stesso giorno, cosa che non deve verificare perchè un utente può entrare e uscire per piu volte nello stesso giorno.

    Riuscireste a darmi una mano?


    Intanto vi metto qui il codice per l'azione:

    codice:
    <?php$page_name = basename($_SERVER["SCRIPT_FILENAME"], '.php');
    
    global $userData;
    $attendanceSQL = mysqli_query($db, "SELECT*FROM `" . DB_PREFIX . "attendance` WHERE `dip_code` = '" . $userData['dip_code'] . "' AND `attendance_date` = '" . date('Y-m-d') . "'");
    if ( $attendanceSQL ) {
        $attendanceROW = mysqli_num_rows($attendanceSQL);
        if ( $attendanceROW == 0 ) {
            $action_name = 'Entrata';
        } else {
            $attendanceDATA = mysqli_fetch_assoc($attendanceSQL);
            if ( $attendanceDATA['action_name'] == 'punchin' ) {
                $action_name = 'Uscita';
            } else {
                $action_name = 'Entrata';
            }
        }
    } else {
        $attendanceROW = 0;
        $action_name = 'Entrata';
    } ?>
    
    

    Qui sotto il form con la verifica:


    codice:
    <?phpif ( $_SESSION['Login_Type'] != 'admin' ) { ?>            <?php if ( $attendanceROW < 2 ) { ?>
                    <form method="POST" class="employee sidebar-form" role="form" id="attendance-form">
                        <div class="input-group">
                            <input type="text" class="form-control" id="desc" name="desc" placeholder="Note" />
                            <span class="input-group-btn">
                                <button type="submit" id="action_btn" class="btn btn-warning"><?php echo $action_name; ?></button>
                            </span>
                        </div>
                    </form>
                <?php } ?>
    
    <?php } ?>

    E qui la funzione:

    codice:
    functionAttendanceProcessHandler(){
        global $userData, $db;
        $result = array();
    
        $dip_code = $userData['dip_code'];
        $attendance_date = date('Y-m-d');
        $attendanceSQL = mysqli_query($db, "SELECT*FROM `" . DB_PREFIX . "attendance` WHERE `dip_code` = '$dip_code' AND `attendance_date` = '$attendance_date'");
        if ($attendanceSQL) {
            $attendanceROW = mysqli_num_rows($attendanceSQL);
            if ($attendanceROW == 0) {
                $action_name = 'punchin';
            } else {
                $attendanceDATA = mysqli_fetch_assoc($attendanceSQL);
                if ($attendanceDATA['action_name'] == 'punchin') {
                    $action_name = 'punchout';
                } else {
                    $action_name = 'punchin';
                }
            }
        } else {
            $attendanceROW = 0;
            $action_name = 'punchin';
        }
        $action_time = date('H:i:s');
        $dip_desc = addslashes($_POST['desc']);
    
        $insertSQL = mysqli_query($db, "INSERT INTO `" . DB_PREFIX . "attendance`(`dip_code`, `attendance_date`, `action_name`, `action_time`, `dip_desc`) VALUES ('$dip_code', '$attendance_date', '$action_name', '$action_time', '$dip_desc')");
        if ($insertSQL) {
            $result['next'] = ($action_name == 'punchin' ? 'Uscita' : 'Entrata');
            $result['complete'] = $attendanceROW + 1;
            $result['result'] = 'L inserimento è avvenuto con successo.';
            $result['code'] = 0;
        } else {
            $result['result'] = 'Qualcosa è andato storto, riprovare.';
            $result['code'] = 1;
        }
    
        echo json_encode($result);
    
    }
    Riuscireste a darmi una mano?
    Purtroppo il gestionale è passato a me da un'altra persona che è stata licenziata, quindi non posso contattarla.

  2. #2
    Non ho capito questo passaggio:
    Quote Originariamente inviata da samuele ronzani Visualizza il messaggio
    Il problema sta nella verifica se l'utente ha già timbrato nello stesso giorno, cosa che non deve verificare perchè un utente può entrare e uscire per piu volte nello stesso giorno.
    La verifica quindi va fatta oppure no?

  3. #3
    Quote Originariamente inviata da optime Visualizza il messaggio
    Non ho capito questo passaggio:


    La verifica quindi va fatta oppure no?


    No, non va fatta. Va fatta la verifica solo se l'utente ha un'entrata in attesa di uscita.
    L'utente nello stesso giorno può entrare e uscire piu volte.

  4. #4
    Quote Originariamente inviata da samuele ronzani Visualizza il messaggio
    No, non va fatta. Va fatta la verifica solo se l'utente ha un'entrata in attesa di uscita.
    L'utente nello stesso giorno può entrare e uscire piu volte.
    quindi in uno scenario va fatta, perché dici che NON va fatta?

  5. #5
    Perché l’utente quando inserisce entrata e poi uscita, l’elemento form viene nascosto.Non me lo fa più visualizzare.

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Non ho capito bene il tuo problema...cmq il form è dentro un if($attendanceROW < 2) quindi appena farà l'uscita il form non si vedrà più perchè ci sono già due record (entrata e uscita).
    Se il tuo scopo è farlo vedere sempre basta che togli questo if (ed io metterei anche un order by "id" desc nelle select)

  7. #7
    Quote Originariamente inviata da boots Visualizza il messaggio
    Non ho capito bene il tuo problema...cmq il form è dentro un if($attendanceROW < 2) quindi appena farà l'uscita il form non si vedrà più perchè ci sono già due record (entrata e uscita).
    Se il tuo scopo è farlo vedere sempre basta che togli questo if (ed io metterei anche un order by "id" desc nelle select)
    Il problema è stato risolto.
    Togliendo l'if in pratica al momento della timbratura di uscita, l'elemento scompare e al login successivo ricompare.
    Il problema resta che nel pulsante mi mostra Uscita nuovamente, al posto di entrata.
    Il dipendente ha già timbrato un'uscita.

  8. #8
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Hai messo l'order by ?
    Dato che per determinare se scrivere entrata/uscita prende una riga dal db è probabile che prende sempre la prima (il primo ingresso). Con l'order by id desc prende sempre l'ultimo è dovrebbe mostrarti il tasto corretto

  9. #9
    Quote Originariamente inviata da boots Visualizza il messaggio
    Hai messo l'order by ?
    Dato che per determinare se scrivere entrata/uscita prende una riga dal db è probabile che prende sempre la prima (il primo ingresso). Con l'order by id desc prende sempre l'ultimo è dovrebbe mostrarti il tasto corretto
    Order by inserito, ora mi mostra entrata sul bottone a prescindere.

  10. #10
    order by come? posta l'istruzione pls

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 © 2025 vBulletin Solutions, Inc. All rights reserved.