
<!DOCTYPE html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Evolution</TITLE>
</HEAD>
<link rel="stylesheet" href="admin.css">
<BODY>
<div align=center class=trTitle>- Statistiques Evolution Multi-Critères -</DIV>
<p>&nbsp;</p>
<script>
function func(textarea,val) {
	textarea.value=val;	
}
</script>

<?php
include("generic.inc");
include($BIB."bib_drapeaux.php3");

##################################
# Administration script defaults #
##################################

#* set_time_limit(600);

#############
# CONSTANTS #
#############

$DATE_FORMAT = "Y-m-d H:i:s";



###################
# START functions #
###################

function lStrToTime($str)
{
	$t = split("[ :-]",$str);
	return mktime($t[3],$t[4],$t[5],$t[1],$t[2],$t[0]);
}

function TimeToStr($aTime)
{
	global $DATE_FORMAT;
	return date($DATE_FORMAT,$aTime);
}

function fileDateFormat($aTime)
{
	global $LOG_FILE_DATE_FORMAT;
	return date($LOG_FILE_DATE_FORMAT,$aTime);
}

function showRow($row)
{
	static $iColor;
	
	$color = ($iColor % 2 == 0)? "#FFFFFF":"#E8E8E8";
	$iColor++;
	$t = explode(";",$row);
	echo "<tr bgcolor=".$color."  class='univers'>";
	for($r=0;$r<(count($t)-1);$r++)
	{
		echo "<td align=center>".$t[$r]."</td>";
	}
	echo "</tr>";
}

function NbrParis ($Parieur,$Date)
{
	$paris = main_db_query("SELECT count(*) AS total FROM Paris WHERE PlayerId='$Parieur' AND Date<='$Date' ");
	$pari = db_fetch_array($paris);
	$s = $pari[total];
	
	mysql_free_result($paris);
	
	return $s;
}

function filtre2paris($parismin,$parismax,$dateSup)
{
	$Req = main_db_query("SELECT PlayerId,COUNT(*) AS nbParis FROM Paris WHERE Paris.Date <='".$dateSup."' GROUP BY PlayerId");
	$chaine = "";
	while($ParisParJoueur = db_fetch_array($Req))
	{
		if ($ParisParJoueur[nbParis]>$parismin && $ParisParJoueur[nbParis]>$parismax && $chaine=="")
			$chaine .= $ParisParJoueur[PlayerId];
		elseif ($ParisParJoueur[nbParis]>$parismin && $ParisParJoueur[nbParis]>$parismax && $chaine!="")
			$chaine .= ",".$ParisParJoueur[PlayerId];
	}
	if ($chaine=="") $chaine=0;
	return $chaine;
}

#	les paramètres:
#	$Tableau est un tableau de tableaux
#	$TabMax indique quel tableau a la plus grande valeur,
#		par défaut, le premier donne la valeur la plus grande
#		servira à calculer automatiquement la taille du repère !!!
#	$Couleur est un tableau contenant autant de ligne que $Tableau de tableaux...
#		comme çà on a une couleur par tableau
#		$Couleur[3]='ff6600' indique que le $Tableau[3] sera graphé en orange
#	$TypeGraphe est un tableau contenant autant de ligne que $Tableau de tableaux...
#		$TypeGraphe[0]=0 pour tracer des points avec le $Tableau[0]
#		$TypeGraphe[5]=1 pour tracer des segments entre les points (par défaut) avec le $Tableau[5]
#		$TypeGraphe[2]=2 pour tracer des rectangle (histogramme) avec le $Tableau[2]
function array_to_graphe($Tableau,$TabMax=0,$Couleur,$TypeGraphe)
{
	# il faut graphique.php3 dans le meme répertoire
	require ('graphique.php3');
	
	# Creation du graphique
	$graphique = new graphique;
	$RepereOptimal = $graphique->calculrepereoptimal($Tableau[$TabMax],0);
	$graphique->repere(500,400,70,1,$RepereOptimal,'ffffff','000000','000000','ff6600','6666ff','dddddd');
	
	for ($i=0 ; $i<count($Tableau) ; $i++)
	{
		if($Couleur[$i] == "") $Couleur[$i] = "000000"; # noir par défaut
		
		# le traçage des points avec $graphique->tracepoint($Tableau[$i],$Couleur[$i]);
		if ($TypeGraphe[$i]==0)
			$graphique->tracepoint($Tableau[$i],$Couleur[$i]);
		# le traçage des rectangles avec $graphique->tracehisto($Tableau[$i],$Couleur[$i]);
		elseif ($TypeGraphe[$i]==2)
			$graphique->tracehisto($Tableau[$i],$Couleur[$i]);
		# le traçage des segments avec $graphique->tracesegment($Tableau[$i],$Couleur[$i]);
		else
			$graphique->tracesegment($Tableau[$i],$Couleur[$i]); # segments par défaut
	}
	
	# Visionnage du graphe et sa destruction dans la RAM pour ne le laisser qu'en fichier .gif.
	$affiche = 0;
	if (function_exists("imagegif")) {
	 	imagegif($graphique,'graphique.gif');
		echo "<img src='graphique.gif' border=0>";
		$affiche = 1;
	}
	elseif (function_exists("imageJpeg") && $affiche = 0) {
		imagejpeg($graphique,'graphique.jpg', 0.5);
		echo "<img src='graphique.jpg' border=0>";
		$affiche=1;
	}
	elseif (function_exists("imagePng") && $affiche = 0) {
		imagepng($graphique,'graphique.png');
		echo "<img src='graphique.png' border=0>";
		$affiche=1;
	}
	elseif (function_exists("imagewbmp") && $affiche = 0) {
		 imagewbmp($graphique,'graphique.wbmp');
		echo "<img src='graphique.wbmp' border=0>";
		$affiche=1;
	}
	else
		die("Pas de support graphique avec PHP sur ce serveur");
	imagedestroy($graphique);
}

#################
# END functions #
#################

if ($Pas)
{
	echo "<table align=center border=0 cellpadding=4 cellspacing=4 >";
	echo "<tr class='trTitle'>";
	echo "<td>Date</td>";
	echo "<td>Nbe joueurs ciblés</td>";
	echo "<td>% gain</td>";
	echo "<td>Gain</td>";
	echo "<td>% ciblés/totaux</td>";
	echo "<td>Nbe joueurs totaux</td>";
	echo "<td>% ciblés/dynasties</td>";
	echo "<td>Nbe dynasties</td>";
	echo "</tr>";
	
	# calcule la date max
	$dMax = db_fetch_array(main_db_query("SELECT MAX(Time) AS maxTime FROM Players"));
	$dMin = db_fetch_array(main_db_query("SELECT MIN(Time) AS minTime FROM Players"));
	$dateMax = (time_diff($dMax["maxTime"],$dateFin)>0)?$dMax["maxTime"]:$dateFin;
	$dateSup = (time_diff($dMin["minTime"],$dateDepart)<0)?$dMin["minTime"]:$dateDepart;
	$dateFin = $dateMax = ($dateMax)?$dateMax:$dMax["maxTime"];
	$dateDepart = $dateSup = ($dateSup)?$dateSup:$dMin["minTime"];
	
	$dateFin = (time_diff($dateDepart,$dateFin)<0)?"Date Antérieure ! ".$dateFin:$dateFin;
	$dateFin = (time_diff($dateDepart,$dateFin)==0)?"Date Egale ! ".$dateFin:$dateFin;
	
	$lastNbCibles = 0;
	
	# dans la table Members
	if ($age!="" || $genre!="" || $browser!="" || $os!="" || $zip!=""){
		$joinMembers = " LEFT JOIN Members ON Members.Id=Players.MemberId ";
		$sqlAge = ($age!="")?" AND Members.Age = $age ":"";
		$sqlGenre = ($genre!="")?" AND ( Members.Gender = '$genre' ) ":"";
		$sqlBrowser = ($browser == 1)?" AND ( Members.Browser LIKE '%IE 5%' || Members.Browser LIKE '%IE 4%' || Members.Browser LIKE '%IE 3%') ":"";
		$sqlBrowser .= ($browser == 2)?" AND ( Members.Browser LIKE'% I;%' || Members.Browser LIKE '% I)%' || Members.Browser LIKE '% I %') ":"";
		$sqlBrowser .= ($browser == 3)?" AND ( Members.Browser NOT LIKE '%IE 5%' && Members.Browser NOT LIKE '%IE 4%' && Members.Browser NOT LIKE '%IE 3%' && Members.Browser NOT LIKE'% I;%' && Members.Browser NOT LIKE '% I)%' && Members.Browser NOT LIKE '% I %') ":"";
		$sqlOs = ($os == 1)?" AND Members.Browser LIKE '%win%' ":"";
		$sqlOs .= ($os == 2)?" AND Members.Browser LIKE '%mac%' ":"";
		$sqlOs .= ($os == 3)?" AND ( Members.Browser NOT LIKE '%win%' && Members.Browser NOT LIKE '%mac%' ) ":"";
		$sqlZip = ($zip != "")?" AND LEFT (Members.Zip,2) IN ($zip) ":"";
	}
	
	#dans la table Players
	$sqlOffspringsMin = ($offspringsmin != "")?" AND Players.Offsprings > $offspringsmin":"";
	$sqlOffspringsMax = ($offspringsmax != "")?" AND Players.Offsprings < $offspringsmax":"";
	$sqlInscription = ($inscription == "d")?" AND Players.FatherPId ='0'":"";
	$sqlInscription .= ($inscription == "i")?" AND Players.FatherPId !='0'":"";
	$sqlFruit = ($fruit!="")?" AND Players.Fruit = '$fruit'":"";
	
	# dans la table Paris
	if ($matchs!=""){
		$joinParis = " LEFT JOIN Paris ON Paris.PlayerId=Players.Id ";
		$select = "Paris.PlayerId";
	}
	else $select = "Players.Id";

	while(time_diff($dateMax,$dateSup)<0)
	{
		$sqlMatchs = ($matchs!="")?" AND Paris.MatchId IN ($matchs) AND Paris.Date <='".$dateSup."' ":"";
		if ($parismin!="" || $parismax!="")	$sqlParis = " AND Players.Id IN (".filtre2paris($parismin,$parismax,$dateSup).") ";

/*
		$i=0;
		while ($cible = db_fetch_array($DbQuery)) #transformation en array multi-dimensionnel
		{
			$Cibles[$i] = $cible;
			$i++;
		}
		
		# DEUXIEME FILTRE = dans la table Paris
		if ($parismin!="" || $parismax!="")	$Cibles = filtre2paris($Cibles,$parismin,$parismax,$dateSup);
		$nbCibles = count($Cibles);
*/

		$Requete = "SELECT * FROM Players ".$joinMembers.$joinParis." WHERE Players.Time<='".$dateSup."'".$sqlAge.$sqlGenre.$sqlBrowser.$sqlOs.$sqlZip.$sqlOffspringsMin.$sqlOffspringsMax.$sqlInscription.$sqlFruit.$sqlParis.$sqlMatchs." GROUP BY ".$select." ";
		$nbCibles = db_num_rows(main_db_query($Requete));
		
		# pourcentage du gain en joueurs depuis le pas précédent
		if ($nbCibles>0 && $lastNbCibles>0) $pcNbCibles = round(($nbCibles-$lastNbCibles)*10000/$lastNbCibles)/100;
		elseif ($nbCibles>0 && $lastNbCibles==0) $pcNbCibles = 100;
		else $pcNbCibles = 0;
		
		#calcul du gain en joueurs depuis le pas précédent
		$gain = $nbCibles-$lastNbCibles;
		
		# nbr total de joueurs
		$nbTotal = db_fetch_array(main_db_query("SELECT COUNT(Id) AS total FROM Players WHERE Time<='".$dateSup."'"));
		
		# % de joueurs ayant les caractéristiques par rapport au nbr total de joueurs
		$pcCibleTotal = ($nbTotal[total]>0)?round($nbCibles*10000/$nbTotal[total])/100:0;
		
		# nbr total de dynasties
		$nbDynasties = db_fetch_array(main_db_query("SELECT COUNT(Id) AS total FROM Players WHERE Time<='".$dateSup."' AND FatherPId ='0'"));
		
		# % de joueurs ayant les caractéristiques par rapport au nbr de dynasties
		$pcCibleDynasties = ($nbDynasties[total]>0)?round($nbCibles*10000/$nbDynasties[total])/100:0;
		
		$m = $dateSup.";".
			$nbCibles.";".
			$pcNbCibles." %;".
			$gain.";".
			$pcCibleTotal." %;".
			$nbTotal[total].";".
			$pcCibleDynasties." %;".
			$nbDynasties[total].";".
			"\n";
		
		# DEBUG écran
		showRow($m);

		# incremente d'un pas
		$dateSup = TimeToStr(lStrToTime($dateSup)+$Pas);
		$lastNbCibles = $nbCibles;
		
		# on fabrique le tableau pour le graphe
		$j = lStrToTime($dateSup);
		$tab2tab[0][$j] = $gain;
		$tab2tab[1][$j] = $nbCibles;
		$tab2tab[2][$j] = $nbTotal[total];
	}
	
	echo "<tr class='trTitle'>";
	echo "<td>Date</td>";
	echo "<td>Nbe joueurs ciblés</td>";
	echo "<td>% gain</td>";
	echo "<td>Gain</td>";
	echo "<td>% ciblés/totaux</td>";
	echo "<td>Nbe joueurs totaux</td>";
	echo "<td>% ciblés/dynasties</td>";
	echo "<td>Nbe dynasties</td>";
	echo "</tr>";
	echo "</table>";
	
	# on fabrique la suite du tableau pour le graphe
	$coul[0] = '009900';
	$coul[1] = 'FF9900';
	$coul[2] = 'FFaa00';
	$typeG[0] = 2; # gain en histo et les autres en ligne car par défaut
	$typeG[1] = 1;
	$typeG[2] = 1;
}
?>

<p>&nbsp;</p>
<p><? if (function_exists("imagecreate")) array_to_graphe($tab2tab,0,$coul,$typeG); ?></p>
<p>&nbsp;</p>

<form name=main action='evolution.php3' method="post">
<table align=center border=0 cellpadding=2 cellspacing=5>
<tr>
	<td align=center colspan=2 class='trTitle'>
	le Tableau...
	</td>
</tr>
<tr>
	<td class='univers' width=50%>
	<INPUT name="dateDepart" value="<?php echo $dateDepart; ?>" size="21" class='univers'> &lt; Date &lt; <INPUT name="dateFin" value="<?php echo $dateFin; ?>" size="21" class='univers'><br>(au format AAAA-MM-JJ HH:MM:SS)
	</td>
	<td align=center class='univers' width=50%>
	Pas	<INPUT name="Pas" value="<?php echo $Pas; ?>" size="30" class='univers'>
	<br>(en secondes) <font style="FONT-FAMILY: Arial; font-size : xx-small; color=Red;"> champ obligatoire</font>
	&nbsp;<input type="button" value="Jour" onClick="javascript:func(main.Pas,'86400');" class='univers'>
	&nbsp;<input type="button" value="Sem" onClick="javascript:func(main.Pas,'604800');" class='univers'>
	&nbsp;<input type="button" value="Raz" onClick="javascript:func(main.Pas,'');" class='univers'></td>
	</td>
</tr>
<tr>
	<td align=center class='trTitle'>les Membres...</td>
	<td align=center class='trTitle'>les Joueurs...</td>
</tr>
<tr>
	<td rowspan="3" bgcolor="#E9E9E9">
	
<P class='univers'>Age
	<SELECT name="age" class='univers'>
		<OPTION value="" <? if($age>8 || $age<1) echo "selected"; ?>></OPTION>
		<OPTION value="1" <? if($age==1) echo "selected"; ?>>&lt; 13</OPTION>
		<OPTION value="2" <? if($age==2) echo "selected"; ?>>13-17</OPTION>
		<OPTION value="3" <? if($age==3) echo "selected"; ?>>18-24</OPTION>
		<OPTION value="4" <? if($age==4) echo "selected"; ?>>25-34</OPTION>
		<OPTION value="5" <? if($age==5) echo "selected"; ?>>35-44</OPTION>
		<OPTION value="6" <? if($age==6) echo "selected"; ?>>45-54</OPTION>
		<OPTION value="7" <? if($age==7) echo "selected"; ?>>55-64</OPTION>
		<OPTION value="8" <? if($age==8) echo "selected"; ?>>&gt; 64</OPTION>
	</SELECT></P>
	
<p class='univers'>Genre <SELECT name="genre" class='univers'>
		<OPTION value="" <? if($genre!="F" && $genre!="M") echo "selected"; ?>></OPTION>
		<OPTION value="F" <? if($genre=="F") echo "selected"; ?>>Féminin</OPTION>
		<OPTION value="M" <? if($genre=="M") echo "selected"; ?>>Masculin</OPTION>
		</select></P>

<P class='univers'>Browser
	<SELECT name="browser" class='univers'>
		<OPTION value="" <? if($browser<"1" || $browser>"3") echo "selected"; ?>></OPTION>
		<OPTION value="1" <? if($browser=="1") echo "selected"; ?>>Internet Explorer</OPTION>
		<OPTION value="2" <? if($browser=="2") echo "selected"; ?>>Netscape</OPTION>
		<OPTION value="3" <? if($browser=="3") echo "selected"; ?>>Autres</OPTION>
	</SELECT></P>
	
<P class='univers'>Système d'exploitation
	<SELECT name="os" class='univers'>
		<OPTION value="" <? if($os<"1" || $os>"3") echo "selected"; ?>></OPTION>
		<OPTION value="1" <? if($os=="1") echo "selected"; ?>>Windows</OPTION>
		<OPTION value="2" <? if($os=="2") echo "selected"; ?>>Mac</OPTION>
		<OPTION value="3" <? if($os=="3") echo "selected"; ?>>Linux & autres</OPTION>
	</SELECT></P>
	
<P class='univers'>Département
	<INPUT name="zip" size="30" value="<? echo $zip; ?>" class='univers'>
	<br>(séparés par des virgules)&nbsp;<input type="button" value="IdF" onClick="javascript:func(main.zip,'75,77,78,91,92,93,94,95');" class='univers'>
	&nbsp;<input type="button" value="Prov" onClick="javascript:func(main.zip,'01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,76,79,80,81,82,83,84,85,86,87,88,89,90,98');" class='univers'>
	&nbsp;<input type="button" value="Raz" onClick="javascript:func(main.zip,'');" class='univers'></P>
	
	</td>
	<td align="right" bgcolor="#F5F5F5">

<P class='univers'>
	<INPUT name="offspringsmin" value="<? echo $offspringsmin; ?>" size="10" class='univers'> &lt; Offsprings &lt; <INPUT name="offspringsmax" value="<? echo $offspringsmax; ?>" size="10" class='univers'></P>

	<p class='univers'>Inscription 
	<SELECT name="inscription" class='univers'>
		<OPTION value="" <? if($inscription!="d" && $inscription!="i") echo "selected"; ?>></OPTION>
		<OPTION value="d" <? if($inscription=="d") echo "selected"; ?>>directe</option>
		<option value="i" <? if($inscription=="i") echo "selected"; ?>>après invitation</option>
</select>
<P class='univers'>Fruit
	<SELECT name="fruit" class='univers'>
<?php
echo "<OPTION value=\"\" ";
if($fruit<0 || $fruit>$FRUITS-1 || $fruit=="")
	echo "selected";
echo "></OPTION>";

for ($i=0;$i<$FRUITS;$i++)
{
	echo "<OPTION value=$i ";
	if($fruit==$i && $fruit!="")
		echo "selected";
	echo ">$FRUIT_NAMES[$i]</OPTION>";
}
?>
	</SELECT></P>

	</td>
</tr>
<tr>
	<td align=center class='trTitle'>
		les Paris...
	</td>
</tr>
<tr>
	<td bgcolor="#C0C0C0" align=right>
	<P class='univers'>
	<INPUT name="parismin" size="10" value="<? if ($parismin!=-1)echo $parismin; ?>" class='univers'> &lt; Paris &lt; <INPUT name="parismax" size="10" value="<? if ($parismax!=100000) echo $parismax; ?>" class='univers'>
	</P>
	
<P class='univers'>Matchs
	<INPUT name="matchs" size="30" value="<? echo $matchs; ?>" class='univers'>
	<br>(séparés par des virgules)&nbsp;</P>
	
	</td>
</tr>
<tr>
	<td align=center colspan=2>
	<input type=hidden name=ok value=1>
	<input type="submit" value="Dessiner" class='univers'>&nbsp;
	<INPUT type="reset" value="Annuler" class='univers'>
	</td>
</tr>
</table>
</FORM>

</BODY>
</HTML>
