Rechercher : dans
Par :

PHP/HTML tableau tri dynamique

Dernière réponse le 5 jui 2007 à 11:40:05 nico, le 25 nov 2004 à 10:01:47 
 Signaler ce message aux modérateurs

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 ... :-)

1

maily, le 25 nov 2004 à 10:26:56

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

Répondre à maily

2

nico, le 25 nov 2004 à 13:33:50

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

Répondre à nico

3

maily, le 25 nov 2004 à 14:32:02

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

Répondre à maily

4

nico, le 25 nov 2004 à 17:02:22

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

Répondre à nico

5

maily, le 25 nov 2004 à 18:17:31
  • +2

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

Répondre à maily

6

nico, le 25 nov 2004 à 20:07:17

Merci pour le coup de main ... ca marche !!!
bonne soirée :-)

Nico

Répondre à nico

7

Nicoo, le 14 fév 2005 à 11:05:56

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

Répondre à Nicoo

8

nono83, le 17 mar 2005 à 16:13:25

à la place de $tri dans le code en haut tu mets $_GET['tri'] car le lien href utilise la methode get

Répondre à nono83

9

 Tino, le 5 jui 2007 à 11:40:05

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";

Répondre à Tino
Collection CommentÇaMarche.net