- Home
- Categorie
- Coding e Sistemistica
- PHP
- recuperare numero piu' alto
-
@Samyorn said:
Che la query non va a buon fine
devi controllare a ritroso cosa c'è che non vaascolta, ho provato a vedere la query e modificarla; ora sembra funzionare ma non so se poi ci saranno problemi. Il fatto è che ho messo una visualizzazione dell'ultimo numero **senza la funzione max **e poi ho aggiunto +1. Secondo te va bene?
Quello che mi chiedo è come faccia a visualizzare l'ultimo numero (che è giusto) senza la funzione max:[php]
$num_matr="SELECT * FROM anag_dip WHERE id_azienda='".$tipo."'";//tipo è l'azienda di riferimento
$num_matr2 = mysql_query($num_matr,$connessione);
while($num_matr3 = mysql_fetch_row($num_matr2))
$num_matr4 = $num_matr3['18'];
print "<br>";
print "ultimo numero: ".$num_matr4."<br>";
$num_matr5=$num_matr4+1;
print "prox numero numero: ".$num_matr5."<br>";[/php]
-
aspetta; mi sono accorto che su una azienda l'ultimo numero era 454 e non lo stampava: l'ho cambiata così, ora sembra visualizzarla
[php]
$num_matr="SELECT * FROM anag_dip WHERE id_azienda='".$tipo."'AND matr=(SELECT MAX(matr) FROM anag_dip)";
$num_matr2 = mysql_query($num_matr,$connessione);
while($num_matr3 = mysql_fetch_row($num_matr2))
$num_matr4 = $num_matr3['18'];
print "<br>";
print "ultimo numero: ".$num_matr4."<br>";
$num_matr5=$num_matr4+1;
print "prox numero numero: ".$num_matr5."<br>";[/php]pero' su un altra azienda mi da problemi...
Ci sto diventando scemola cosa strana è che funziona solo su quei casi in cui c'è un numero di matricola più alto. Infatti se vado a cambiare da mysql il numero di quella che non funzionava e ne metto uno più alto di quella che funzionava allora funziona e non funziona più l'altra....
-
Non comprendo cosa sia questo:
[php]$num_matr4 = $num_matr3['18'];[/php]EDIT: facciamo una cosa, se no mi sa che andiamo a tentativi
Fai un quaadro generale di quel che ti serve e descrivi
- che dati arrivano a questo pezzo di script (e assicurati che arrivino
- che cosa dovrebbe fare questo script
- com'è impostato il Db.....
e tutto quello che puo' servire per capire la situazione
-
@Samyorn said:
Non comprendo cosa sia questo:
[php]$num_matr4 = $num_matr3['18'];[/php]EDIT: facciamo una cosa, se no mi sa che andiamo a tentativi
Fai un quaadro generale di quel che ti serve e descrivi
- che dati arrivano a questo pezzo di script (e assicurati che arrivino
- che cosa dovrebbe fare questo script
- com'è impostato il Db.....
e tutto quello che puo' servire per capire la situazione
questo?
$num_matr4 = $num_matr3['18'];
dovrebbe essere il campo del database chiamato matr, che si trova alla posizione 18. Magari sbaglio, sono sempre alle prime armi...ok, ti ringrazio tanto.
Allora, seguo i punti:
1)
[php]
$num_matr="SELECT * FROM anag_dip WHERE id_azienda='".$tipo."'AND matr=(SELECT MAX(matr) FROM anag_dip)";
$num_matr2 = mysql_query($num_matr,$connessione);
while($num_matr3 = mysql_fetch_row($num_matr2))
$num_matr4 = $num_matr3['18'];
print "<br>";
print "ultimo numero: ".$num_matr4."<br>";
$num_matr5=$num_matr4+1;
print "prox numero: ".$num_matr5."<br>";[/php]Da questo script mi arrivano le stampe giuste (cioè ultimo numero e prox numero) ma solo dell'azienda il cui numero matricola è più alto rispetto a tutte le aziende. Quindi solo di questa mi da il risultato giusto. Invece di tutte le altre aziende il cui numero matricola è più basso mi arriva il seguente messaggio:
Notice: Undefined variable: num_matr4 in C:\Programmi\EasyPHP 2.0b1\www\pagina privata con SESSIONI-prova smanetto\nuovo_dipendente.php on line 213
ultimo numero: Notice: Undefined variable: num_matr4 in C:\Programmi\EasyPHP 2.0b1\www\pagina privata con SESSIONI-prova smanetto\nuovo_dipendente.php on line 214
prox numero numero: 1La riga 213 e 214 è dove c'è $num_matr4
-
Dallo script io vorrei ottenere il numero matricola più alto (ovviamente distinti per ogni azienda che seleziono, e l'azienda che seleziono è già nella variabile "tipo".
-
Il database "anag_dip" è impostato con un campo autoincrementante (user_id) poi id_utente (che riporta il numero dell'utente proveniente da altra tabella), poi "id_azienda" che riporta il nome dell'azienda (che infatti corrsiponde a "tipo"). Sempre di questa tabella alla 18° posizione c'è il campo "matr" che è appunto la matricola; è questo il campo di cui io vorrei selezionare il massimo numero, ovviamente dell'azienda che sto selezionando in quel momento.
Mi sembra strano perchè ho dei casi simili e tutto funziona normale...
Grazie ancora
-
Facciamo questa prova:
[php]$num_matr="SELECT * FROM anag_dip WHERE matr=(SELECT MAX(matr) FROM anag_dip WHERE id_azienda='$tipo')";[/php]
vedi se funge
-
Prova questa query:
[php]
$num_matr = "SELECT * FROM anag_dip WHERE id_azienda='" . $tipo . "' ORDER BY matr DESC LIMIT 0, 1";
[/php]Ciao!
-
@Samyorn said:
Facciamo questa prova:
[php]$num_matr="SELECT * FROM anag_dip WHERE matr=(SELECT MAX(matr) FROM anag_dip WHERE id_azienda='$tipo')";[/php]
vedi se fungeGrandissimo!!! C'era la query invertita.... Ora funziona! Sei stato davvero un amico!!
Ti ringrazio tanto
-
solo che stavo pensando una cosa...mi sa che c'è qualcosa in più XD
[php]$num_matr="SELECT MAX(matr) FROM anag_dip WHERE id_azienda='$tipo'";[/php]
dato che ti serve solo la matricola diventa inutile la subqueryEDIT: Ciao Sups ho visto dopo il tuo post
@maubox8 anche il metodo di Sups ti darà lo stesso risultato
vedi quale potrebbe servirti maggiormente
-
ok, grazie anche a te Sups
-
Ciao Samyorn
Prego maubox8Ciao!