[SQL] tri multiples critères

Mammouth du PHP | 531 Messages

18 juil. 2007, 16:53

Bonjour

Voilà mon (autre) problème.

J'ai des entrées possédant un indice d'importance, 1 pour tres important, 2 pour important, ect...
Ainsi qu'un titre.

Je voudrais les sortir de cette façon :

Ici les entrées ayant un indice de 1, classées par ordre alphabetique sur le titre
Ici les entrés ayant un indice de 2, idem
ect...

Alors j'ai donc fait ceci dans ma requete :

Code : Tout sélectionner

ORDER BY importance ASC,titre_note ASC
J'imagine que c'est complétement faux ?
Car tout ressort nimporte comment, même avec des indices d'importance identiques

ViPHP
ViPHP | 5924 Messages

18 juil. 2007, 17:09

Essaye

Code : Tout sélectionner

ORDER BY importance, titre_note ASC

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 juil. 2007, 17:09

bah non, c'est juste pourtant... fais voir la requête et un exemple de ce qui ressort dans le désordre ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

18 juil. 2007, 17:16

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "SQL & Bases de données".

D'ailleurs tu le mets toi même dans le titre :roll:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 531 Messages

18 juil. 2007, 17:29

Désolé pour le mauvais post ;)

Exemple

"xéon" sort avant "note sans titre"
Ils sont tous deux un indice de priorité de 1

Ma requete :

Code : Tout sélectionner

$req_notes= mysql_query ("SELECT id_note,titre_note,texte_note FROM ipi_notes WHERE user='".$_SESSION['session_user']."' AND corbeille=0 ORDER BY '$tri'");
$tri contient la chaine de caractere : importance ASC,titre_note ASC

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

18 juil. 2007, 17:39

Je pense que l'on va avoir besoin de plus d'infos pour y voir plus clair. C/P time:

Rappel pratique - n'oubliez pas de :
  • suivre ces quelques conseils de débogage
  • préciser quel SGBD vous utilisez ainsi que sa version
  • utiliser les balises

    Code : Tout sélectionner

    [/b] et [b]
    [/b] pour afficher du SQL[/color]
  • poster le schéma des tables pertinentes à votre requête sous la forme d'une instruction "CREATE TABLE" (vous pouvez retirer les colonnes qui ne sont pas utilisées dans les requêtes problématiques)
  • si nécessaire, poster un échantillon des données

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

18 juil. 2007, 17:52

des quotes (apostrophes) de trop dans la requête :idea:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 531 Messages

18 juil. 2007, 17:59

Code : Tout sélectionner

'".$tri."'
Mais par contre rien ne change au problème :roll:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

18 juil. 2007, 18:02

C'est à dire ?? tu les as retirées ?

Les remarques d'Hubert restent valables :roll:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 531 Messages

18 juil. 2007, 18:08

Une fois retirés j'obtient une erreur donc j'ai plutot ajouté des " et des .

Désolé mais comme je suis vraiment pas calé en SQL... je vais regarder pour les commentaires.
Déjà voilà pour ça : Version du client MySQL: 4.1.11

Sinon le champ en question est int(1), défaut 1

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

18 juil. 2007, 18:20

Une fois retirés j'obtient une erreur donc j'ai plutot ajouté des " et des .
Et quelle erreur ?
Avec quelle instruction (requête)?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

18 juil. 2007, 19:57

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

Si je fait ceci :

Code : Tout sélectionner

$req_notes= mysql_query ("SELECT id_note,titre_note,texte_note FROM ipi_notes WHERE user='".$_SESSION['session_user']."' AND corbeille=0 ORDER BY $tri");
Par contre si je fait comme ça, pas d'erreur mais le tri ne fonctionne pas :

Code : Tout sélectionner

$req_notes= mysql_query ("SELECT id_note,titre_note,texte_note FROM ipi_notes WHERE user='".$_SESSION['session_user']."' AND corbeille=0 ORDER BY '".$tri."'");
Voici la fonction associé à la variable $tri :
function tri_notes() { // TRI DES NOTES
	$tmp= $_SESSION['tri_notes'];
	switch($tmp) {
		case 1:
		$tri= 'importance ASC,id_note ASC';
		break;
		case 2:
		$tri= 'importance ASC,titre_note ASC';
		break;
		$tri= 'titre_note ASC';
		break;
		$tri= 'importance ASC';
	}
	return $tri;
}
Que j'apelle de cette façon avant ma requete :
$tri= tri_notes(); // APPEL DE LA FONCTION DE TRI DES NOTES
Je pense avoir tout dit :roll:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 juil. 2007, 09:33

affiche la requête générée et verifie la syntaxe... le retour de ta fonction notamment.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute