Fork me on GitHub




(1) 2 3 »


Aménagement requête sur une date
Régulier
Inscrit: 07/08/2007 21:22
De Alsace
Messages: 218
Bonjour

J'espère ne pas polluer ce forum avec ma question.

Je cherche à modifier un critère de sélection dans le module myKart d'Instant Zero que je cherche à détourner honteusement pour mon club d'échecs.
Voici le code d'origine :
$critere = new CriteriaCompo();
        
$critere->add(new Criteria('year(epreuve_date)'$regroupement->getVar('rg_saison') ,'='));
        
$critere->add(new Criteria('epreuve_statut'EPREUVE_STATUT_VALIDEE'='));
        
$critere->add(new Criteria('epreuve_circuit_id''('.implode(','$tblCircuits).')''IN'));
        
$tblEpreuves = array();
        
$tblEpreuves $hMykartEpreuves->getIds($critere);


Mon souci est que ce module n'enregistre la saison que sur l'année civile (rg_saison).
Or la mienne est alignée sur l'année scolaire et, pour celle qui vient de débuter, nommée 2013 en mode fainéant.
Si j'indique 2013, mes résultats du 4ème trimestre 2012 sont exclus (epreuve_date).
Et si je précise 2012, je vais m'arrêter au 31/12 :(
Notez que le module ne m'empêche pas de saisir en 2012 des résultats de 2013 et me les affiche bien.

Est-ce que quelqu'un aurait la gentillesse de me donner le moyen de modifier efficacement ce critère (2ème ligne du code ci-avant) ?

Merci d'avance.

Posté le : 30/09/2012 17:27
Partager Twitter Partagez cette article sur GG+
Re: Aménagement requête sur une date
Régulier
Inscrit: 07/08/2007 21:22
De Alsace
Messages: 218
Je ne peux pas éditer mon post précédent :(

Après avoir fait fonctionner glouglou et mes méninges, j'ai trouvé ça, mais la syntaxe est défectueuse et ça ne fonctionne pas. Mais l'idée est là.


[edit]
$decalage ;
if(
'month(epreuve_date)'>= 9) { $decalage 1; }
$critere->add(new Criteria('year(epreuve_date)'$regroupement->getVar('rg_saison') - $decalage,'='));


Le calcul se fait mais le résultat est nul.

Alors que si j'envoie
$critere->add(new Criteria('year(epreuve_date)'$regroupement->getVar('rg_saison') - 1,'='));

je passe.




Posté le : 30/09/2012 19:50
Partager Twitter Partagez cette article sur GG+
Re: Aménagement requête sur une date
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
sûrement que le 'if' ne se réalise pas
fait
essai ceci :
if(month(epreuve_date)>= 9) { $decalage 1; }




Posté le : 30/09/2012 21:14
Partager Twitter Partagez cette article sur GG+
Re: Aménagement requête sur une date
Régulier
Inscrit: 07/08/2007 21:22
De Alsace
Messages: 218
Merci montuy337513

Déjà essayé sans succès.
Mais ça suffit pour aujourd'hui. Je suis là-dessus depuis trop longtemps pour un dimanche :)

Bonne nuit.

Posté le : 30/09/2012 21:50
Partager Twitter Partagez cette article sur GG+
Re: Aménagement requête sur une date
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
pour savoir ce que contient la valeur(où le format de la valeur), tu insères avant le if un
var_dump('month(epreuve_date)');

Posté le : 30/09/2012 23:31
Partager Twitter Partagez cette article sur GG+
Re: Aménagement requête sur une date
Régulier
Inscrit: 07/08/2007 21:22
De Alsace
Messages: 218
Bonjour,

Pas besoin du dump : je suis en local et fais mes tests avec la Bdd ouverte.

'epreuve_date' contient ce format : 2012-09-30 12:20:00

Posté le : 01/10/2012 07:32
Partager Twitter Partagez cette article sur GG+
Re: Aménagement requête sur une date
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
var_dump sert a indiquer le format du contenu et la valeur, je teste mes variables pour vraiment être sûr de ce que sait.

la ligne que je t'ai donner permet de tester si la fonction 'month' renvoi bien quelque chose et sous quel format.

Par déduction je dirais que au lien de 9 dans ton if tu devrai mettre '09' qui n'est pas la même chose.

Posté le : 01/10/2012 08:03
Partager Twitter Partagez cette article sur GG+
Re: Aménagement requête sur une date
Régulier
Inscrit: 07/08/2007 21:22
De Alsace
Messages: 218
Je te redonne le code pour limiter les ballades dans le sujet
// Recherche des épreuves (original)*********************************************
        
echo _AM_MYKART_LOAD_EPREUVES.'<br>';
        
$critere = new CriteriaCompo();
        
$critere->add(new Criteria('year(epreuve_date)'$regroupement->getVar('rg_saison') ,'='));
        
$critere->add(new Criteria('epreuve_statut'EPREUVE_STATUT_VALIDEE'='));
        
$critere->add(new Criteria('epreuve_circuit_id''('.implode(','$tblCircuits).')''IN'));
        
$tblEpreuves = array();
        
$tblEpreuves $hMykartEpreuves->getIds($critere);
    
        echo 
_AM_MYKART_LOADED_EPREUVES.'<br>';

Si j'ajoute une ligne "if" comme suit
$critere = new CriteriaCompo();
if (
month(epreuve_date) == '09') {$decalage ;}
        
$critere->add(new Criteria('year(epreuve_date)'$regroupement->getVar('rg_saison') ,'='));

que ce soit avec ou sans les quote ('), j'ai la liste des jobs (Chargement des données du regroupement
Regroupement chargé
Suppression des données actuelles
Suppression des données effectuée
Recherche des plans d'eau
Liste des plans d'eau chargée
Recherche des épreuves
)
mais pas de résultat.

Mon "if" n'est donc pas valide.
Mais le motif reste pour moi un mystère.

J'ai aussi intégré le "var dump" avant le "if" et j'obtiens string 'month(epreuve_date)' (length=19) à la suite de la liste des jobs

Posté le : 01/10/2012 08:51
Partager Twitter Partagez cette article sur GG+
Re: Aménagement requête sur une date
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
le var_dump te donne la réponse

en effet il t'indique que c'est un 'string donc une chaine de caractère ayant pour valeur : month(epreuve_date)

donc il est impossible que month(epreuve_date) soit >= à 9 ou même 09

la class 'criteria' permet de fabriquer une requête MySQL donc si je me base par rapport à la requête MySQL

tu as trois champs (epreuve_date,epreuve_statut et epreuve_circuit_id)

dans ton cas tu as besoins de septembre N a septembre N+1 (si j'ai bien compris)

donc ta requête devrai ressembler a ceci :
$min_date = ($regroupement->getVar('rg_saison') - 1).'-09-01';
$max_date $regroupement->getVar('rg_saison').'-08-31';
echo 
_AM_MYKART_LOAD_EPREUVES.'<br>';
$critere = new CriteriaCompo();
$critere->add(new Criteria('epreuve_statut'EPREUVE_STATUT_VALIDEE'='));
$critere->add(new Criteria('epreuve_circuit_id''('.implode(','$tblCircuits).')''IN')); 
$critere->add(new Criteria('epreuve_date'$min_date.' AND '.$max_date'BETWEEN'));
$tblEpreuves = array();
$tblEpreuves $hMykartEpreuves->getIds($critere);
echo 
_AM_MYKART_LOADED_EPREUVES.'<br>';

Posté le : 01/10/2012 10:22
Partager Twitter Partagez cette article sur GG+
Re: Aménagement requête sur une date
Régulier
Inscrit: 07/08/2007 21:22
De Alsace
Messages: 218
Tu as parfaitement compris mon besoin.

Je suis désolé, mais ça ne fonctionne pas.
Ma bdd reste désespérément vide :(

J'ai essayé de modifier $min_date et $max_date pour y ajouter le format des heures puisqu'elles apparaissent dans le champ de recherche, sans plus de succès.
$min_date = ($regroupement->getVar('rg_saison') - 1).'-09-01 00:00:00';


:(

Posté le : 01/10/2012 11:37
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 3 »



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

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