classer avec ORDER BY dans une base de données comment faire ....

classer avec ORDER BY dans une base de données comment faire .... - SQL/NoSQL - Programmation

Marsh Posté le 26-04-2002 à 11:55:05    

Voial bon tout d'abords , je precise que je ne suis pas expert en html php et sql !! mais pour l'instant j'ai reussi a afficher ma table sous forme de tableau. Seulement la je force l'ordre avec order by a l'ouverture de la page, mais maintenant je voudrait que lorsque la personne visitera cette page elle puisse cliquer sur le nom en haut de la colonne et comme ca , ca classera toute les valeur de la table par ordre alpha de cette colonne !!  
Alors je sais pas trop comment m'y prendre est ce qu quelqu'un pourrait m'eclairer !!!  
merci d'avance !

Reply

Marsh Posté le 26-04-2002 à 11:55:05   

Reply

Marsh Posté le 26-04-2002 à 12:30:05    

Je connais pas le PHP...
mais tu pourrais pas faire un truc du genre : appui sur tel bouton (ou colonne ou ce que tu veux) balance une requete du genre :
 
SELECT ...
ORDER BY nom_du_bouton
...
 
non ?
 
par contre je sais pas si c'est tres malin de faire ça... executer une requete a chaque fois c'est pas le top.
 
Tu voudrais juste que le tableau Html soit trié ? C'est ça ?
 
hihi :D

 

[jfdsdjhfuetppo]--Message édité par impulse le 26-04-2002 à 12:31:10--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 26-04-2002 à 12:36:25    

Tu peux me donner le code en PHP pour faire ce que tu fais ?
Il doit y avoir une fonction order() en PHP qui devrait te permettre de faire ça tres facilement en fait... En fait je pense que ce serait un truc du genre : tu recharges la page en faisant une nouvelle table html avec des données dans un ordre different...
 
hihi :p

Reply

Marsh Posté le 26-04-2002 à 14:15:49    

en fait le plus simple serait , deja j'affiche ma table comme ca par exemple :
NOM            Date        Commentaires
Paul           2002-04-28     aucun
Pierre         2002-04-21     aucun
 
Et donc qd j'affcihe ca je fais simplement une boucle avec :
$requete=mysql_query("SELECT * FROM ma_base" );
 while ($ligne = mysql_fetch_object($requete)) {
 print "
 
Et ce que je voudrais c'est que qd je clics sur nom, ben ca m'actualise la page mais avec les données Nom classée par ordre alphabetique.

Reply

Marsh Posté le 26-04-2002 à 14:19:10    

<?
 
if (!isset($tri)) $tri = "id";
 
$Query = "SELECT patati... ORDER BY $tri";
 
?>
 
pour trier, tu fais un lien <a href="<? echo $PHP_SELF ?>?tri=cequetuveux">


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 26-04-2002 à 14:35:24    

ok thx, je vais essayer avec ca !

Reply

Marsh Posté le 26-04-2002 à 15:12:41    

voici le code !!
j'ai editer ce message en me trompant donc j'ai resumer le texte que j'avais ecrit comme ca !!
 
<a href="<? echo $PHP_SELF ?>?tri=Date">trier par date</a>
<a href="<? echo $PHP_SELF ?>?tri=Nom">trier par nom</a>
   
<table border="1">
  <tr bgcolor="#DDDDDD">
   <td><b><a href="Nom du Client"</b></td>
   <td><b>Date</b></td>
   <td><b>Commentaires</b></td>
  </tr>
<?php
 
 
if (!isset($tri)) $tri = "id";
 
$Query = "SELECT * from  ma_DB ORDER BY $tri";
 
 
 
 
 mysql_connect("localhost","root","" );
 mysql_selectdb("MA_DB" ) or die("Connexion ratée" );
 $requete=mysql_query("SELECT * from ma_table" );
 while ($ligne = mysql_fetch_object($requete)) {
 print "
<tr>
<td>$ligne->Nom</td>
<td>$ligne->Date</td>
<td>$ligne->Commentaires</td>
</tr>";  
 }
?>

 

[jfdsdjhfuetppo]--Message édité par van_axl le 29-04-2002 à 12:24:07--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 26-04-2002 à 17:16:02    

if(!isset($tri)) $tri="id";
 
ça veut dire : si la variable tri n'est pas initialisée, lui affecter la valeur "id"
 
donc tu mets ton tri par défaut à la place histoire que quand on charge la page pour la première fois le tri soit fait.
 
ensuite le lien change la valeur de $tri donc change le ORDER BY de ta requête.


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 29-04-2002 à 12:23:07    

bon je reviens a la charge !! ce we j'ai pas eu le temps de bosser dessus.
Alors donc le code ne marche pas !!!
Dois je mettre par exemple Date a la place de "id" dans mon if .
sinon qd je clique sur mon lien trier par ou par date ca fait pas grand chose !!
un peu d'aide please
 
<a href="<? echo $PHP_SELF ?>?tri=Date">trier par date</a>
<a href="<? echo $PHP_SELF ?>?tri=Nom">trier par nom</a>
   
<table border="1">
  <tr bgcolor="#DDDDDD">
   <td><b><a href="Nom du Client"</b></td>
   <td><b>Date</b></td>
   <td><b>Commentaires</b></td>
  </tr>
<?php
 
 
if (!isset($tri)) $tri = "id";
 
$Query = "SELECT * from  ma_DB ORDER BY $tri";
 
 
 
 
 mysql_connect("localhost","root","" );
 mysql_selectdb("MA_DB" ) or die("Connexion ratée" );
 $requete=mysql_query("SELECT * from ma_table" );
 while ($ligne = mysql_fetch_object($requete)) {
 print "
<tr>
<td>$ligne->Nom</td>
<td>$ligne->Date</td>
<td>$ligne->Commentaires</td>
</tr>";  
 }
?>

Reply

Marsh Posté le 29-04-2002 à 14:41:12    

si y a pas de tri dans ta requête, je vois mal comment le fait de changer la valeur de $tri va modifier quoi que se soit..
 
 
le code que je t'ai donné n'est qu'une partie de la solution, en la recopiant sans chercher plus loin tu va pas y arriver, creuse encore un peu le problème est vraiment sous ton nez (par exemple regarde bien la requête SQL exécutée, tu trouve pas qu'elle est bizzarre ?)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 29-04-2002 à 14:41:12   

Reply

Marsh Posté le 29-04-2002 à 15:15:12    

mais le truc c'est que j'ai essayer justement de bidouiller  seulement ca m'amenne null part, donc j'etais revenu en arriere (alt+z)!  
j'ai essayer ca ce qui me semblait un plus correct !! mais il me met cette erreur :
Warning: Supplied argument is not a valid MySQL result resource  
 
donc je tournais un peu en rond ...
 
if (!isset($tri)) $tri = "id";  
 
$Query = "SELECT * from  MA_DB ORDER BY $tri";  
 
mysql_connect("localhost","root","" );  
//mysql_selectdb("MA_DB" ) or die("Connexion ratée" );  
//$requete=mysql_query("SELECT * from ma_table" );  
while ($ligne = mysql_fetch_object($Query)) {

Reply

Marsh Posté le 29-04-2002 à 15:45:58    

essayes de traduire en français ton code :
 
 
connexion mysql;
selection de la BDD;
 
assignation de la chaine "SELECT ..." à la variable $Query
 
récupération de résultat de la requête $Query !!!! et là blam, erreur
 
normal, $Query n'est pas une requête, c'est une chaine , il faut faire mysql_query($Query) pour l'éxécuter


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 29-04-2002 à 16:07:00    

kler  !! autant pour moi ,j'avais vraiment pas fait gaf a ca !!
Bon j'ai donc modifier cette ligne de while , mais now qd j'affiche ma page il reflechi une trentaine de sec puis m'affiche en boucle ma premiere entrée dans ma base !! et me met :
Fatal error: Maximum execution time of 30 seconds exceeded
genre il fait le while .... print   sans s'arreter !!  
Il faut uttiliser une autre facon d'afficher le resultat ??
 
merci pour ton aide

Reply

Marsh Posté le 29-04-2002 à 18:08:17    

bon, un conseil : commence par le commencement un bon tuto d'algo et quelques hello world avant les bases de données ça te donnera de meilleurs bases niveau php.
 
Comme ça me prend plus de temps de t'expliquer que de te filer le code, je vais le faire, désolé :
 
<a href="<? echo $PHP_SELF ?>?tri=Date">trier par date</a>  
<a href="<? echo $PHP_SELF ?>?tri=Nom">trier par nom</a>  
   
<table border="1">  
 <tr bgcolor="#DDDDDD">  
  <td><b><a href="Nom du Client"</b></td>  
  <td><b>Date</b></td>  
  <td><b>Commentaires</b></td>  
 </tr>  
<?php  
 
 
if (!isset($tri)) {
  $tri = "id";
}
 
mysql_connect("localhost","root","" );  
mysql_select_db("MA_DB" ) or die("Connexion ratée" );  
 
$requete = mysql_query("$Query = "SELECT Nom,Date,Commentaires from  nomdelatable ORDER BY $tri" );  
while ($ligne = mysql_fetch_object($requete)) {  
print "  
<tr>  
<td>$ligne->Nom</td>  
<td>$ligne->Date</td>  
<td>$ligne->Commentaires</td>  
</tr>";    
}  
?>


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 30-04-2002 à 09:53:17    

Ecoute merci et désolé de t'avoir fait perdre ton temps, j'ai effectivement été un peu trop ambitieux car ca fait seulement quelques jours que je fais du php.
Par contre c'est vrai que vu la puissance et la multitude de possibilité qu'offre le php il est difficile de ne pas etre gourmand.
Mais bon ce que tu m'as donnée a l'air de fonctionner je vais juste regarder pourquoi j'avais une boucle sur ma premiere entree !! Que je puisse en tirer une conclusion qd meme !!
En tout cas merci à toi .

 

[jfdsdjhfuetppo]--Message édité par van_axl le 30-04-2002 à 11:10:45--[/jfdsdjhfuetppo]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed