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.
    • I
      ienavr User Attivo • ultima modifica di

      a parità di punti il tempo non dovrebbe essere ASC? così sta sopra chi ci ha messo meno...o sbaglio?

      ad ogni modo sarebbe ottimo se postassi direttamente il codice PHP cui fai fare la query e poi il ciclo. Perchè ti assicuro che ho provato in locale ed andava..

      oppure attendiamo pareri + illuminanti 🙂

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • 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
        • 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