[Prono-Foot™] - Améliorations / Suggestions
-
Aurelienazerty
- Webmaster / Président
- Messages : 26251
- Inscription : septembre 27, 2002, 9:41 pm
fait
J'ai fait ma partie, Ludo, il te reste toute la fin de saison à saisir (c'est la moins longue t'as une grille de moins).
Y a encore le trophée des champion qui arrive "bientôt" c'est quoi les dates ?
Y a encore le trophée des champion qui arrive "bientôt" c'est quoi les dates ?
-
Aurelienazerty
- Webmaster / Président
- Messages : 26251
- Inscription : septembre 27, 2002, 9:41 pm
C'est très moche
C'est fait, choisir toutes les grilles à venir dans la 3° listeChristophe a écrit :Serait-il possible d'avoir l'ensemble des grilles de toutes une compétition sur une même page, afin de pouvoir effectuer un prono-flash sur la saison entière?
C'est fait, en fait une fois la grille soumise, sur la page de confirmation, vous avez il lien d'accès direct à la prochaine grille non pronostiquée.Aurelienazerty a écrit :ça sent le pronoflash sur toute la saison ça.
De même, il serait bien d'avoir un bouton pour passer à la grille suivante (c'est relou de revenir sur la page de pronostique, choisir dans la liste etc.)
-
Nicolazerty
- l'élu
- Messages : 4121
- Inscription : septembre 27, 2002, 2:59 pm
-
Aurelienazerty
- Webmaster / Président
- Messages : 26251
- Inscription : septembre 27, 2002, 9:41 pm
Les groupes
Une idée qu'on m'a suggéré au boulot consisterait à permet un filtre des classement par groupes. Le but étant de faciliter les tournois interne entre collègues. qu'en dites vous ?
-
Nicolazerty
- l'élu
- Messages : 4121
- Inscription : septembre 27, 2002, 2:59 pm
-
Nicolazerty
- l'élu
- Messages : 4121
- Inscription : septembre 27, 2002, 2:59 pm
-
Aurelienazerty
- Webmaster / Président
- Messages : 26251
- Inscription : septembre 27, 2002, 9:41 pm
Re: Les groupes
Merci nico !
C'est opérationnel sur la page d'index de pronofoot mais aussi sur le tableau récap
C'est fait. Normalement... ça fonctionne.Aurelienazerty a écrit :Une idée qu'on m'a suggéré au boulot consisterait à permet un filtre des classement par groupes. Le but étant de faciliter les tournois interne entre collègues. qu'en dites vous ?
C'est opérationnel sur la page d'index de pronofoot mais aussi sur le tableau récap
-
Ludao
- Obiwan Kenobi
- Messages : 1278
- Inscription : août 7, 2004, 12:20 pm
-
Aurelienazerty
- Webmaster / Président
- Messages : 26251
- Inscription : septembre 27, 2002, 9:41 pm
date
Si mes souvenirs sont bons, il doit avoir une histoire de date, et comme il a des matchs reportés tout ça, il doit avoir une couille dans le potage.
Ouai, mes souvenirs sont bons, voilà mon select:J'ai pas la tête à faire du SQL là tout de suite, donc si un codeur dans l'âme veut le faire, pas de soucis, le schéma est là
Ouai, mes souvenirs sont bons, voilà mon select:
Code : Tout sélectionner
SELECT foot_grille.id_grille, foot_grille.nom
from foot_grille
inner join foot_match on foot_grille.id_grille = foot_match.id_grille
where id_compet = ".$id_compet."
group by foot_grille.id_grille
ORDER by foot_match.date, foot_grille.nom -
Davidazerty
- l'élu
- Messages : 2443
- Inscription : octobre 12, 2002, 3:30 pm
C'est une erreur sur le GROUP BY, tu as plusieurs match pour chaque grille, une fois groupé sur la grille il n'a plus qu'un seul match (surement la dernière entrée) pour triée sur la date.
Tu peux essayer d'enlever les GROUP BY et le trie sur le nom au passage (a moins qu'ils puissent y avoir deux grilles qui commence le même jour), et mettre un DISTINCT après le SELECT pour enlever les doublons.
Tu peux essayer d'enlever les GROUP BY et le trie sur le nom au passage (a moins qu'ils puissent y avoir deux grilles qui commence le même jour), et mettre un DISTINCT après le SELECT pour enlever les doublons.
Code : Tout sélectionner
SELECT DISTINCT foot_grille.id_grille, foot_grille.nom
FROM foot_grille
INNER JOIN foot_match ON foot_grille.id_grille = foot_match.id_grille
WHERE id_compet = ".$id_compet."
ORDER BY foot_match.date-
Aurelienazerty
- Webmaster / Président
- Messages : 26251
- Inscription : septembre 27, 2002, 9:41 pm
marche po
ça ne marche pas. La 3° journée se retrouve toujours après la 9°.
Edit: cette requete semble marcher par contre:
Edit: cette requete semble marcher par contre:
Code : Tout sélectionner
SELECT distinct foot_grille.id_grille, foot_grille.nom
FROM foot_grille
INNER JOIN foot_match ON foot_grille.id_grille = foot_match.id_grille and date = (SELECT min(m2.date) from foot_match m2 where foot_grille.id_grille = m2.id_grille)
WHERE id_compet = ".$id_compet."
ORDER BY date-
Nicolazerty
- l'élu
- Messages : 4121
- Inscription : septembre 27, 2002, 2:59 pm
-
Davidazerty
- l'élu
- Messages : 2443
- Inscription : octobre 12, 2002, 3:30 pm
-
Aurelienazerty
- Webmaster / Président
- Messages : 26251
- Inscription : septembre 27, 2002, 9:41 pm
nop
Non avant je faisais un simple tris sur la nom de la journée, et c'était pas top dans le sens où falais mettre des 01° journée pour que ça classe bien, et il me semble qu'il n'y a pas pas toujours des chiffres. Bref, là le résultats est bon, et niveau perf, vu que la requête n'est exécuté qu'une seule fois, ce n'est pas dramatique, quand tu vois le problème lié à ça et que tu vois la requête de calcul de classement: et Qui est exécuté je sais pas combien de fois dans le graph d'évolution, là tu te dis que les optimisations sont super importantes.
Code : Tout sélectionner
function tabPronostiqueur($grilleesclue=-1, $grilleVoulue = -1, $compet = -1, $id_saison = -1, $id_type_compet = -1, $id_groupe = -1) {
$saison = new foot_saison($id_saison);
$resultatfonction = array();
//V2 pour optimisation
$query = "FROM foot_pronostique
inner join foot_match on foot_match.id_match = foot_pronostique.id_match
inner join foot_grille on foot_grille.id_grille = foot_match.id_grille
inner join foot_competition on foot_competition.id_compet = foot_grille.id_compet
WHERE foot_match.vainqueur != -1 ";
if ($grilleesclue != -1) {
$query .= " AND foot_grille.id_grille != $grilleesclue ";
}
if ($grilleVoulue != -1) {
$query .= " AND foot_grille.id_grille = $grilleVoulue ";
}
if ($compet != - 1) {
$query .= " AND foot_competition.id_compet = $compet ";
}
if ($id_saison != -1) {
$query .= " AND foot_competition.id_saison = ".$id_saison;
}
if ($id_type_compet != -1) {
$query .= " AND foot_competition.type_compet = ".$id_type_compet;
}
if ($id_groupe != -1) {
$query .= " AND id_user in
(
SELECT user_id
FROM phpbb_user_group
where group_id = ".$id_groupe."
)
";
}
$query_fin= " GROUP BY id_user ";
//echo "SELECT count(foot_match.id_match) as nbProno , id_user ".$query.$query_fin."<br>";
$tab = $GLOBALS['bdd']->requete("SELECT count(foot_match.id_match) as nbProno , id_user ".$query.$query_fin);
foreach ($tab as $key => $resultat) {
$idusr = $resultat["id_user"];
$nbPronostiques = $resultat["nbProno"];
$resultatfonction[$idusr] = array();
$resultatfonction[$idusr]["idusr"] = $idusr;
$resultatfonction[$idusr]["point"] = 0;
$resultatfonction[$idusr]["pourcent"] = 0;
$resultatfonction[$idusr]["pourcentage"] = 0;
$resultatfonction[$idusr]["nbpronos"] = $nbPronostiques;
}
$tab = $GLOBALS['bdd']->requete("SELECT count(foot_match.id_match) as nbPoints , id_user ".$query." AND foot_match.vainqueur = foot_pronostique.vainqueur ".$query_fin);
foreach ($tab as $key => $resultat) {
$idusr = $resultat["id_user"];
$nbpoints = $resultat["nbPoints"];
$nbPronostiques = $resultatfonction[$idusr]["nbpronos"];
//Blague
/*if ($idusr == 4)
$nbpoints = $nbpoints - 50000;*/
/*if ($idusr == 5)
$nbpoints = $nbpoints + 20;
if ($idusr == 24)
$nbpoints = $nbpoints - 50000;*/
if ($nbPronostiques > 0 ) {
$pourcentage = number_format(round($nbpoints/$nbPronostiques*100, 2), 2, ',', ' ');
$pourcent = $nbpoints/$nbPronostiques*100;
} else {
$pourcent = 0;
$pourcentage = 0;
}
//MAJ des scores
$resultatfonction[$idusr]["point"] = $nbpoints;
$resultatfonction[$idusr]["pourcent"] = $pourcent;
$resultatfonction[$idusr]["pourcentage"] = $pourcentage;
}
//Fin V2
return $resultatfonction;
}Code : Tout sélectionner
function tableauEvolution($idcompet = -1, $idcompetType = -1, $idsaison = -1) {
/* Etape 1 récupérer les grilles classé par date croissantes
Attention, une grille n'a pas tous ses matchs en même temps
Il faut donc les classer en prennant le match le plus tot
*/
//Les participants
$query = "SELECT distinct id_user
FROM foot_pronostique
inner join foot_match on foot_match.id_match = foot_pronostique.id_match
inner join foot_grille on foot_match.id_grille = foot_grille.id_grille
inner join foot_competition on foot_competition.id_compet = foot_grille.id_compet
where foot_match.vainqueur != -1 ";
if ($idcompet != -1) {
$query .= " AND foot_competition.id_compet = ".$idcompet;
}
if ($idcompetType != -1) {
$query .= " AND foot_competition.type_compet = ".$idcompetType;
}
if ($idsaison != -1) {
$query .= " AND foot_competition.id_saison = ".$idsaison;
}
$tabParticipants = $GLOBALS['bdd']->requete($query);
$query = "SELECT distinct foot_grille.id_grille
FROM foot_match
inner join foot_grille on foot_match.id_grille = foot_grille.id_grille
inner join foot_competition on foot_competition.id_compet = foot_grille.id_compet
where vainqueur != -1 ";
if ($idcompet != -1) {
$query .= " AND foot_competition.id_compet = ".$idcompet;
}
if ($idcompetType != -1) {
$query .= " AND foot_competition.type_compet = ".$idcompetType;
}
if ($idsaison != -1) {
$query .= " AND foot_competition.id_saison = ".$idsaison;
}
$query .= " order by date";
$tab = $GLOBALS['bdd']->requete($query);
//die($query);
$resultatFonction = array();
$i = 0;
foreach ($tab as $key => $resultat_grille) {
$resultatFonction[$i] = array();
//On a besoin du nombre de match
$resultatFonction[$i]["nbmatchs"] = 0;
$query = "SELECT count(id_match) as nbmatchs
FROM `foot_match`
WHERE vainqueur != -1
AND `id_grille` =".$resultat_grille["id_grille"];
$tab2 = $GLOBALS['bdd']->requete($query);
//Recherche de la précédante valeur
if ($i != 0)
$j = $i-1;
else
$j = 0;
//echo "$i: ".$tab2[0]["nbmatchs"]."<br>";
$resultatFonction[$i]["nbmatchs"] = $tab2[0]["nbmatchs"] + $resultatFonction[$j]["nbmatchs"];
/* Etape 2 contruire le tableau résultat
Attention certains pronostiqueurs n'existaient pas avant
ou peuvent ne pas avoir pronostiqué une grille
=> parcourir le tableau de pronostiqueur mettre des 0, puis utiliser les valeur d'avant
/!\ penser qu'il faut recalculer les pourcentages
*/
//Initialisation du tableau
reset($tabParticipants);
foreach ($tabParticipants as $key2 => $resultat2) {
$iduser = $resultat2["id_user"];
$resultatFonction[$i][$iduser] = array();
$resultatFonction[$i][$iduser]["point"] = 0;
$resultatFonction[$i][$iduser]["pourcentage"] = 0;
$resultatFonction[$i][$iduser]["pourcent"] = 0;
$resultatFonction[$i][$iduser]["nbpronos"] = 0;
$resultatFonction[$i][$iduser]["idusr"] = $iduser;
//Recherche de la précédante valeur
if ($i != 0)
$j = $i-1;
else
$j = 0;
//On met la dernière valeur, elle sera mise à jour par la suite s'il le gars a pronostiqué
$old_nbpoints = $resultatFonction[$j][$iduser]["point"];
$old_nbpronos = $resultatFonction[$j][$iduser]["nbpronos"];
$old_pourcentage = $resultatFonction[$j][$iduser]["pourcentage"];
$old_pourcent = $resultatFonction[$j][$iduser]["pourcent"];
$resultatFonction[$i][$iduser]["point"] = $old_nbpoints;
$resultatFonction[$i][$iduser]["nbpronos"] = $old_nbpronos;
$resultatFonction[$i][$iduser]["pourcentage"] = $old_pourcentage;
$resultatFonction[$i][$iduser]["pourcent"] = $old_pourcent;
//if ($iduser == 4 or $iduser == 5) print $iduser.": Anciens point en $j: ".$old_nbpoints."<br>";
}
//Mise à jour des valeurs
$tableau = tabPronostiqueur(-1, $resultat_grille["id_grille"]);
foreach ($tableau as $key2 => $resultat2) {
$nbpoints = $resultat2["point"];
$nbpronos = $resultat2["nbpronos"];
$idusr = $key2;
//Recherche de la précédante valeur
if ($i != 0)
$j = $i-1;
else
$j = 0;
$old_nbpoints = $resultatFonction[$j][$idusr]["point"];
$old_nbpronos = $resultatFonction[$j][$idusr]["nbpronos"];
$new_nbpoints = $nbpoints + $old_nbpoints;
$new_nbpronos = $nbpronos + $old_nbpronos;
$new_pourcentage = number_format(round($new_nbpoints/$new_nbpronos*100, 2), 2, ',', ' ');
$new_pourcent = $new_nbpoints/$new_nbpronos*100;
//Mise à jour
//print("Ajout = $new_nbpoints<br>");
$resultatFonction[$i][$idusr]["point"] = $new_nbpoints;
$resultatFonction[$i][$idusr]["pourcentage"] = $new_pourcentage;
$resultatFonction[$i][$idusr]["pourcent"] = $new_pourcent;
$resultatFonction[$i][$idusr]["nbpronos"] = $new_nbpronos;
$resultatFonction[$i][$idusr]["idusr"] = $key2;
//if ($idusr == 4 or $idusr == 5) print $idusr.": MAJ point en $i: ".$new_nbpoints."<br>";
}
$i++;
}
//die("taille tableau: ".sizeof($resultatFonction));
return $resultatFonction;
}-
Aurelienazerty
- Webmaster / Président
- Messages : 26251
- Inscription : septembre 27, 2002, 9:41 pm
nous aussi
Mes couilles sur ton nez.
Le mattage de win n'est pas considéré comme une pratique sexuelle.
Le mattage de win n'est pas considéré comme une pratique sexuelle.
-
Nicolazerty
- l'élu
- Messages : 4121
- Inscription : septembre 27, 2002, 2:59 pm

