Fork me on GitHub




« 1 (2) 3 »


Re: Aménagement requête sur une date
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
Citation :

Ma bdd reste désespérément vide :(

!!!!

la class 'criteria' sert a faire des requêtes en 'SELECT' sur une base de données, pas de l'INSERT ou de l'UPDATE donc c'est normal que ta bdd reste vide, a moins que j'ai loupé un épisode.
Peux-tu m'apporter un éclairage

Posté le : 01/10/2012 14:32
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
Voici la suite du traitement que j'avais hésité à poster :
// Calcul des places **************************************************
        
echo _AM_MYKART_CALCUL_PLACES.'<br>';
        
// Consommation mémoire !
        
unset($tblCircuits);
        
$tblPlaces $hMykartResultats->getClassement($tblEpreuves);
        echo 
_AM_MYKART_CALCULED_PLACES.'<br>';

        
// Insertion des places dans le palmarès ******************************
        
echo _AM_MYKART_CALCUL_PLAMARES.'<br>';
        
$place 0;
        foreach(
$tblPlaces as $item) {
            
$place++;
            
$pilote_id $item['pilote_id'];
            
$pilote_points =  $item['pilote_points'];
            
$palmares $hMykartPalmares->create(true);
            
$palmares->setVar('palm_pilote_id'$pilote_id);
            
$palmares->setVar('palm_rg_id',$rg_id);
            
$palmares->setVar('palm_place'$place);
            
$palmares->setVar('palm_ancienne_place'0);    // TODO: A faire plus tard
            
$palmares->setVar('palm_saison'$regroupement->getVar('rg_saison'));
            
$palmares->setVar('palm_points'$pilote_points);
            
$res $hMykartPalmares->insert($palmarestrue);
            if(!
$res) {
                
$mykartUtils->redirect(_AM_MYKART_ERROR_18$baseurl5);
            }
        }
        
// Fin des haricots !
        
$mykartUtils->updateCache();                                                        // Mise à jour du cache
        
$mykartUtils->redirect(_AM_MYKART_CALCUL_TERMINE$baseurl.'?op='.$opRedirect10);    // Et hasta la vista baby
        
show_footer();
        break;


Mais si c'est trop compliqué, j'ai trouvé une solution bâtarde en détournant un champ dont je peux me passer.
Je ne veux pas monopoliser ton temps. Tu m'en as déjà tellement accordé.

Posté le : 01/10/2012 16:16
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
en mode debug dans a partie requête MySQL est-ce que la ligne avec BETWEEN apparait et si oui regarde si elle est en rouge dans ce cas cela signifie qu'il y a une erreur.

Posté le : 01/10/2012 18:06
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
0.000070 SELECT COUNT(*) FROM mykart_regroupements WHERE rg_id IN ()
Error number1064
Error message
You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
0.000055 
SELECT FROM mykart_regroupements WHERE rg_id IN () ORDER BY rg_libellerg_saison DESC
Error number
1064
Error message
You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY rg_libelle, rg_saison DESC' at line 1

Posté le : 01/10/2012 20:22
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
SELECT COUNT(*) FROM mykart_regroupements WHERE rg_id IN ()

dans cette requête, sûrement avant le script indiqué précédemment, il doit avoir quelques choses entre les parenthèses (les valeurs de reg_id)
la deuxième requête, c'est la même chose, il n'y a rien entre les parenthèses.
regarde déjà pour résoudre cela, ensuite on pourra tester le reste

Posté le : 01/10/2012 22:17
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 cher ami,

J'ai l'impression d'avoir trouvé plus têtu que moi ;)

J'ai fait 2 tests.
Le premier avec les instructions d'origine, pour lequel "debug" me sussure
0.000305 SELECT Distinct(palm_rg_id) as vunique FROM mykart_palmares
0.000173 
SELECT COUNT(*) FROM mykart_regroupements WHERE rg_id IN (2)
0.000189 SELECT FROM mykart_regroupements WHERE rg_id IN (2ORDER BY rg_libellerg_saison DESC


Le second avec les instructions corrigées (strict copier-coller de ton modèle) génère du rouge :
0.000294 SELECT Distinct(palm_rg_id) as vunique FROM mykart_palmares
0.000106 
SELECT COUNT(*) FROM mykart_regroupements WHERE rg_id IN ()
Error number1064
Error message
You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
0.000122 
SELECT FROM mykart_regroupements WHERE rg_id IN () ORDER BY rg_libellerg_saison DESC
Error number
1064
Error message
You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY rg_libelle, rg_saison DESC' at line 1


A tout hasard, j'ai aussi vu ces deux lignes en cliquant sur le lien "erreurs" du debug :
Avertissement(s): Missing argument 1 for Criteria::Criteria(), called in /modules/mykart/admin/index.php on line 1824 and defined dans le fichier /class/criteria.php ligne 303
Message
(s): Undefined variablecolumn dans le fichier /class/criteria.php ligne 307

Ces deux erreurs semblent concerner cette instruction du fichier class/criteria.php fourni en standard avec xoops 2.5.5 : function Criteria($column, $value = '', $operator = '=', $prefix = '', $function = '')

La comparaison me laisse penser que la requête ne sait plus quelle saison traiter.

Posté le : 02/10/2012 08:12
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 problème vient de cette requête :
$critere->add(new Criteria('epreuve_circuit_id''('.implode(','$tblCircuits).')''IN'));

la question est pourquoi dans mon code $tblCircuits est vide et pas dans le code original

les avertissements viennent du fait que $tblCircuits est vide

Posté le : 02/10/2012 10:44
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
essai de changer l'ordre mais j'ai des doutes

$critere->add(new Criteria('epreuve_date'$min_date.' AND '.$max_date'BETWEEN')); 
$critere->add(new Criteria('epreuve_statut'EPREUVE_STATUT_VALIDEE'='));
$critere->add(new Criteria('epreuve_circuit_id''('.implode(','$tblCircuits).')''IN'));

Posté le : 02/10/2012 10:46
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
Effectivement, l'ordre n'influe pas :(

J'ai créé un second circuit sur lequel j'ai enregistré une épreuve en 2012 et une en 2013. Le process original fonctionne, mais pas le tien :(

Tu sais, je vais laisser tomber cette usine à gaz et tenter d'en monter une autre en utilisant un champ dont je n'ai pas l'usage : epreuve_meteo_id (on se moque un peu de la météo aux échecs).
Je n'ai en fait qu'une seule difficulté pour l'utiliser comme il faut :
C'est une liste de choix en provenance de la table mykart_meteo (meteo_id et meteo_libelle).
Je veux juste stocker le contenu de meteo_libelle au lieu de meteo_id. C'est l'organisateur qui choisira sa saison.

Je sais que le stockage du résultat n'est pas la norme, mais ça me facilite le travail pour le reste :)
Je sais que ça fonctionne car j'ai déjà testé en modifiant à la main le meteo_id qui est normalement en auto-incrément.

Qu'en penses-tu ?

Posté le : 02/10/2012 12:07
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
Citation :

on se moque un peu de la météo aux échecs


sauf si tu joue dehors

En étant plus sérieux 3 minutes, c'est une solution que d'utiliser un champs qui n'a pas d'utilité. Seul hic, il te faudra deux requêtes : une sur mykart_meteo et l'autre sur la table où sur laquelle on a travaillé jusqu'à maintenant.
Il y a encore plus simple, au lieu de passer par la class 'criteria' pour créer la requête, tu utilises directement une requête MySQL, c'est plus sûr pour les requêtes complexes.

Posté le : 02/10/2012 12:49
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

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