ORDER BY [PHP + SQL] - Programmation
Marsh Posté le 19-09-2001 à 14:53:02
en fait la ligne de requete c'est: 
$req = mysql_query("SELECT * FROM $dbtabl ORDER BY id, prix" ); 
 
pour classer suivant 2 colonnes 
Marsh Posté le 19-09-2001 à 14:54:57
| art_dupond a écrit a écrit  : essaye avec '$dbtabl' | 
 
 
Comment ca? 
Marsh Posté le 19-09-2001 à 15:00:17
| art_dupond a écrit a écrit  : $req = mysql_query("SELECT * FROM '$dbtabl' ORDER BY id" ); | 
 
 
nan y se passe tjs rien 
la table ne change pas 
Marsh Posté le 19-09-2001 à 15:35:04
la table s'appelle machine 
 
voila ce qu'elle contient: 
 
id  login  Qte  nb1    nb2   
12   aa     1  1100   1100   
7    bb     1   550   550   
11   bb     1   866   950   
4    cc     1   850   1002   
6    cc     2   600   616   
10   cc     2   933   1002 
 
la elle est classer pas login (d'ailleurs je sais po comment j'ai fait car maintenant j'y arrive plus!?) 
 
et moi je veux la classer suivant les "id" puis le "nb2" 
Marsh Posté le 19-09-2001 à 15:47:18
Classer suivant 2 colonnes ? C sur que c possible ? 
 
Si oui, la solution de art_dupont me parait juste   
 
Marsh Posté le 19-09-2001 à 15:51:42
bpn ben je crois que j'ai plus qu'a me tirer une balle   
  
  
 
merci pour ton aide 
Marsh Posté le 19-09-2001 à 15:53:34
ben deja j'arrive pas a classer suivant 1 colonne alors pour le moment j'ai abandonne pour les 2 colonne. 
 
D'apres le manuel de mysql c possible de classer suivant plusieurs colonnes 
Marsh Posté le 19-09-2001 à 16:04:57
ben la j'ai tout vire les noms de variable 
ca donne ca: 
 
<? 
$db = mysql_connect("localhost", "ivanlefou", "aa" ); 
mysql_select_db("bestofti92_db",$db); 
mysql_query("SELECT * FROM machine ORDER BY id" ); 
?> 
Marsh Posté le 19-09-2001 à 16:10:38
tu dis que tu n'as rien. Mais tu fais quelque chose pour afficher le résultat quand meme. 
 
non ? 
 
 
 
genre  
<? 
$db = mysql_connect("localhost", "ivanlefou", "aa" );  
mysql_select_db("bestofti92_db",$db);  
$req = mysql_query("SELECT * FROM machine ORDER BY id" );  
 
while ($brol = mysql_fetch_array($req)) 
{ 
  echo "$req["id"]<br>\n"; 
} 
?> 
Marsh Posté le 19-09-2001 à 16:21:40
apres je vais dans phpmyadmin, je fais un refresh et j'affiche la table
Marsh Posté le 19-09-2001 à 16:27:01
| IvanleFou a écrit a écrit  : apres je vais dans phpmyadmin, je fais un refresh et j'affiche la table | 
 
 
a mais non. 
 
ton code il va rien changer dans php my admin. 
 
c'est juste pour afficher sur une page internet par exemple. 
 
pour classer suivant les id dans phpmyadmin (en tout cas dans les versions récentes), il suffit de cliquer sur id dans ta table 
Marsh Posté le 19-09-2001 à 16:35:54
| art_dupond a écrit a écrit  : a mais non. ton code il va rien changer dans php my admin. c'est juste pour afficher sur une page internet par exemple. pour classer suivant les id dans phpmyadmin (en tout cas dans les versions récentes), il suffit de cliquer sur id dans ta table | 
 
 
vi mais moi je veux le faire par php car qd j'affiche ma table c po pratique si c po classe. 
Marsh Posté le 19-09-2001 à 16:39:33
si j'ai bien compris, tu veux changer l'affichage de ta table dans phpmyadmin. C'est bien ca ? 
 
si tu veux faire ca, faut chipotter dans le code de phpmyadmin. 
 
C'est bien ca que tu fais ? 
 
Je demande ca pour être sur de comprendre ce que tu veux faire. 
Marsh Posté le 19-09-2001 à 16:40:02
Oui ben comme l a dit art_dupont il suffit de cliquer sur ta colonne dans phpmyadmin pour trier sinon phpmyadmin classe par ordre d entré dans la base par défaut
Marsh Posté le 19-09-2001 à 16:42:16
| art_dupond a écrit a écrit  : si j'ai bien compris, tu veux changer l'affichage de ta table dans phpmyadmin. C'est bien ca ? si tu veux faire ca, faut chipotter dans le code de phpmyadmin. C'est bien ca que tu fais ? Je demande ca pour être sur de comprendre ce que tu veux faire. | 
 
 
nan phpmyadmin s'etait juste pour voir si le script marche. 
normalement ya une autre page qui est faite pour afficher la table 
Marsh Posté le 19-09-2001 à 16:55:47
oula...ca na rien a voir: PhpmyAdmin taffiche ce qu'il y a dans la table de ta BD. il fait juste un select sur la table. 
 
Toi tu fais un autre script, une requete select aussi. Les requetes select sur une BD ne modifie en rien la structure de cette table (contrairement a Alter, Add etc..) 
 
donc quand tu fais ton select, tu obtiens des resultats suivant tes criteres. ce sont ces resultats qui sont classés si tu fais un "order by". Pour voir si ca marche fais comme Art_Dupond te la dis: affiche le resulat de ta requete! 
 
tu verras ca marche! 
Marsh Posté le 19-09-2001 à 19:26:13
et je fais comment apres pour modifier la table pour que le nouveau classement soit enregistre?
Marsh Posté le 19-09-2001 à 19:49:16
bon je l'ai mis en ligne vite fait kom ca tu va comprendre: 
 
www.multimania.com/bestofti92 
 
ds la section machine t'as le link pour afficher la base de donnee. kom tu peux le voir elle n'est pas l'ordre (je veux la classer suivant les pseudos). 
 
ds la section "ranger la table "machine"" c'est le script pour ordonner la table. Donc qd tu cliques sur sur ce link et qua'pres tu va voir la table -> ben le table devrait etre ordonne alors qu'elle ne l'es pas. 
 
J'espere que se sera plus clair comme ca 
Marsh Posté le 19-09-2001 à 20:10:36
ReplyMarsh Posté le 19-09-2001 à 20:44:09
URL pour l'affichage: 
 
http://www.multimania.com/bestofti [...] ffich.php3 
Marsh Posté le 19-09-2001 à 20:54:33
moi je ferais plutot comme ca: 
 
<? 
require("sql_machine.inc.php3" ); 
$db = mysql_connect("$dbhost", "$dblogi", "$dbpass" ) or Die("Base Down !" );  
mysql_select_db("$dbbase",$db) or Die("Base Down !" );  
$req = mysql_query("SELECT * FROM $dbtabl ORDER BY login" );  
$res = mysql_numrows($req);  
 
 
echo "<table border=\"1\">\n"; 
$login_db=""; 
 
while($myrowres = mysql_fetch_array($res)) 
{ 
 echo "	<tr>\n"; 
if($myrowres["login"] != $login_db) 
{ 
 echo "  <td>".$myrowres["login"]."</td>\n"; 
 $login_db = $myrowres["login"];  
} 
else 
{ 
 echo "  <td> </td>\n"; 
} 
 
 echo "  <td>".$myrowres["proc"]."</td>\n"; 
 echo "  <td>".$myrowres["type_proc"]."</td>\n"; 
 echo "  <td>".$myrowres["nb_proc"]."</td>\n"; 
 echo "  <td>".$myrowres["freq_origine"]."</td>\n"; 
 echo "  <td>".$myrowres["freq_over"]."</td>\n"; 
 echo "	</tr>\n"; 
} 
echo "</table>\n"; 
?> 
[edtdd]--Message édité par art_dupond--[/edtdd]
Marsh Posté le 19-09-2001 à 21:10:41
Je suis en train de chercher avec un autre collegue et il est arrive a la meme conclusion que toi: 
 
$req = mysql_query("SELECT * FROM $dbtabl ORDER BY login" );   
 
Et ca marche.  
   
 
merci  
  
 
Donc maintenant je lui ai mis le classement suivant 2 colonnes: 
 
$req = mysql_query("SELECT * FROM $dbtabl ORDER BY login, freq_over" ); 
 
mais si tu regardes a l'url ben ca le fait po 
1er classement oki 
2eme y veut po 
 
En fait si je rajoute freq_over apres login le classement change mais ca correspond po a ce que je veux. 
je voudrais que, pour un pseudo donne, les freq apres OC soient classer par ordre croissant ou decroissant (po trop d'importance, mais qu'au moins il y est un ordre). 
Marsh Posté le 19-09-2001 à 21:30:26
bon, voilà ce que j'ai : 
 
ma table: 
| Code : 
 | 
 
 
mon code : 
 
<? 
$db = mysql_connect("localhost", "login","pass" ); 
mysql_select_db("pout",$db); 
 
$req = mysql_query("SELECT * FROM machine ORDER BY login, freq ASC",$db); 
 
echo "<table border=\"1\">\n"; 
$login_db=""; 
 
while($myrowres = mysql_fetch_array($req)) 
{ 
echo " <tr>\n"; 
if($myrowres["login"] != $login_db) 
{ 
echo "  <td>".$myrowres["login"]."</td>\n"; 
$login_db = $myrowres["login"];   
} 
else 
{ 
echo "  <td> </td>\n"; 
} 
 
echo "  <td>".$myrowres["freq"]."</td>\n"; 
echo "  <td>".$myrowres["freq_over"]."</td>\n"; 
echo " </tr>\n"; 
} 
echo "</table>\n"; 
?>  
 
 
et ce qu'il m'affiche : 
 
| Code : 
 | 
[edtdd]--Message édité par art_dupond--[/edtdd]
Marsh Posté le 19-09-2001 à 21:45:11
vi maintenant c bon tout marche. 
 
le pbr venait d'une mauvaise definition de la table. J'avais mis VARCHARpour les frequence au lieu de INT. 
 
Merci de tout coeur tout m'a super bien aide  
   
 
Marsh Posté le 19-09-2001 à 14:51:39
je veux classer les lignes d'une table suivant une colonne puis une autre
 
   
   
  
Voici le script mais il ne marche pas. La table reste inchange
<?
require("sql_machine.inc.php3" );
$db = mysql_connect("$dbhost", "$dblogi", "$dbpass" ) or Die("Base Down !" );
mysql_select_db("$dbbase",$db) or Die("Base Down !" );
$req = mysql_query("SELECT * FROM $dbtabl ORDER BY id" );
?>
Qu'est ce qui manque ou qui ne va pas???
je commence desesperer
Merci