• User Attivo

    recuperare numero piu' alto

    ciao a tutti, sapete mica dirmi come si fa a recuperare il numero più alto da un campo di database mysql. Ho provato questa query ma mi da sempre valore 0

    [PHP]$num_matr="SELECT * FROM anag_dip WHERE matr = 'MAX(matr)' and id_azienda='".$tipo."'" ;
    $result = mysql_query($num_matr,$connessione);
    $numero = mysql_fetch_array($result);
    $numero2 = $numero['matr'];[/PHP]

    Nel database il valore matr che attributo deve avere? Io ho messo tinyint
    ma non so se va bene


  • User Attivo

    nemmeno così funziona:

    :mmm:

    [PHP]
    $num_matr="SELECT * FROM anag_dip WHERE id_azienda='".$tipo."'" ;
    $result = mysql_query($num_matr,$connessione);
    $numero = mysql_fetch_array($result);
    $numero2 = $numero['matr'];
    $num_max = 'MAX($numero2)';
    $num_agg = $num_max+1;[/PHP]


  • Consiglio Direttivo

    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]
    😉


  • User Attivo

    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..


  • Consiglio Direttivo

    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


  • User Attivo

    mi stampa
    bool(false)
    che vuol dire?

    e nel numero che dovrebbe stampare mi scrive size="55" che è la continuzione dell'istruzione successiva.... :mmm:


  • Consiglio Direttivo

    @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 😉


  • User Attivo

    @Samyorn said:

    Che la query non va a buon fine
    devi controllare a ritroso cosa c'è che non va 😉

    ascolta, 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]


  • User Attivo

    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 scemo

    la 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....


  • Consiglio Direttivo

    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

    1. che dati arrivano a questo pezzo di script (e assicurati che arrivino :2:
    2. che cosa dovrebbe fare questo script
    3. com'è impostato il Db.....
      e tutto quello che puo' servire per capire la situazione 😉

  • User Attivo

    @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

    1. che dati arrivano a questo pezzo di script (e assicurati che arrivino :2:
    2. che cosa dovrebbe fare questo script
    3. 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: 1

    La riga 213 e 214 è dove c'è $num_matr4

    1. 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".

    2. 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


  • Consiglio Direttivo

    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 😉


  • User Attivo

    Prova questa query:

    [php]
    $num_matr = "SELECT * FROM anag_dip WHERE id_azienda='" . $tipo . "' ORDER BY matr DESC LIMIT 0, 1";
    [/php]

    Ciao!


  • User Attivo

    @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 funge 😉

    Grandissimo!!! C'era la query invertita.... Ora funziona! Sei stato davvero un amico!!
    Ti ringrazio tanto
    🙂


  • Consiglio Direttivo

    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 subquery 😉

    EDIT: Ciao Sups 😄 ho visto dopo il tuo post 😉
    @maubox8 anche il metodo di Sups ti darà lo stesso risultato 😉
    vedi quale potrebbe servirti maggiormente 😉


  • User Attivo

    ok, grazie anche a te Sups


  • User Attivo

    Ciao Samyorn 😉
    Prego maubox8 🙂

    Ciao!