Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    7

    Ordinamento tabella per colonna

    Ciao a tutti.

    Sto sviluppando un rubrica in PHP e MySQL in cui è possibile effettuare delle ricerche in base al nome e all'ufficio.
    Il mio problema riguarda l'ordinamento. Per effettuarlo utilizzo dei link con impostato come URL "?order=az" oppure "za". In questo modo al mio indirizzo viene aggiunta questa parte di URL che poi controllo tramite if ed eseguo una ORDER BY ASC o DESC.
    $order=$_GET['order'];

    if($order=='az')
    $query="SELECT * FROM phno ORDER BY cognome asc";
    elseif($order=='za')
    $query="SELECT * FROM phno ORDER BY cognome desc";
    Il problema sorge quando eseguo delle ricerche. Una volta impostati i parametri di ricerca e premuto il tasto Ricerca il mio URL è questo:
    http://localhost/index.php?search_na...search=Ricerca
    Nell'intestazione della tabella ho creato le classiche freccie per scegliere come ordinare la rispettiva colonna. Ma come faccio ad aggiungere all'URL che ho un parametro tipo "?order=az".

    Spero di essermi spiegato...non sono per niente bravo in queste cose

  2. #2
    Perchè devi metterlo nell'URL??
    Non puoi fare un post?

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    7
    giusto per capirci...
    il mio codice è questo e sono consapevole che sia un casino sovrumano...ma abbiate pietà sono alle primissime armi!!!

    Codice PHP:
    <?php
            
        $order
    =$_GET['order'];
        
    //creazione query in base all'ordinamento alfabetico scelto    
        
    if($order=='az')
            
    $query="SELECT * FROM phno ORDER BY cognome asc";
        elseif(
    $order=='za')
            
    $query="SELECT * FROM phno ORDER BY cognome desc";
        elseif(
    $order=='az_soc')
            
    $query="SELECT * FROM phno  ORDER BY societa asc";
        elseif(
    $order=='za_soc')
            
    $query="SELECT * FROM phno  ORDER BY societa desc";
        elseif(
    $order=='az_uff')
            
    $query="SELECT * FROM phno  ORDER BY ufficio asc";
        elseif(
    $order=='za_uff')
            
    $query="SELECT * FROM phno  ORDER BY ufficio desc";

    //se vengono utilizzati i parametri di ricerca e premuto il tasto Ricerca 
    //imposta la query con le condizioni di ricerca
        
    elseif(isset($_GET['ricerca']))
            {
                
    $search_name=$_GET['search_name'];
                
    $search_ufficio=$_GET['search_ufficio'];
                
    $search_societa=$_GET['search_societa'];
                 
                
    $query="SELECT phno.id, cognome, nome, email, telefono, societa, direzione, ufficio, telefono_esterno FROM phno INNER JOIN societa on phno.societa_id=societa.id INNER JOIN direzione on phno.direzione_id=direzione.id INNER JOIN ufficio on phno.ufficio_id=ufficio.id WHERE (cognome like  \"%$search_name%\" or nome like \"%$search_name%\") and ufficio like \"%$search_ufficio\" and societa like \"%$search_societa\" ORDER BY cognome";
      
            } else 
            
    //altrimenti restituisce tutti i valori
                
    $query="SELECT phno.id, cognome, nome, email, telefono, societa, direzione, ufficio, telefono_esterno FROM phno INNER JOIN societa on phno.societa_id=societa.id INNER JOIN direzione on phno.direzione_id=direzione.id INNER JOIN ufficio on phno.ufficio_id=ufficio.id ORDER BY cognome asc";
    Poi la parte di creazione tabella:
    Codice PHP:
        if(!$db->select_db('oneone'))
        {
            echo 
    "

    [i]NONE[/i]</p>"
    ;
            exit;
        }
    //esegue la query 
        
    $result=$db->query($query);
        
    //calcolo numero di righe
        
    $num_rows=$result->num_rows;
        
    //se il numero di righe è 0
        
    if($num_rows<=0)
            {
            echo 
    "<h4>[i]Nessun risultato![/i]</h4>";
            } else {
        
    //processa le righe una ad una
        //intestazione della tabella (ripetuta una sola volta)
             
    echo $link;
            echo 
    "<TABLE width=100%>";
            echo 
    "    <TR>";
            echo 
    "        <TH class=\"intestazione\"></TH>";
            echo 
    "        <TH valign=\"bottom\" class=\"intestazione\">COGNOME NOME&nbsp&nbsp&nbsp<a href=\"?order=az\"><img src=\"img/ord_cresc.jpg\" border=\"0\" align=\"texttop\" alt=\"Ordine crescente\"/></a><a href=\"?order=za\"><img src=\"img/ord_dec.jpg\" border=\"0\" align=\"texttop\" alt=\"Ordine decrescente\"/></a></TH>";
            echo 
    "        <TH class=\"intestazione\">MAIL</TH>";
            echo 
    "        <TH class=\"intestazione\" align='center'>NUMERO</TH>";
            echo 
    "        <TH class=\"intestazione\">SOCIETA&nbsp&nbsp&nbsp<a href=\"?order=az_soc\"><img src=\"img/ord_cresc.jpg\" border=\"0\" align=\"texttop\" alt=\"Ordine crescente\"/></a><a href=\"?order=za_soc\"><img src=\"img/ord_dec.jpg\" border=\"0\" align=\"texttop\" alt=\"Ordine decrescente\"/></a></TH>";
            echo 
    "        <TH class=\"intestazione\">UFFICIO&nbsp&nbsp&nbsp<a href=\"?order=az_uff\"><img src=\"img/ord_cresc.jpg\" border=\"0\" align=\"texttop\" alt=\"Ordine crescente\"/></a><a href=\"?order=za_uff\"><img src=\"img/ord_dec.jpg\" border=\"0\" align=\"texttop\" alt=\"Ordine decrescente\"/></a></TH>";
            echo 
    "    </TR>";
        for(
    $i=0;$i<$num_rows;$i++)
        {
            
    //fetch oneone row
            
    $row=$result->fetch_row();
            
    $n=$i+1;
            
    //condizioni per la creazione della tabella con righe alternate
            
    if ($riga == "riga1")
                {
                
    $riga "riga2";
                } else { 
                
    $riga "riga1";
                }

            echo 
    "<TR class=\"$riga\">";
        
    //Il nome è un link alla pagina dettaglio.php
        //viene passato nel link il nome come parametro così da poterlo
        // utilizzare nella nuova pagina con la variabile $_GET
            
    echo "<TD class=\"cella indice\"> $n </TD>";
            echo 
    "<TD class=\"cella\" WIDTH='250'>[url='dettaglio.php?id=$row[0]']$row[1] $row[2][/url]</TD>";//Cognome Nome
            
    echo "<TD class=\"cella\" WIDTH='250'><a href=\"mailto:$row[3]\">$row[3]</a></TD>";//Email
            
    echo "<TD class=\"cella\" ALIGN=\"right\">$row[8] [b]$row[4]</strong</TD>";//Numero telefono
            
    echo "<TD class=\"cella\" WIDTH='200'>$row[5]</TD>";//Societa
            
    echo "<TD class=\"cella\" WIDTH='280'>$row[7]</TD>";//Ufficio
            
    echo "</TR>";
        }
        
        echo 
    "</TABLE>";
        }
        
    ?> 
    Come posso fare per ordinare in base alla colonna e mantenendo i parametri di ricerca?
    Oppure come dovrei fare con il POST?

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.