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
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
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
Vuoi un esempio di database o di codice?
Se imposti ID come autoincrement non avrai controllo sul reset e andrà sempre solo ad aumentare.codice:TbRicevute ------------------ ID | Anno ------------------ 10 | 2008 ------------------ 29 | 2008 ------------------ 7 | 2009
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).
Scritto un pò a caso ma dovrebbe funzionare o comunque darti un'idea di come procedere.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") );
ho modificato con i nomi della tabella etc, ma mi da questo errore:
ecco il codice:Codice PHP:
Warning: mysqli_query() expects parameter 1 to be mysqli, null given
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 = getTicketNumber( date("Y") );
?>
Ovviamente..... dove l'hai definito $con?
E si chiama $con il link alla tua connessione al database MySQL?
Quello devi farlo tu.
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 = getTicketNumber( date("Y") );
echo $numero_ricevuta_2009;
Fai unaCosa restituisce?codice:var_dump($connessione);
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);