Fork me on GitHub






Comment faire un sort et order avec Criteria?
Régulier
Inscrit: 04/02/2003 05:09
De Brossard, Quèbec
Messages: 139
bonjour a tous! sa fait un baille je ne suis pas vnu ici!

J'ai recommencer a xoopsé un peu dans mes temps libre et j'ai pas la memoire tres fraiche. J,aimerais savoir comment faire un sort par un champ specifique et un order ASC ou DESC avec la class Criteria.

Merci d'Avance.

P.S. Je tien a preciser que la section documentation est tout a l'envers! ya des liens qui mene pas dutout au sujet quil est suposer nous amener! (Pourquoi pas utiliser un wiki pour la doc! ou tlm pourais contribuer et non pas un petit cercle d'initier?)

Posté le : 07/05/2006 04:23
Partager Twitter Partagez cette article sur GG+
Re: Comment faire un sort et order avec Criteria?
Xoops accro
Inscrit: 04/02/2003 01:54
De Le Mans
Messages: 12273
Regarde les classes de modules existants comme News par exemple

Posté le : 07/05/2006 11:34
Partager Twitter Partagez cette article sur GG+
Re: Comment faire un sort et order avec Criteria?
Aspirant
Inscrit: 28/02/2005 14:19
De Vercors
Messages: 37
Le critère peut être simple avec la class Criteria
$criteriasearch = new Criteria('iud''a'.'%''LIKE')

mais aussi composé en utilisant la classe CriteriaCompo :
$criteriasearch = new CriteriaCompo();

$criteriasearch->add(new Criteria('iud''a'.'%''LIKE'));
$criteriasearch->add(new Criteria(....));

Par defaut les critères composés sont liés par un "and" mais on spécifier un 2 parametres avec un 'OR'
$criteriasearch->add(new Criteria(....),'OR');


On peut spécifié :
Une borne supérieur
$criteriasearch->setStart($start);

Une borne inférieur
$criteriasearch->setLimit($limit);

Un champs sur lequel trié (ici il est présent dans un parametre xoops)
$criteriasearch->setSort($xoopsModuleConfig['My_order']);

Un sens de tri : "ASC" pour acendant ou "DESC" pour decendant
$criteriasearch->setOrder("ASC");


Un groupby :
$criteriasearch->setGroupby($goup);


Pour en savoir plus, les classes utilisées ici Criteria et CriteriaCompo sont visualisables dans le fichier ..\class\criteria.php

Posté le : 15/05/2006 11:55
Partager Twitter Partagez cette article sur GG+
Re: Comment faire un sort et order avec Criteria?
Régulier
Inscrit: 04/02/2003 05:09
De Brossard, Quèbec
Messages: 139
Je sais que sa fait longtemps que sa ete ecrit mais merci beaucoup pour cette explication!! j'avais complement oublier ce post.

J'ai un autre probleme maintenant.

Je cree avec criteria :
code 
$criteria->add(new Criteria("uid"$search), "OR");
$criteria->add(new Criteria("username""%".$search."%""like"), "OR");
$criteria->add(new Criteria("email""%".$search."%""like"), "OR");
$criteria->add(new Criteria("displayname""%".$search."%""like"), "OR");
$criteria->add(new Criteria("status"$status"="));

Résultat
(uid 'maRecherche' OR username like '%maRecherche%' OR email like '%maRecherche%' OR displayname like '%maRecherche%' AND status '0')


mais je devrais creer qqchose qui donne :
Resultat : ((uid 'maRecherche' OR username like '%maRecherche%' OR email like '%maRecherche%' OR displayname like '%maRecherche%') AND status '1')
Code : ???

pour que la requete donne exactement ce que je veux. est-ce possible de faire sa avec Criteria?

P.S. pour ceux qui se demande c quoi la diff ben c'est les parenthese qui entoure tout les OR. Le champs status etant un AND.

Je veux sortir toute les entrer qui ont le status a 1 et qui contient le texte "maRecherche" dedans les champs specifier.

Merci d'avance.

Posté le : 03/07/2006 21:12
Partager Twitter Partagez cette article sur GG+
Re: Comment faire un sort et order avec Criteria?
Aspirant
Inscrit: 28/02/2005 14:19
De Vercors
Messages: 37
Il te faut composer tes critères en créant 1 compo criteria maitre qui englobe 2 autres compos secondaire lié par un "and".

Un avec
(uid = 'maRecherche' OR username like '%maRecherche%' OR email like '%maRecherche%' OR displayname like '%maRecherche%')
et un autre avec
status = '1'

On peut composer les "criteria" cela autant de fois que necessaire


Voici le code approximatif (non testé) :
$criteriasearch1 = new CriteriaCompo();
$criteriasearch1->add(new Criteria("uid"'maRecherche'));
$criteriasearch1->add(new Criteria("username "'%maRecherche%','like'), "OR");
.....
$criteriasearch2 = new CriteriaCompo();
$criteriasearch2->add(new Criteria("statut"1));

$criteriasearch = new CriteriaCompo();
$criteriasearch->add(criteriasearch1);
$criteriasearch->add(criteriasearch2"AND");




Ce genre de documentation manque sur le site ?

Posté le : 04/07/2006 10:27
Partager Twitter Partagez cette article sur GG+
Re: Comment faire un sort et order avec Criteria?
Régulier
Inscrit: 04/02/2003 05:09
De Brossard, Quèbec
Messages: 139
exactement ce que je cherchais! merci beaucoup!

(Ouais la doc laisse un peu a desirer pour les truc pousser!) Et comme j'ai l'habitude de toujours pousser mes truc loins j'ai jamais vraiment la doc qui me faut. J'aimerais bien avoir la manette dans le film clic pour pouvoir le temps d'ecrire un tas de doc lol!

Posté le : 04/07/2006 16:26
Partager Twitter Partagez cette article sur GG+
Re: Comment faire un sort et order avec Criteria?
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379
Je profite de ce post meme si c'est pas exactement le sujet car c'est pas lie a un sort ou a un order mais bon c'est quand meme lie aux objets Criteria et CriteriaCompo...

Comment fait-on un test par rapport a une donnee NULL
normalement sur une requete on met
SELECT * FROM table1 WHERE col1 IS NULL
ou col1 IS NOT NULL (pour le contraire)
Et j'ai pas trouve le moyen de le faire avec criteria...

Posté le : 01/08/2006 13:20
Partager Twitter Partagez cette article sur GG+
Re: Comment faire un sort et order avec Criteria?
Xoops accro
Inscrit: 04/02/2003 01:54
De Le Mans
Messages: 12273
Xoops est très bien référencé dans google.
Ainsi avec les mots : xoops criteria null
on trouve cette réponse parmi d'autres.

Posté le : 01/08/2006 13:23
Partager Twitter Partagez cette article sur GG+
Re: Comment faire un sort et order avec Criteria?
Régulier
Inscrit: 06/01/2006 23:55
Messages: 379
yep
ben effectivement ils disent que ca marche pas...
A moins de modifier la class criteriaElement et la methode render...

La seule façon que j'ai trouve pour reussir a passer c'est d'utiliser une fonction mais cela marche dans mon cas specifique car NULL ou 0 est pareil mais ce n'est pas forcement toujours le cas
$criteriasearch = new CriteriaCompo();
$criteriasearch->add(new Criteria($this->CriterThisBox$User));
$criteriasearch->add(new Criteria('del_by_'.$this->CriterThisBox'0''=''b''IFNULL(%s, 0)'));
$pm_arr $pm_handler->getObjects($criteriasearch);

Posté le : 01/08/2006 13:29
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

25 Personne(s) en ligne (22 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 25 | Plus ...