Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Order by (SQL)
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • R
      raiken User Attivo • ultima modifica di

      Ho messo ASC invece che DESC (non mi ero accorto di questo errore) e per la prima posizione me li mette in ordine, nelle altre me li mette DESC..

      Ecco il codice, speriamo che sia di aiuto.

      
      <?php
      
      $query_partecipanti=mysql_query("select * from Concorso_Partecipante where ID_Concorso='$id_concorso' order by Risultato DESC, Tempo ASC");
      
      while($row_partecipanti=mysql_fetch_array($query_partecipanti)){
      
      $posizione=++$posizione;
      
      echo"<b>$posizione</b>: $row_partecipanti[Partecipante] con <b>$row_partecipanti[Risultato]</b> punti in <b>$row_partecipanti[Tempo]</b> secondi<br />";
      
      }
      
      ?>
      
      
      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • C
        cantoniere User • ultima modifica di

        Forse è un caso, ma i tempi sono ordinati in ordine ascii (come si fa con le stringhe).
        Nel database la colonna tempo è NUMBER o VARCHAR ?

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • R
          raiken User Attivo • ultima modifica di

          varchar(15)

          perchè cambia qualcosa nell'ordine in base al tipo di campo?

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • C
            cantoniere User • ultima modifica di

            Sì.
            Le stringhe vengono ordinate in ordine ascii (che coincide con l'alfabetico, i numeri vengono prima delle minuscole e poi delle maiuscole, mi pare), i numeri e le date vengono ordinati secondo l'ordine "intuitivo".
            Comunque per risolvere il tuo problema dovresti convertire tempo in decimale.
            Mi pare che si faccia: invece di select tempo, campo2...
            select cast (tempo, decimal), campo 2

            (non puoi usare l'asterisco ma elencare i campi)

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • R
              raiken User Attivo • ultima modifica di

              Ho letto qua sull'uso di cast:

              http://database.html.it/guide/lezione/2453/operatori-e-funzioni-i/

              non capisco come poter mettere all'interno di uno stesso SELECT sia il CAST che il resto degli operatori che mi servono.

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • C
                cantoniere User • ultima modifica di

                Prova a sostituire la riga che hai tu con questa:
                $query_partecipanti=mysql_query("select * from Concorso_Partecipante where ID_Concorso='$id_concorso' order by Risultato DESC, CAST (Tempo as numeric) ASC");

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • R
                  raiken User Attivo • ultima modifica di

                  nulla mi da un warning

                  Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /web/htdocs/www.skaweb.it/home/concorso_classifica.php on line 40

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • I
                    ienavr User Attivo • ultima modifica di

                    e con questo codice ti funziona?

                    $query_partecipanti=mysql_query("select * from Concorso_Partecipante where ID_Concorso='$id_concorso' order by Risultato DESC, CAST (Tempo as SIGNED) ASC");

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • R
                      raiken User Attivo • ultima modifica di

                      sempre lo stesso errore 🙂

                      pazienza lascerò così.

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • I
                        ienavr User Attivo • ultima modifica di

                        hai provato anche a togliere lo spazio tra CAST e (Tempo?

                        scrivendo cioè

                        $query_partecipanti=mysql_query("select * from Concorso_Partecipante where ID_Concorso='$id_concorso' order by Risultato DESC, CAST(Tempo as SIGNED) ASC");

                        scusa ma sì va per tentativi e credo che la sintassi di prima fosse scorretta

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • R
                          raiken User Attivo • ultima modifica di

                          stavolta funziona 🙂

                          grazie mille!

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • I
                            ienavr User Attivo • ultima modifica di

                            prego...

                            alla fine ce l'abbiamo fatta!

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            Caricamento altri post
                            Rispondi
                            • Topic risposta
                            Effettua l'accesso per rispondere
                            • Da Vecchi a Nuovi
                            • Da Nuovi a Vecchi
                            • Più Voti