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

    numero autoincrementale resettato a inizio anno

    salve, qualcuno mi può indicare in che modo sia opportuno creare un numero che si autoincrementa e però a inizio anno si resetta e ricomincia da uno? mi serve per attivare un numero di ricevuta....
    grazie

  2. #2
    Puoi creare una procedura PHP che verifica in fase di inserimento se l'ultima coppia anno/id si riferisce all'anno precedente. Se la condizione è soddisfatta crea un nuovo record con l'anno ed id = 1. In fase di inserimento dovrai usare le transazioni per:

    - identificare l'ultimo id
    - inserire un nuovo record con id + 1

  3. #3
    non sono in grado senza un esempio....

  4. #4
    Vuoi un esempio di database o di codice?
    codice:
    TbRicevute
    ------------------
    ID       |    Anno
    ------------------
    10       |   2008
    ------------------
    29       |   2008
    ------------------
    7         |   2009
    Se imposti ID come autoincrement non avrai controllo sul reset e andrà sempre solo ad aumentare.

    Quindi ID è integer semplice e Anno diventa la seconda PK (primary key).

    Ovviamente non essendo generato automaticamente l'ID te lo devi calcolare ogni volta prima della INSERT della ricevuta in tabella (che avrà altri campi ovviamente oltre ad ID ed Anno).
    codice:
    function getTicketNumber($year) {
        
        $sql = "SELECT TOP 1 FROM TbRicevute WHERE Anno = $year ORDER BY id DESC";
        $res = mysqli_query($con, $sql);
        
        if( mysqli_num_rows($res)  ) {
            // Sono presenti già ricevute per l'anno selezionato
            $row = mysqli_fetch_row($res);
            return ((int) $row[0]) + 1;
        } else {
            return 1;
        }
        
    }
    
    $numero_ricevuta_2008 = getTicketNumber(2008);
    $numero_ricevuta_2009 = getTicketNumber( date("Y") );
    Scritto un pò a caso ma dovrebbe funzionare o comunque darti un'idea di come procedere.

  5. #5
    mille grazie, ora provo subito

  6. #6
    ho modificato con i nomi della tabella etc, ma mi da questo errore:
    Codice PHP:
    Warningmysqli_query() expects parameter 1 to be mysqlinull given 
    ecco il codice:
    Codice PHP:
    <?PHP
    include("db.php"); 

    function 
    getTicketNumber($year) {
        
        
    $sql "SELECT TOP 1 id_ricevuta FROM pagamenti WHERE anno = $year ORDER BY id_transaz DESC";
        
    $res mysqli_query($con$sql);
        
        if( 
    mysqli_num_rows($res)  ) {
            
    // Sono presenti già ricevute per l'anno selezionato
            
    $row mysqli_fetch_row($res);
            return ((int) 
    $row[0]) + 1;
        } else {
            return 
    1;
        }
        
    }

    $numero_ricevuta_2008 getTicketNumber(2008);
    echo 
    $numero_ricevuta_2009 getTicketNumberdate("Y") );


        
    ?>

  7. #7

  8. #8
    Ovviamente..... dove l'hai definito $con?
    E si chiama $con il link alla tua connessione al database MySQL?

    Quello devi farlo tu.

  9. #9
    ho corretto così, la connessione la fa nel file incluso db.php... e lì c'è effettivamente $connessione e non $con... ma l'errore me lo da ugualmente....
    Codice PHP:
    include("db.php"); 

    function 
    getTicketNumber($year) {
        
        
    $sql "SELECT TOP 1 id_ricevuta FROM pagamenti WHERE anno = $year ORDER BY id_transaz DESC";
        
    $res mysqli_query($sql,$connessione);
        
        if( 
    mysqli_num_rows($res)  ) {
            
    // Sono presenti già ricevute per l'anno selezionato
            
    $row mysqli_fetch_row($res);
            return ((int) 
    $row[0]) + 1;
        } else {
            return 
    1;
        }
        
    }

    //$numero_ricevuta_2008 = getTicketNumber(2008);
    $numero_ricevuta_2009 getTicketNumberdate("Y") );
    echo 
    $numero_ricevuta_2009

  10. #10
    Fai una
    codice:
    var_dump($connessione);
    Cosa restituisce?

    Secondo me la funzione non trova $connessione perchè è definita fuori dalla funzione.

    O definisci un'altra connessione all'interno della funzione... sconsigliato.
    O rendi globale la connessione con 'global $connessione;' .... può andare
    Oppure passi la connessione come parametro della funzione

    codice:
    function getTicketNumber($year, $con) {
    .... etc. etc. 
    }
    
    getTicketNumber(2008, $connessione);

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.