Numerare automaticamente campo numerico

  • Creatore Discussione Creatore Discussione Max61
  • Data di inizio Data di inizio
PHP:
//recupero l'anno corrente.
$AnnoSinistro=date("Y");

//recupero la data corrente.
$Data_Richiesta_Utente =date("d-m-Y");

//query mysql di ricerca anno.
$sql_cerca = mysql_query("SELECT * FROM tblsinistri  WHERE (AnnoSinistro LIKE '%" . $AnnoSinistro . "%' ");

//corrispondenze trovate
$trovati = mysql_num_rows($sql_cerca);

//se ci sono risultati incremento il numero della pratica.
if($trovati > 0) {
  
  $Num_Pratica +1;
  
  // Print out result
  while($row = mysql_fetch_array($result)) {
    
    $ultimonumero_nelDB="".$row['MAX(Num_Pratica)'];
    $Num_Pratica=$ultimonumero_nelDB + 1;
    
  }
}
// Se non trovo corrispondenza setto il numero della pratica a 1.
else {
  $Num_Pratica = "1";

//qui aggiorni il DB aggiungendo l'anno e il numero della pratica.
}

se non ho capito male risolvi il problema così.
 
ho capito

PHP:
//recupero l'anno corrente.
$AnnoSinistro=date("Y");

//recupero la data corrente.
$Data_Richiesta_Utente =date("d-m-Y");

//query mysql di ricerca anno.
$sql_cerca = mysql_query("SELECT * FROM tblverbali  WHERE (AnnoSinistro LIKE '%" . $AnnoSinistro . "%' ");

//corrispondenze trovate
$trovati = mysql_num_rows($sql_cerca);

//se ci sono risultati incremento il numero della pratica.
if($trovati > 0) {
  
  $Num_Pratica +1;
  
  // Print out result
  while($row = mysql_fetch_array($result)) {
    
    $ultimonumero_nelDB="".$row['MAX(Num_Pratica)'];
    $Num_Pratica=$ultimonumero_nelDB + 1;
    
  }
}
// Se non trovo corrispondenza setto il numero della pratica a 1.
else {
  $Num_Pratica = "1";

//qui aggiorni il DB aggiungendo l'anno e il numero della pratica.
}

prova così.
 
Ecco il database
....
Ciao

Max, scusa, non ho chiesto il db (me ne avevi già inviato copia), ti ho chiesto

quale campo associato alla pratica definisce l'anno di appartenenza ? questo campo come è definito nel db ovvero quale formato ha ?

la ragione della mia domanda è per sapere come leghi anno di appartenenza e pratica, proprio in funzione del fatto che vuoi inserire una pratica dell'anno precedente, quando siamo già nell'anno corrente

se non è chiaro questo legame, non credo si arrivi ad una soluzione
ciao
Marino
 
Ultima modifica:
Lo screen del database, come te lo mando visto che è 185.3 kb e qua ne accettano fino 100?
e comunque mi ripeto, mi questo errore:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\GestioneSinistri\views\Sinistro_Insert.php on line 248

La riga in questione è:
//corrispondenze trovate
$trovati = mysql_num_rows($sql_cerca);

i nomi di campi e tabelle sono giusti...
Ciao
Max61
 
Ultima modifica:
non serve lo screen del database,
è sufficiente che scrivi il nome della tabella e il nome del campo
tutto il resto è superfluo

se non definisci questo, non credo che si possa giungere a una soluzione,

questa è la seconda discussione aperta sullo stesso argomento, anche nella precedente ho cercato di capire, ma se non mi aiuti, finisce come allora .... nel nulla
 
Ok, la tabella si chiama tblsinistri
il campo da incrementare $Num_Pratica
il campo dell'anno $AnnoSinistro

Io per ora sono arrivato a fare la numerazione automatica così:
PHP:
//NUMERAZIONE AUTOMATICA
$Data_Richiesta_Utente = date('d-m-Y');
$AnnoSinistro = date('Y');
$Num_Pratica = "";

$query = "SELECT Num_Pratica, MAX(Num_Pratica) FROM tblsinistri"; 
	 
$result = mysql_query($query) or die(mysql_error());
$Num_Pratica +1;

while($row = mysql_fetch_array($result)){
	
	$ultimonumero_nelDB="".$row['MAX(Num_Pratica)'];
	$Num_Pratica=$ultimonumero_nelDB+1;
 }
//FINE NUMERAZIONE AUTOMATICA

Il problema è che come già detto in precedenza vorrei, se possibile che la numerazione all'inizio dell'anno ripartisse da 1.

Grazie
Max61
 
premesso che non mi hai scritto come si chiama il campo della tabella che identifica l'anno di appartenenza,

lo identifico con "AnnoSinistro" derivandolo dal nome della variabile php, se non fosse questo, lo cambierai

PHP:
//NUMERAZIONE AUTOMATICA

$Data_Richiesta_Utente = date('d-m-Y');

$AnnoSinistro = date('Y');

$query = "SELECT 1+MAX(Num_Pratica) as Num_Pratica FROM tblsinistri where AnnoSinistro=".$AnnoSinistro; 
     
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)) $Num_Pratica = $row['Num_Pratica'];

//FINE NUMERAZIONE AUTOMATICA

ma con il codice che hai postato e che ho ripreso, modificando solo le parti necessarie,
non capisco come puoi inserire una pratica relativa all'anno precedente, nello specifico
se usi la data del sistema
PHP:
$Data_Richiesta_Utente = date('d-m-Y');
come puoi agire su anni precedenti ?

ciao
Marino
 
Ultima modifica:
L'anno di appartenenza della pratica lo hai identificato giustamente con $AnnoSinistro
Riguardo all'inserimento automatico, pensavo di toglierlo e di inserirlo a mano, così da poter digitare l'anno che voglio (X-1).
Detto ciò ho fatto alcune prove con il tuo codice
1) Nell'anno corrente incrementa perfettamente il numero nel campo Num_Pratica
2) nell'anno successivo il campo Num_Pratica rimane vuoto
devo modificare qualcosa?

Grazie
Max61
 
PHP:
//NUMERAZIONE AUTOMATICA

$Data_Richiesta_Utente = date('d-m-Y');

$AnnoSinistro = date('Y');

$query = "SELECT 1+MAX(Num_Pratica) as Num_Pratica FROM tblsinistri where AnnoSinistro=".$AnnoSinistro; 
     
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)) $Num_Pratica = $row['Num_Pratica'];

if ( empty($Num_Pratica) ) $Num_Pratica = 1;

//FINE NUMERAZIONE AUTOMATICA
 
Grazie funziona!!!
E per le pratiche dell'anno X-1 faccio come ti ho detto l'anno lo inserisco a mano.

Grazie infinite per la pazienza
Max61
 
Grazie funziona!!!
E per le pratiche dell'anno X-1 faccio come ti ho detto l'anno lo inserisco a mano.

Grazie infinite per la pazienza
Max61


Ciao marino51, il codice che mi hai postato funziona perfettamente, soltanto che adesso mi è sorta un altra esigenza di cui non avevo tenuto conto, cioè quella di poter incrementare il campo Num_Pratica di ogni cliente, mi spiego meglio:
Cliente Pippo nel DB ha la pratrica n. 1
Cliente Pluto nel DB ha le pratiche n.1, 2 , 3
Vorrei che se vado ad inserire un altra pratica del cliente Pippo il campo Num_Pratica diventasse 2
mentre se inserisco un altra pratica del cliente Pluto il campo Num_Pratica diventasse 4
ovviamente sempre tenendo conto dell'anno.

con la speranza di essermi spiegato allego il codice che ho tentato di modificare senza nessun risultato utile

PHP:
//NUMERAZIONE AUTOMATICA
$Num_Pratica = "";
$AnnoSinistro = date('Y');

//$query = "SELECT 1+MAX(NumPratica) as NumPratica FROM tblsinistri where Nominativo = '".$Nominativo." and AnnoSinistro=".$AnnoSinistro."'"; 
$query = "SELECT 1+MAX(NumPratica) as NumPratica FROM tblsinistri where Nominativo='.$Nominativo' AND AnnoSinistro=".$AnnoSinistro; 

$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)) $NumPratica = $row['NumPratica'] AND $AnnoSinistro=$row['AnnoSinistro'];

if ( empty($NumPratica) ) $NumPratica = 1;

//FINE NUMERAZIONE AUTOMATICA

Questo è il codice funzionante che mi hai postato te che incrementa di 1 l'ultimo numero nel DB:
PHP:
//NUMERAZIONE AUTOMATICA
$NumPratica = "";
$AnnoSinistro = date('Y');

$query = "SELECT 1+MAX(NumPratica) as NumPratica FROM tblsinistri where AnnoSinistro=".$AnnoSinistro; 
     
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)) $NumPratica = $row['NumPratica'];

if ( empty($NumPratica) ) $NumPratica = 1;

//FINE NUMERAZIONE AUTOMATICA

Ciao
Max61
 
Ultima modifica:

Discussioni simili