[Prono-Foot™] - Améliorations / Suggestions

Venez discuter des résultats et de l'actualité sportive
Pensez à respecter l'adversaire

Faut il mettre les côtes des matchs ?

Oui
13
68%
Non
4
21%
Ne se prononce pas
2
11%
 
Nombre total de votes : 19

Avatar de l’utilisateur
Aurelienazerty
Webmaster / Président
LAN : 127
Réactions :
Messages : 25544
Inscription : septembre 27, 2002, 9:41 pm

ou les saisir

Message par Aurelienazerty »

Dernier message de la page précédente :

De l'autre côté faut toutes les saisir.
Là ça t'économise 9 clics sur le boutons ajouter un match et 9 chargement de page.
Avatar de l’utilisateur
Aurelienazerty
Webmaster / Président
LAN : 127
Réactions :
Messages : 25544
Inscription : septembre 27, 2002, 9:41 pm

fait

Message par Aurelienazerty »

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 ?
Avatar de l’utilisateur
Aurelienazerty
Webmaster / Président
LAN : 127
Réactions :
Messages : 25544
Inscription : septembre 27, 2002, 9:41 pm

C'est très moche

Message par Aurelienazerty »

Christophe 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, choisir toutes les grilles à venir dans la 3° liste
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.)
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.
Avatar de l’utilisateur
Nicolazerty
l'élu
LAN : 41
Réactions :
Messages : 4116
Inscription : septembre 27, 2002, 2:59 pm

Message par Nicolazerty »

BUG ALERT!!!!!
il y a des soucis dans le pronoflash, il ne met pas un résultat pour tous les matchs...
Résistance !
Avatar de l’utilisateur
Aurelienazerty
Webmaster / Président
LAN : 127
Réactions :
Messages : 25544
Inscription : septembre 27, 2002, 9:41 pm

oki

Message par Aurelienazerty »

C'est dur à le refaire ce bug.
Avatar de l’utilisateur
Aurelienazerty
Webmaster / Président
LAN : 127
Réactions :
Messages : 25544
Inscription : septembre 27, 2002, 9:41 pm

Les groupes

Message par Aurelienazerty »

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 ?
Avatar de l’utilisateur
Nicolazerty
l'élu
LAN : 41
Réactions :
Messages : 4116
Inscription : septembre 27, 2002, 2:59 pm

Message par Nicolazerty »

bonne idée j'y avais pensé il fut un temps
Résistance !
Avatar de l’utilisateur
Aurelienazerty
Webmaster / Président
LAN : 127
Réactions :
Messages : 25544
Inscription : septembre 27, 2002, 9:41 pm

done

Message par Aurelienazerty »

Nicolazerty a écrit :BUG ALERT!!!!!
il y a des soucis dans le pronoflash, il ne met pas un résultat pour tous les matchs...
C'est corrigé
Avatar de l’utilisateur
Aurelienazerty
Webmaster / Président
LAN : 127
Réactions :
Messages : 25544
Inscription : septembre 27, 2002, 9:41 pm

euro

Message par Aurelienazerty »

Est ce que quelqu'un peut me trouver le trophée de l'euro:

Image

Sur fond blanc

Merci
Avatar de l’utilisateur
Nicolazerty
l'élu
LAN : 41
Réactions :
Messages : 4116
Inscription : septembre 27, 2002, 2:59 pm

Message par Nicolazerty »

photoshop...
Résistance !
Avatar de l’utilisateur
Aurelienazerty
Webmaster / Président
LAN : 127
Réactions :
Messages : 25544
Inscription : septembre 27, 2002, 9:41 pm

nop

Message par Aurelienazerty »

Je l'ai pas sur place, et y a des reflets verts merdique sur le bas de la coupe, donc si il y a une autre image qui demande moins de traitement, c'est mieux.
Avatar de l’utilisateur
Nicolazerty
l'élu
LAN : 41
Réactions :
Messages : 4116
Inscription : septembre 27, 2002, 2:59 pm

Message par Nicolazerty »

Image
Résistance !
Avatar de l’utilisateur
Aurelienazerty
Webmaster / Président
LAN : 127
Réactions :
Messages : 25544
Inscription : septembre 27, 2002, 9:41 pm

Re: Les groupes

Message par Aurelienazerty »

Merci nico !
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 fait. Normalement... ça fonctionne.
C'est opérationnel sur la page d'index de pronofoot mais aussi sur le tableau récap
Avatar de l’utilisateur
Ludao
Obiwan Kenobi
LAN : 49
Réactions :
Messages : 1255
Inscription : août 7, 2004, 12:20 pm

Message par Ludao »

Après mise à jour des heures pour les premières journées de L1, il se trouve que la 3ème journée est passée entre la 9ème et la 10ème dans la liste.

Tu dois faire le tri sur la dernière affiche de la journée... fais le plutot sur la première affiche... non ?
Ludao
ImageImage
Avatar de l’utilisateur
Aurelienazerty
Webmaster / Président
LAN : 127
Réactions :
Messages : 25544
Inscription : septembre 27, 2002, 9:41 pm

date

Message par Aurelienazerty »

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:

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 
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
Avatar de l’utilisateur
Davidazerty
l'élu
LAN : 73
Réactions :
Messages : 2443
Inscription : octobre 12, 2002, 3:30 pm

Message par Davidazerty »

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.

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
Avatar de l’utilisateur
Aurelienazerty
Webmaster / Président
LAN : 127
Réactions :
Messages : 25544
Inscription : septembre 27, 2002, 9:41 pm

dank

Message par Aurelienazerty »

Merci, je teserais ça lorsque j'aurais le temps.
Avatar de l’utilisateur
Aurelienazerty
Webmaster / Président
LAN : 127
Réactions :
Messages : 25544
Inscription : septembre 27, 2002, 9:41 pm

marche po

Message par Aurelienazerty »

ça ne marche pas. La 3° journée se retrouve toujours après la 9°.

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
Avatar de l’utilisateur
Nicolazerty
l'élu
LAN : 41
Réactions :
Messages : 4116
Inscription : septembre 27, 2002, 2:59 pm

Message par Nicolazerty »

oui à part un select imbriqué je vois pas la solution... mais plutot qu'un min(date) je ferais plutot un max du count en regroupant sur la date de la journée, comme ca en cas de match avancé pour une journée pas de soucis...
Résistance !
Avatar de l’utilisateur
Aurelienazerty
Webmaster / Président
LAN : 127
Réactions :
Messages : 25544
Inscription : septembre 27, 2002, 9:41 pm

SQL

Message par Aurelienazerty »

ça donne quoi en SQL?
Avatar de l’utilisateur
Davidazerty
l'élu
LAN : 73
Réactions :
Messages : 2443
Inscription : octobre 12, 2002, 3:30 pm

Message par Davidazerty »

La requete imbriqué j'y avais pensé mais niveau performance c'est pas terrible.
Pour n'avoir qu'une simple jointure on peut remettre le group sur la grille et trié sur le nom de la journée, puisque de toute facon c'est le bute recherché.
Avatar de l’utilisateur
Aurelienazerty
Webmaster / Président
LAN : 127
Réactions :
Messages : 25544
Inscription : septembre 27, 2002, 9:41 pm

nop

Message par Aurelienazerty »

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:

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;
}
et

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;
}
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.
Avatar de l’utilisateur
Nicolazerty
l'élu
LAN : 41
Réactions :
Messages : 4116
Inscription : septembre 27, 2002, 2:59 pm

Re: 3

Message par Nicolazerty »

Aurelienazerty a écrit :
  • Moi: Journée 1 à 13
  • Nico: Journée 14 à 26
  • Ludo: Journée 27 à 38
y en a un qui glande...
Résistance !
Avatar de l’utilisateur
Ludao
Obiwan Kenobi
LAN : 49
Réactions :
Messages : 1255
Inscription : août 7, 2004, 12:20 pm

Re: 3

Message par Ludao »

Nicolazerty a écrit :y en a un qui glande...
Hé oh, j'ai une vie sexuelle (moi)
Ludao
ImageImage
Avatar de l’utilisateur
Aurelienazerty
Webmaster / Président
LAN : 127
Réactions :
Messages : 25544
Inscription : septembre 27, 2002, 9:41 pm

nous aussi

Message par Aurelienazerty »

Mes couilles sur ton nez.
Le mattage de win n'est pas considéré comme une pratique sexuelle.
Avatar de l’utilisateur
Nicolazerty
l'élu
LAN : 41
Réactions :
Messages : 4116
Inscription : septembre 27, 2002, 2:59 pm

Message par Nicolazerty »

et le boulot ca sert à quoi???
Résistance !