trie bdd sur plusieurs champs

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : trie bdd sur plusieurs champs

Re: trie bdd sur plusieurs champs

par Gilles COSTE » 07 juil. 2011, 20:05

Merci beaucoup

Re: trie bdd sur plusieurs champs

par sadeq » 07 juil. 2011, 19:30

Bonjour,

Dans ce cas, tu auras 3 liens hypertextes qui permettent à l’utilisateur de choisir les champs et leurs ordres de tri. Puis dans la requête SQL tu auras 3 champs dans la clause ORDER BY.

Voici une proposition d'implémentation de cette solution:
<?php
// variables de travail
$mintri =  isset($_GET['mintri']) &&  strtolower($_GET['mintri']) == 'desc' ?  'desc' : 'asc'; //par défaut l'ordre est ASC
$styletri=  isset($_GET['styletri']) &&  strtolower($_GET['styletri']) == 'desc' ?  'desc' : 'asc'; 
$visitestri =  isset($_GET['visitestri']) &&  strtolower($_GET['visitestri']) == 'desc' ?  'desc' : 'asc';

// liens pour les champs de tri
echo '<p>Time <a href="?mintri=asc">-</a> I <a href="?mintri=desc">+</a></p>';
echo '<p>Style<a href="?styletri=asc">-</a> I <a href="?styletri=desc">+</a></p>';
echo '<p>Visites<a href="?visitestri=asc">-</a> I <a href="?visitestri=desc">+</a></p>';

?>
<?php
// information pour la connection à le DB
$host = 'localhost';
$user = 'usr';
$pass = 'pass';
$db = 'bdd';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

// requête SQL qui compte le nombre total d'enregistrements dans la table et qui
//récupère tous les enregistrements
$select = "SELECT *,SUBSTRING(commentaire,1,26) AS commentaire  from music where archives='non' order by min $mintri, style $styletri, visites $visitestri"; // il faut bien ordonner les champs de tri dans ORDER BY selon les niveaux de tri souhaités
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result)
Voilà.

Re: trie bdd sur plusieurs champs

par Gilles COSTE » 07 juil. 2011, 06:27

les 3 champs à la fois

Merci beaucoup pour ton aide

Re: trie bdd sur plusieurs champs

par sadeq » 27 juin 2011, 10:38

Est-ce que tu veux trier les 3 champs en même temps ou bien par chaque champ à la fois. Car ce n'est pas la même chose.

trie bdd sur plusieurs champs

par Gilles COSTE » 24 juin 2011, 13:21

Bonjour,

Ce code me permet de pouvoir classer par ordre asc ou desc le résultat du champ "min" de ma bdd

Je souhaiterai pouvoir ajouter la possibilité de classer par ordre asc ou desc le champ "style" de ma bdd et aussi le champ "visites".

Comment puis je faire pou rajouter ces conditions dans ce code

Merci beaucoup pour votre aide
<?php
if (isset($_GET['mintri'])) {
if ( strtolower($_GET['mintri']) == 'desc') {
$mintri = 'desc';
}
else {
$mintri = 'asc';
}
}
else {
$mintri = 'asc';
}

echo '<p>Time <a href="?mintri=asc">-</a> I <a href="?mintri=desc"> +</a></p>';
?>
<?php
// information pour la connection à le DB
$host = 'localhost';
$user = 'usr';
$pass = 'pass';
$db = 'bdd';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

// requête SQL qui compte le nombre total d'enregistrements dans la table et qui
//récupère tous les enregistrements
$select = "SELECT *,SUBSTRING(commentaire,1,26) AS commentaire  from music where archives='non' order by min $mintri";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result)