- Home
- Categorie
- Coding e Sistemistica
- PHP
- recuperare numero piu' alto
-
Ciao maubox8
prova facendo una subquery
[php]$sql= "SELECT * FROM anag_dip WHERE id_azienda='$tipo' AND matr=(SELECT MAX(matr) FROM anag_dip)";[/php]
-
niente, continua a vedermi lo 0 come numero principale: forse sbaglio l'istruzione dopo:
[php]$num_matr= "SELECT matr FROM anag_dip WHERE id_azienda='$tipo' AND matr=('SELECT MAX(matr) FROM anag_dip')";
$result = mysql_query($num_matr,$connessione);
$numero = mysql_fetch_array($result);
$numero2 = $numero['matr'];
$numero3=$numero2+1;[/php][php]?>
</tr>
<td>matricola:</td><td><input type="text" name="matr" value =<?php echo "$numero3";?> size="55" maxlength="50"></td>
</tr>[/php]ecc. ecc..
-
Fai questa prova quì:
[php]$num_matr= "SELECT matr FROM anag_dip WHERE id_azienda='$tipo' AND matr='(SELECT MAX(matr) FROM anag_dip)'";
$result = mysql_query($num_matr,$connessione) or die (mysql_error());
$numero = mysql_fetch_array($result);
var_dump($numero);
[/php]
vedi un po che ti stampa
-
mi stampa
bool(false)
che vuol dire?e nel numero che dovrebbe stampare mi scrive size="55" che è la continuzione dell'istruzione successiva....
-
@maubox8 said:
mi stampa
bool(false)
che vuol dire?
Che la query non va a buon fine
devi controllare a ritroso cosa c'è che non va
-
@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!