Bonjour tout le monde,
Voilà tout est dans le titre, je me casse la tête depuis quelques temps sur comment trier un tableau quand on clic sur le titre de la colonne.
Le script que j'ai écris fais ceci :
j'ai une liste déroulante dans lequel se trouve des formations.
Je sélectionne une formation et j'appuis sur envoyer.
Le formation sélectionnée reste affiché dans la liste déroulante et le résultat affiche un beau tableau.
Dans ce tableau il y a un titre par colonne cliquable pour trier le tableau.
Jusque là tou va bien.
C'est après que ça ce gâte...
Lorsque je clique sur le titre pour trier le tableau, je perds le tableau et par la meme occasion la selection dans ma liste déroulante.
Donc pas de tableau trié au final.
C'est comme ci je revenais au début du script avec une liste déroulante avec une valeur de sélection par défaut et le bouton "envoyer"
Voici le script
<?php
$connexion = mysql_connect('localhost','root','')
or die("Impossible de se connecter : " . mysql_error());
mysql_select_db("bacinfo");
$query ="SELECT idSection, nomSection, dureeSection from t_sections WHERE afficheSection = 1";
$result = mysql_query($query);
echo '<form action=test.php method="POST">
<select name="champ" id="champ">
<option value=0 selected="selected">- Sélectionnez -</option>';
while($row = mysql_fetch_array($result))
{
?>
<option value="<?php echo $row['idSection']; ?>" <?php if(isset($_POST['champ']) && $_POST['champ'] == $row['idSection']) echo 'selected="selected"'; ?>><?php echo $row['nomSection'].'('.$row['dureeSection'].')'; ?></option>
<?php
}
echo '</select>
<div id="boton">
<input type="submit" name="select" value="Envoyer" />
</div>
<form>';
if (isset($_POST['select']))
{
if ($_POST['champ'] == 0)
{
echo '<div id ="m11">';
echo '<p>Veuillez sélectionner une formation !</p>';
echo '</div>';
}
else
{
$order = (iSset($_GET['ordre']) ? $_GET['ordre'] : null);
$tri = (iSset($_GET['tri']) ? " ORDER BY " . $_GET['tri'].' '. $order : null);
$query = "SELECT udUnite, nomUnite, periodesUnite FROM t_unites WHERE sectionId = '".$_POST['champ']."'";
$query .= $tri;
$result = mysql_query($query);
$sum1 = 0;
$testrow =0;
if (mysql_num_rows($result)==0)
{
echo '<div id ="m11">
<p>Section non active !</p>
</div>';
}
else
{
echo '<table>
<tr>
<td>Unité
<!-- Ci dessous le code changé pour le premier href --!>
<a href="?id=6&tri=udUnite&order=asc$champs=3">+</a>
<!-- *********************** Cela me renvoie à index.php?id=6&tri=udUnite&order=asc$champs=3 **** --!>
<!-- *********************** Je perd la sélection dans la liste déroulante et le **************** --!>
<!-- *********************** tri ne s affiche pas. Que faire ? **************** --!>
<a href="?id=6&tri=udUnite&order=desc$champs=3">-</a>
</td>
<td>Nom unité
<a href="?id=6&tri=nomUnite&ordre=asc">+</a>
<a href="?id=6&tri=nomUnite&ordre=desc">-</a>
</td>
<td>Périodes
<a href="?id=6&tri=periodesUnite&ordre=asc">+</a>
<a href="?id=6&tri=periodesUnite&ordre=desc">-</a>
</td>
</tr>';
while($donnees=mysql_fetch_array($result))
{
echo '<tr><td>' . $donnees['udUnite'] . '</td>
<td>' . $donnees['nomUnite'] . '</td>
<td>' . $donnees['periodesUnite'] . '</td></tr>';
$sum1++;
$testrow++;
}
$sql = "SELECT SUM(periodesUnite) AS nb_total FROM t_unites WHERE sectionId = '".$_POST['champ']."'";
$req = mysql_query($sql);
$sum2 = mysql_fetch_array($req);
if ($testrow == 0)
{
$sum2 = 0;
echo '<tr><td>Total = '.$sum1.'</td><td>'.$row['nomUnite'].'</td><td>Total = '.$sum2.'</td></tr>';
echo '</table>';
}
else
{
echo '<tr><td>Total = '.$sum1.'</td><td>'.$row['nomUnite'].'</td><td>Total = '.$sum2['nb_total'].'</td></tr>';
echo '</table>';
}
}
}
}
?>