PHP/HTML tableau tri dynamique

Fermé
nico - 25 nov. 2004 à 10:01
neo_selen Messages postés 153 Date d'inscription dimanche 11 juillet 2010 Statut Membre Dernière intervention 29 juin 2016 - 30 mai 2012 à 15:54
Bonjour,

j'aimerais savoir comment faire pour trier un tableaux de facon dynamique en php. Genre, l'utilisateur clique sur une colonne et le tableaux se trie en fonction de la colonne choisie ...
Si vous pouviez m'envoyer des exemples de codes ou des liens ...
merci a tous, et bonne journée

PS: interdit d'utiliser du javascript ... :-)
A voir également:

9 réponses

maily Messages postés 7556 Date d'inscription lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
25 nov. 2004 à 18:17
moi, je mettrais ça!
$requete="SELECT Document.Titre, Document.Domaine, Document.Resume, Document.Date_creation FROM Projet.Document, Projet.Auteur, Projet.Ecrire WHERE Auteur.Login = '$login' and Ecrire.Statut='$statut' and Projet.Auteur.Auteur_id = Projet.Ecrire.Auteur_id and Projet.Ecrire.Doc_id = Projet.Document.Doc_id ORDER BY ".$tri." DESC;";


Et après dans ta fonction
## affichage de l'en-tete du tableau HTML avec les noms des champs
echo "<table border=2 CELLPADDING=\"5\" CELLSPACING=\"5\" WIDTH=\"70%\" align=left><tr>";
for($i=0; $i < $nbchamps; $i++) {
$tabchamps[$i] = mysql_field_name($resultat,$i);
echo "<th><a href="nomDeTaPage.php?tri=$tabchamps[$i]">$tabchamps[$i]</a></th>";
}
echo "</tr>";


Maily :-))))
Boumj'chtattrape
5
voila le code de la page principal avec un appel de fonction pour l'affichage du resultat de la requete:

# recupration de la liste des documents

$requete="SELECT Document.Titre, Document.Domaine, Document.Resume, Document.Date_creation FROM Projet.Document, Projet.Auteur, Projet.Ecrire WHERE Auteur.Login = '$login' and Ecrire.Statut='$statut' and Projet.Auteur.Auteur_id = Projet.Ecrire.Auteur_id and Projet.Ecrire.Doc_id = Projet.Document.Doc_id;";

$resultat = mysql_query($requete);

if (!$resultat ){
die('Invalid query: ' . mysql_error());
}

##Affichage des resultats
tab_res($resultat);

La fonction tab_res :
## quelle est la dimension du résultat ?
$nblignes=mysql_num_rows($resultat);
$nbchamps=mysql_num_fields($resultat);

## affichage de l'en-tete du tableau HTML avec les noms des champs
echo "<table border=2 CELLPADDING=\"5\" CELLSPACING=\"5\" WIDTH=\"70%\" align=left><tr>";
for($i=0; $i < $nbchamps; $i++) {
$tabchamps[$i] = mysql_field_name($resultat,$i);
echo "<th>$tabchamps[$i]</th>";
}
echo "</tr>";

## affichage des enregistrements du résultat
for($i=0; $i < $nblignes; $i++) {
$ligne = mysql_fetch_row($resultat);
echo "<tr>";
echo "<td><A HREF=\"modif.php?namedoc=$ligne[0]\" TARGET=\"Action\"> $ligne[0]</A></td>";
for($j=1; $j < $nbchamps; $j++) {
echo "<td>$ligne[$j]</td>";
}
echo "</tr>";
}
echo "</table>";
}

Voila ... en gros c'est ca ...
merci
1
maily Messages postés 7556 Date d'inscription lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
25 nov. 2004 à 10:26
Bonjour!!!

Alors, si tes données de ton tableau sont dans une base de données, ce sera très simple. Il suffit de rajouter à la fin de la requête "oder by nomDuChamps desc".

Sinon, et bien, je ne pense pas qu'on puisse...

voilà! ;-)

Maily :-))))
Boumj'chtattrape
0
neo_selen Messages postés 153 Date d'inscription dimanche 11 juillet 2010 Statut Membre Dernière intervention 29 juin 2016 15
30 mai 2012 à 15:54
order by
et pas: oder by
(faute de frappe je suppose)
0
oui c'est dans une base mais le truc c'est que ca doit etre dynamique et donc que ca puisse etre trié en temps réel quand l'utilisateur clic sur la colonne ...
merci de ta reponse
nico
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maily Messages postés 7556 Date d'inscription lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
25 nov. 2004 à 14:32
Le temps réel sur le net, c'est le rafraichissement de la page...
Donc, quand ils cliquent sur la colonne, tu dois réafficher la page et donc refaire ta requête! D'où l'intéret de trier par le champs sur lequel ils ont cliqués....

Mets moi ton code, je vais te montrer...

Maily :-))))
Boumj'chtattrape
0
Merci pour le coup de main ... ca marche !!!
bonne soirée :-)

Nico
0
Bonjour à vous.

Je me permet de placer le bout de code à mon tour, car j'ai le même problème et je ne trouve pas la solution, c'est le même style que nico:



$sql="SELECT CODE_CONVERGENCE_IET, NOM_COURT, NOM_LONG FROM applications";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

echo"<center>";
echo"<table border='2'bordercolor='black'>";
echo"<br>";echo"<br>";
echo"<b><center><h4><a href='/Site_application_ratp/client/recherche.php3'>Recherche</a></h4></b>";

echo"<tr><td colspan=6 align=center bgcolor='#E6E8FA'><b>Code Convergence</b></td>";
echo"<td colspan=6 align=center bgcolor='#E6E8FA'><b>Nom application</b></td>";
echo"<td colspan=6 align=center bgcolor='#E6E8FA'><b>Description</b></td>";

while ($val=mysql_fetch_array($req))
{
echo'<tr><td colspan=6 align=center bgcolor="#E0E0E0"><a href="consult_tables.php3?CODE_CONVERGENCE_IET='.$val['CODE_CONVERGENCE_IET'].'">'.$val['CODE_CONVERGENCE_IET'].'</a></td>';
echo"<td colspan=6 align=center bgcolor='#E0E0E0'>".$val['NOM_COURT']."</td>";
echo"<td colspan=6 align=center bgcolor='#E0E0E0'>".$val['NOM_LONG']."</td>";
echo"<tr>";
}


echo"</tr>";

echo"</table>";




Par ailleurs dans le code plus haut, la variable $tri, où doit elle être déclaré et de quelle manière? je n'ai pas vu.

Merci
0
à la place de $tri dans le code en haut tu mets $_GET['tri'] car le lien href utilise la methode get
0
Je voudrait moi aussi de l'aide , pour que mon tableau s'agrandissent automatiquement !

// Connexion et sélection de la base
$link = mysql_connect("sql.free.fr", "mon identifiant", "mon mot de passe")
or die("Impossible de se connecter");
echo "Voici la liste des membres du site";
mysql_select_db("membres") or die("Could not select database");
// Exécuter des requêtes SQL
$requete=mysql_query("SELECT pseudo,sexe,mail FROM membres");
while($resultat=mysql_fetch_row($requete))

{
$pseudo=$resultat[0];
$sexe=$resultat[1];
$mail=$resultat[2];
}
echo "<table style='text-align: left; width: 100%;' border='1' cellpadding='2' cellspacing='2'>\n";
echo "<tbody>\n";
echo "<tr>\n";
echo "<td style='text-align: center; vertical-align: top;'>Pseudo</td>\n";
echo "<td style='text-align: center; vertical-align: top;'>Adresse\n";
echo "E-Mail</td>\n";
echo "<td style='text-align: center; vertical-align: top;'>Sexe</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td style='text-align: left; vertical-align: top;'>$pseudo</td>\n";
echo "<td style='text-align: left; vertical-align: top;'>$mail</td>\n";
echo "<td style='text-align: left; vertical-align: top;'>$sexe</td>\n";
echo "</tr>\n";
echo "</tbody>\n";
echo "</table>\n";
0