Page 1 sur 1

trier un tableau par les colonnes

Posté : 11 oct. 2009, 17:04
par volker974
Bonjour à tous,

Je suis débutant en php. Je réalise un site pour une association. J'ai récupéré et modifié le code (qui suit) qui me permet de sélectionner à partir de 2 listes déroulantes des activités. Après la sélection, les données s'affichent dans un tableau lignes/colonnes. Jusque là tout est ok. Le problème c'est que je n'arrive pas à faire des tris sur les colonnes par ordre croissant/décroissant en fonction de la colonne sélectionnée. J'ai essayé de modifier le code pour afficher les données dans un tableau html mais là après la sélection de ma 2ème liste déroulante, les données ne s'affichent pas...
Quelqu'un peut-il m'orienter pour solutionner mon problème ?
Merci

***************************************
<?php
include 'lang/detect-lang.php';
include 'Connexionbd.php';

$Ld2_retour =''; //id_region clé de la liste déroulante 2

if (isset($_GET['Ld2'])) {$Ld2_retour = $_GET['Ld2'];}
if (($Ld2_retour!='')) {
$rq="Select id_lieu, nom_lieu, nom_club, nom_activité, date_debut, date_fin from lieux where id_region=".$Ld2_retour." order by nom_region;";
$rq_pos_id=0; // position dans le select
$rq_pos_val=1;
$rq_pos_val2=2;
$rq_pos_val3=3;
$rq_pos_val4=4;
$rq_pos_val5=5;
$result= mysql_query ($rq) or die ("Select impossible");

if (mysql_num_rows($result) != 0) {

// debut du tableau
echo '<table bgcolor="#FFFFFF">'."\n";
// première ligne on affiche les titres dans x colonnes
echo '<tr>';
echo '<td bgcolor="#669999"><b><u>Lieux</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Club</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Activité</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Date de début</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Date de fin</u></b></td>' ;
echo '</tr>'."\n";
// lecture et affichage des résultats sur x colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result)) {
echo '<tr>';

echo '<td bgcolor="#CCCCCC">'.$row[$rq_pos_val].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row[$rq_pos_val2].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row[$rq_pos_val3].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row[$rq_pos_val4].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row[$rq_pos_val5].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";

// fin du tableau.
}

mysql_free_result($result);
mysql_close($connexion);

}else{
$retour = '<select name="Liste3" id="Liste3" size="1" disabled><option>Aucune valeur</option></select>';
}
echo $retour
?>

Re: trier un tableau par les colonnes

Posté : 11 oct. 2009, 19:26
par Kran
Quelque chose dans c'gout la ça t'plairait ?
En cliquant sur les entêtes de colonnes tu tries sur la colonne en question...
<?php
include 'lang/detect-lang.php';
include 'Connexionbd.php';

if(isset($_GET['param_tri'])) $param_tri='nom_region';

if (isset($_GET['Ld2'])) {$Ld2_retour = $_GET['Ld2'];}
if (($Ld2_retour!='')) {
	$rq="select id_lieu, nom_lieu, nom_club, nom_activité, date_debut, date_fin 
		from lieux where id_region=".$Ld2_retour." order by ".$param_tri;
	$result= mysql_query ($rq) or die ("Select impossible");

	if (mysql_num_rows($result) != 0) {
		// debut du tableau
		echo '<table bgcolor="#FFFFFF">';
		// première ligne on affiche les titres dans x colonnes
		echo '<tr>
				<td bgcolor="#669999"><b><u><a href="ta_page.php?Ld2='.$_Ld2_retour.'&param_tri=nom_lieu">Lieux</a></u></b></td>
				<td bgcolor="#669999"><b><u><a href="ta_page.php?Ld2='.$_Ld2_retour.'&param_tri=nom_club">Club</a></u></b></td>
				<td bgcolor="#669999"><b><u><a href="ta_page.php?Ld2='.$_Ld2_retour.'&param_tri=nom_activité">Activité</a></u></b></td>
				<td bgcolor="#669999"><b><u><a href="ta_page.php?Ld2='.$_Ld2_retour.'&param_tri=date_debut">Date de début</a></u></b></td>
				<td bgcolor="#669999"><b><u><a href="ta_page.php?Ld2='.$_Ld2_retour.'&param_tri=date_fin">Date de fin</a></u></b></td>
			</tr>';
		// lecture et affichage des résultats sur x colonnes, 1 résultat par ligne. 
		while($row = mysql_fetch_array($result)) {
			echo '<tr>
				<td bgcolor="#CCCCCC">'.$row['nom_lieu'].'</td>
				<td bgcolor="#CCCCCC">'.$row['nom_club'].'</td>
				<td bgcolor="#CCCCCC">'.$row['nom_activité'].'</td>
				<td bgcolor="#CCCCCC">'.$row['date_debut'].'</td>
				<td bgcolor="#CCCCCC">'.$row['date_fin'].'</td>
			</tr>';
		}
		echo '</table>';
		// fin du tableau.
	}
	mysql_free_result($result);
	mysql_close($connexion);
}
else{
	echo 'Aucune info pour cette region.';
}
?>

Re: trier un tableau par les colonnes

Posté : 11 oct. 2009, 19:29
par Kran
Oups... petit gourage :
// faut remplacer cette linge :
if(isset($_GET['param_tri'])) $param_tri='nom_region';

// par :
if(isset($_GET['param_tri'])) $param_tri=$_GET['param_tri'];
else $param_tri='nom_region';

Re: trier un tableau par les colonnes

Posté : 11 oct. 2009, 22:14
par volker974
Merci Kran pour la rapidité à laquelle tu m'as répondu et la qualité du code.
Le tableau est bien alimenté par les données mais quand je clique sur le nom de la colonne j'ai une ré-initialisation de ma page php avec dans l'url du navigateur : << ma_page.php?Ld2=&param_tri=date_debut >> et les données disparaisent. En fonction de la colonne que j'ai sélectionné le "tri=xxx_xxx prend le nom de la colonne.
Il semblerait que les valeurs provenant de la bdd ne soient pas conservées dans ma page php :

********************************************************************
<div id="Les3LD">

			<p>Rechercher une compétition</p>
				<form method="get" action="ListeCompet.php">
					 <select name="Liste1" id="Liste1" size="1" onchange="ValideLd2(this[this.selectedIndex].value);"><option selected value="">Choisir...</option><option value="3">Region_3</option><option value="2">Region_2</option><option value="1">Region_1</option></select>
&nbsp; <!--Pour remplir la liste déroulante 1-->
					<span id="niv2">
					
 <select name="Liste2" id="Liste2" size="1" disabled><option>Aucune valeur</option></select>

</span>&nbsp; <!--Pour remplir la liste déroulante 2-->
					<span id="niv3">
					
 Aucune info pour cette region.</span>&nbsp; <!--Pour remplir la liste déroulante 3-->
				</form>
************************************************************************
Une pettie idée de ce que je dois faire ?
Merci
A+

Re: trier un tableau par les colonnes

Posté : 11 oct. 2009, 23:24
par Kran
Oula... me lance pas trop d'fleurs sur la qualité du code c'est juste un dépannage express de fin d'weekend un peu glauque ^^

Tu devrais essayer de remplacer "ma_page.php" par l'url de ta page php... pour voir :)

Re: trier un tableau par les colonnes

Posté : 12 oct. 2009, 21:44
par Invité
Bonsoir,

Qu'en même bravo pour un dimanche soir.
J'avais bien remplacé ma_page.php par le nom de la page php :mrgreen:

Re: trier un tableau par les colonnes

Posté : 18 oct. 2009, 01:01
par Kran
Oula... j'espère que tu t'en est sorti tout seul depuis l'temps mais ouais y'avait bien une merdouille...

Dans la partie ou on écrit les liens ici :
echo '<tr>
                                <td bgcolor="#669999"><b><u><a href="ta_page.php?Ld2='.$_Ld2_retour.'&param_tri=nom_lieu">Lieux</a></u></b></td>
                                <td bgcolor="#669999"><b><u><a href="ta_page.php?Ld2='.$_Ld2_retour.'&param_tri=nom_club">Club</a></u></b></td>
                                <td bgcolor="#669999"><b><u><a href="ta_page.php?Ld2='.$_Ld2_retour.'&param_tri=nom_activité">Activité</a></u></b></td>
                                <td bgcolor="#669999"><b><u><a href="ta_page.php?Ld2='.$_Ld2_retour.'&param_tri=date_debut">Date de début</a></u></b></td>
                                <td bgcolor="#669999"><b><u><a href="ta_page.php?Ld2='.$_Ld2_retour.'&param_tri=date_fin">Date de fin</a></u></b></td>
                        </tr>';
Faut remplacer les $_Ld2_retour par $Ld2_retour ! Of course...

Désolé !

Re: trier un tableau par les colonnes

Posté : 18 oct. 2009, 01:23
par fab
Kran maintenant que tu es inscrit pense a te connecter :p

Re: trier un tableau par les colonnes

Posté : 18 oct. 2009, 16:44
par Invité
=D> Merci Kran. Ton code marche impec. J'ai galèré pendant quelques heures sans succès mais cela permet d'apprendre et de se creuser un peu les méninges.
Encore merci à la communauté.

Re: trier un tableau par les colonnes

Posté : 18 oct. 2009, 16:52
par Invité
Comment puis-je mettre le sujet en résolu ?
Merci

Re: trier un tableau par les colonnes

Posté : 18 oct. 2009, 17:10
par fab
il faut éditer le message original mais en te connectant