Visualizzazione dei risultati da 1 a 5 su 5

Discussione: ordinamento alfabetico

  1. #1

    ordinamento alfabetico

    Salve a tutti,

    ho fatto una semplice query che preleva tutti i dati da una tabella e li visualizza venti per pagina, il problema è che non li mette in ordine alfabetico per azienda

    posto il codice

    Codice PHP:
    <? include("connetti.php"); ?>
                      <?php

    #___prima query x prendere tutti i risultati - $query = "SELECT * FROM tabella";
    $interrogazione "SELECT * FROM aziende ORDER BY Azienda";
    $query_r mysql_query($interrogazione); 
    $num_record mysql_num_rows($query_r); 

    #___assegno i valori se non ci sono 
    (empty($_GET['offset'])) ? $offset $offset $_GET['offset']; 
    (empty(
    $_GET['limit'])) ? $limit 20 $limit $_GET['limit']; 

    #___seconda query per prendere parte dei risultati 
    $query2 "SELECT * FROM aziende LIMIT $offset,$limit"
    $query_r2 mysql_query($query2); 


    #___ora inserisco in una riga la navigazione 
        
    $risultato mysql_query($query2);
        while (
    $riga mysql_fetch_array($risultato)) {
        
    $html_risultato .= '<tr>';
        
    $html_risultato .= '<td width="200" class="griglia"> '.$riga["Azienda"].'</td>';
        
    $html_risultato .= '<td class="griglia"> '.$riga["linea"].'</td>';
        
    $html_risultato .= '<td class="griglia"> '.$riga["tipo"].'</td>';    
        
    $html_risultato .= '<td class="griglia"> '.$riga["Citta"].'</td>';
        
    $html_risultato .= '<td class="griglia"> '.$riga["Provincia"].'</td>';
        
    $html_risultato .= '<td class="griglia"> '.$riga["Via"].'</td>';
        
    $html_risultato .= '<td class="griglia"> '.$riga["Tel"].'</td>';
        
    $html_risultato .= '<td class="griglia"> '.$riga["email"].'</td>';
        
    $html_risultato .= '</tr>';
    }
    $numero intval($offset/$limit)+1
    $for intval($num_record/$limit); 
    if(
    $for < ($num_record/$limit)) 

        
    $for = ($for+1); 


    if(
    $numero 1

        echo
    '[url="listaAziende.php?offset='.($offset-$limit).'"][b]«[/b][/url] '

    else 

        echo
    '« '

    for( 
    $count 1$count <= $for$count++ ) 

        
    $newoffset $limit*($count-1);     
        if(
    $newoffset == $offset
        { 
            echo
    '<a>'.$count.'</a> '
        } 
        else 
        { 
            echo
    '[url="listaAziende.php?offset='.$newoffset.'"][b]'.$count.'[/b][/url] '
        } 

    if(
    $numero $for

        echo
    ' [url="listaAziende.php?offset='.($offset+$limit).'"][b]»[/b][/url]'

    else 

        echo
    ' »'

    echo
    '</td></tr>'
    mysql_close($connessione);

    // HTML ?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    17
    hai provato ad aggiungere "ASC" per ascendente

    SELECT * FROM aziende ORDER BY Azienda ASC

  3. #3
    Un saluto a tutti, sono un neoiscritto.

    Comunque senza la clausola Order by non si va da nessuna parte...se ti può interessare, studiatela approfonditamente, scoprirai che è possibile ordinare i dati in molti modi diversi, che di certo in futuro potrebbero tornarti utili. Ciauuu!!

  4. #4
    Direi che oltre al problema dell'ordinamento, c'è anche un errore abbastanza bruttino nel codice

    L'ordinamento, ovviamente, lo devi fare nella seconda query, quella che utilizzi per visualizzare i dati non quella che utilizzi per conteggiare quante aziende ci sono!

    La query diventa quindi da
    SELECT * FROM aziende LIMIT $offset,$limit
    a
    SELECT * FROM aziende ORDER BY Azienda LIMIT $offset,$limit

    Per quanto riguarda l'errore nel codice ... ora come ora tu vai ad effettuare il conteggio utilizzando mysql_num_rows che non fa altro che ciclare tutti i contenuti estratti per contarli con il risultato che a livello di performance uccidi tutto

    Cambia il codice da
    Codice PHP:
    $interrogazione "SELECT * FROM aziende ORDER BY Azienda";
    $query_r mysql_query($interrogazione);
    $num_record mysql_num_rows($query_r); 
    a

    Codice PHP:
    $interrogazione "SELECT COUNT(*) FROM aziende";
    $query_r mysql_query($interrogazione);
    list(
    $num_record) = mysql_fetch_row($query_r); 
    mysql_free_result($query_r); 
    In questo modo utilizzi la funzione COUNT dell'sql per effettuare un conteggio dei record che vai ad estrarre, operazione che effettua mysql istantaneamente utilizzando gli indici e le informazioni sulla tabella!
    Dopo di che usando mysql_fetch_row viene restituito un array con indice numerico contenente un solo valore che andiamo ad inserire direttamente dentro $num_record usando il comando list!
    Dopo di che, per liberare memoria, una volta fatto quello che si deve fare con la query, conviene lanciare il mysql_free_result

    Qui trovi maggiori informazioni sui comandi che ho usato per quanto riguarda php
    www.php.net/list
    www.php.net/mysql_fetch_row
    www.php.net/mysql_free_result

    Mentre per quanto riguarda l'sql
    http://dev.mysql.com/doc/refman/5.0/en/select.html
    http://dev.mysql.com/doc/refman/5.0/...imization.html
    http://www.mysqlperformanceblog.com/...-optimization/
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  5. #5
    ok grazie mille a tutti

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.