Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Ordinare numeri dal MySql

    Salve a tutti.
    codice:
    $sql1 = "SELECT * FROM $tabella WHERE Tipo = 'a' ORDER BY CONCAT(a, b)";
    Questo stringa permtte di visualizzare i risultati controllando prima il campo a e dopo il campo b.
    Purtroppo le colonne a e b contengono numeri che mi vengono visualizzati così:

    12
    13
    1
    2
    21
    3
    4
    5

    Come posso modificare lo script in modo da visualizzare i risultati secondo l'ordine matematico?


  2. #2
    Il campo deve essere numerico.

    Poi prova anche senza concat che forma un numero unico, prova con
    order by a, b ... Ma forse e' la stessa cosa....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Grazie per la risposta.
    Il campo adesso è TEXT. L'ho messo TEXT perchè alcuni campi sono col la virgola (0,15 - 0,30 - ecc.).
    Se mi consigli quale può essere il campo più appropriato per il mio caso, lo modifico subito.

  4. #4
    io solitamente per quel tipo di campi utilizzo float e metto il punto al posto della virgola, non so però se è il + appropriato, di certo li ordina bene

  5. #5
    Originariamente inviato da Sechi Paolo
    Grazie per la risposta.
    Il campo adesso è TEXT. L'ho messo TEXT perchè alcuni campi sono col la virgola (0,15 - 0,30 - ecc.).
    Se mi consigli quale può essere il campo più appropriato per il mio caso, lo modifico subito.
    Infatti e' quello il problema.

    A parte che TEXT e' un campo che puo' contenere 64kb e pone anche limiti agli indici... ti converrebbe usare varchar invece di text.

    Sarebbe sempre una scelta errata. I numeri sia in php che in mysql utilizzano il punto come separatore dei decimali, e tali dovrebbero essere trattati. Il campo va bene sia FLOAT che DECIMAL (forse, ma non son certissimo, FLOAT tratta singola precisione che per due decimali e' anche meglio).

    Per la virgola puoi usare number_format() (in php) al solo momento della visualizzazione. Credo sia la soluzione migliore.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Funge ma ha una pecca che mi da problema.
    Visualizza e salva i numeri che hanno 2 decimali come 0.18 e 0.35, ma non quelli che hanno il secondo decimale uguale a 0 come 0.20 e 0.30!
    Hai qualche suggerimento?
    Nel caso potrei fare un ciclo switch del tipo
    switch ($a) {
    case "0.2":
    $a = '0.20';
    break;
    case 0.3:
    $a = '0.30';
    break;
    }
    ma preferirei di no !

  7. #7
    Originariamente inviato da Sechi Paolo
    Funge ma ha una pecca che mi da problema.
    Visualizza e salva i numeri che hanno 2 decimali come 0.18 e 0.35, ma non quelli che hanno il secondo decimale uguale a 0 come 0.20 e 0.30!
    Hai qualche suggerimento?
    Nel caso potrei fare un ciclo switch del tipo
    ma preferirei di no !
    dichiara il campo come float(8,2) tot. 8 di cui 2 dec. Mysql ti tiene anche il decimale con zero finale.

    Lo 0 lo toglie php.

    Usa number_format() prima di presentare il valore.
    codice:
    $a = '1234.1';
    echo number_format($a, 2, ',', '.');
    
    => 1.234,10

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Ciao, grazie per l'aiuto.
    Un'ultima cosa.
    Le cifre che inserisco sono solitamente due:
    0.20 0.25 0.35
    e
    15 14 13

    Cioè, numeri con due decimali o numeri con nessun decimale.
    Il float(8,2) va benissimo per i numeri decimali ma non per quelli non decimali (mi scrive 15,00 al posto di 15).
    C'è qualche altra soluzione?
    Io pensavo a usare la funzione "substr();", può andare bene o avete qualche altro suggerimento?

  9. #9
    utilizza is_float().

    if(is_float($val) ) number_format()
    else $val


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Ho ancora un problema.
    Purtroppo alcuni in alcuni campi ci sono cifre come "0.20x4" che il FLOAT non mi permette di inserire!
    C'è qualche soluzione?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.