Ciao Stefano.
Ho provato lo script che mi hai dato. C'era qualche piccolo errore dovuto sicuramente al fatto che non avevi ricreato le condizioni affinchè potessi parsarlo.
Comunque mi sei stato di grande aiuto. Mi stavo complicando la vita con le sessioni quando invece con queste due righe hai risolto il mio problema.
if($_GET[order]=="asc"){$order2 = "desc"}
if($_GET[order]=="desc"){$order2 = "asc"}
La soluzione migliore è spesso la più banale. Capoccione io a non averci pensato.
Ora posto il codice funzionante, nel caso possa essere d'aiuto a qualcun altro.
Codice PHP:
<?php
$conn = mysql_connect($server,$user,$pass) or die($errConnessione);
mysql_select_db($database) or die ($errSelezione);
$query = "select idcontatto,cognome,nome,comune,email from contatti where comune = \"Olbia\" ";
$rs = mysql_query($query) or die(mysql_error());
$num = mysql_num_rows($rs);
if ($num == 0)
echo "<div style=\"text-align:center\">Nessun contatto presente nel comune</div>";
else
{
if(empty($_GET['ordercampo']))
$_GET['ordercampo'] = "idcontatto";
if(empty($_GET['order']))
$_GET['order'] = "asc";
if($_GET['order']=="asc") {$ordinaVerso = "desc";}
if($_GET['order']=="desc") {$ordinaVerso = "asc";}
$query = "select idcontatto,cognome,nome,comune,email from contatti where comune = \"Olbia\" order by $_GET[ordercampo] $ordinaVerso ";
$rs = mysql_query($query) or die(mysql_error());
?>
<table border="1">
<tr>
<td align="center">[b][url="cartina3.php?ordercampo=<?php echo 'cognome' ?>&order=<?php echo $ordinaVerso ?>"]Cognome[/url][/b]</td>
<td align="center">[b][url="cartina3.php?ordercampo=<?php echo 'nome' ?>&order=<?php echo $ordinaVerso ?>"]Nome[/url][/b]</td>
<td align="center">[b][url="cartina3.php?ordercampo=<?php echo 'email' ?>&order=<?php echo $ordinaVerso ?>"]E-mail[/url][/b]</td>
</tr>
<?php
while($results = mysql_fetch_array($rs))
{
echo "<tr>";
$idcontatto = $results['idcontatto'];
echo "<td width=\"25%\">$results[cognome]</td>";
echo "<td width=\"25%\">$results[nome]</td>";
echo "<td width=\"25%\">$results[email]</td>";
echo "</tr>";
} //fine ciclo while
} //fine else nel caso ci sia almeno un contatto nel comune
?>
Vorrei chiedere a te e anche agli altri un'ultima spiegazione:
Situazione iniziale. Non è stata inviata la querystring. Di conseguenza io imposto i miei parametri per l'esecuzione della query nel seguente modo: campo in base al quale effettuare l'ordinamento idcontatto. Tipo ordinamento asc.
Una volta eseguiti questi due if viene eseguito un ulteriore if per verificare se l'ordinamento è crescente o descescente e assegnare quindi quello inverso.
Dunque i miei parametri di ordinamento della query portano a visualizzarmi una tabella in base sì a quel campo ma l'ordinamento avviene in maniera decrescente.
Scusate se mi sono dilungato. Arrivo al punto: sarebbe possibile ordinare inizialmente la tabella in base all'identificativo del record in ordine crescente però facendo in modo che cliccando ad esempio sulla colonna nome il primo ordinamento sia in ordine alfabetico crescente e non decrescente?
Spero di essermi spiegato.