Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ARBRE GÉNÉRÉ AUTOMATIQUEMENT POUR UN TOURNOI


Information sur la source

Catégorie :Astuces Classé sous : tournoi, arbre Niveau : Initié Date de création : 19/10/2006 Vu / téléchargé: 5 536 / 487

Note :
2 / 10 - par 1 personne
2,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

Description

Bonjour a tous ,

Voici mon premier code sur phpcs ,ce code est une partie du site que je suis en train de réalisé , il permet de généré un arbre dynamiquement en fonction du nombre de participant voulu , c'est la version 1 , je compte implémenté une gestion des poules , et accelerer egalement la rapiditer car pour un grand nombre de joueur , le code est assez long à s'éxecuter.
 

Source

  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  • <html>
  • <head>
  • <title>Arbre test</title>
  • <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" class="Style1">
  • </head>
  • <body>
  • <?
  • /***********************************************/
  • /* Si nb_equipe declarer */
  • /***********************************************/
  • if(isset($_GET['nb_equipe']))
  • {
  • /***********************************************/
  • /* Les vars globales */
  • /***********************************************/
  • $nb_equipe = $_GET['nb_equipe'];
  • $nb_col = 1;
  • $nb_col_p = 1;
  • $deb_col = 0;
  • $esp_col = 0;
  • $is_case = 1;
  • /***********************************************/
  • /* Les vars de style */
  • /***********************************************/
  • $height = 15;
  • $width = 80;
  • /***********************************************/
  • /* Calculs globaux */
  • /***********************************************/
  • $max_col = 0;
  • for($i = 0 ; pow(2 , $i) <= $nb_equipe ; $i++) $max_col += 2;
  • $max_col--;
  • $nb_ligne = (($nb_equipe-1) *4) + 2;
  • /* On Commence la table (pour les colonnes) */
  • echo "<table cellpadding='0' cellspacing='0'><tr>";
  • /* On fait une boucle jusqu'au nombre maximum de colonne */
  • for($nb_col ; $nb_col <= $max_col ; $nb_col++)
  • {
  • /* On reinitilise quelques variable et on affiche une nouvelle colonne */
  • echo "<td valign='top' width='".$width."'>";
  • $is_case = 1;
  • /* Si la colonne n'est pas une colonne lien */
  • if($nb_col % 2 == 1)
  • {
  • /* Certain calcul */
  • $deb_col = pow(2 , $nb_col_p) - 1;
  • $esp_col = $deb_col * 2;
  • /* Une boucle du nombre de ligne dans une colonne */
  • for($i = 1;$i < $nb_ligne ; $i++)
  • {
  • /* Si on a pas atteint le premier affichage */
  • if($i < $deb_col)
  • {
  • echo "<table cellpadding='0' cellspacing='0' border='0' height='".$height."'><tr><td></td></tr></table>";
  • }
  • /* si c'est une case ( de hauteur 2 * $height ) et que c'est bien la premiere ligne de la case (grace au modulo) */
  • else if($is_case == 1 && $i % 2 == 1)
  • {
  • /* Le texte d'affichage de la case */
  • echo "<table cellpadding='0' cellspacing='0' border='1' height='".(2*$height)."' bgcolor='#8080FF' width='".$width."' align='center'><tr><td width='".$width."' align='center'><font size='1'>".$i."</font></td></tr></table>";
  • $i += 2;
  • $is_case = 0;
  • }
  • /*Sinon :)
  • else
  • {
  • echo "<table cellpadding='0' cellspacing='0' border='0' height='".$height."'><tr><td></td></tr></table>";
  • }*/
  • /*rapiditer on saute directement les espaces vides et on declare qu'il va y avoir de nouveau une case */
  • if($is_case == 0 && $i % 2 == 1)
  • {
  • echo "<table cellpadding='0' cellspacing='0' border='0' height='".($esp_col)*$height."'><tr><td></td></tr></table>";
  • $i += $esp_col -1;
  • $is_case = 1;
  • }
  • }
  • }
  • /*************************************************/
  • /* Si c'est une colonne lien */
  • /* Le plus chiant */
  • /*************************************************/
  • else if($nb_col % 2 == 0)
  • {
  • /* On change quelques variables */
  • $nb_col_pair = $nb_col;
  • $deb_col = pow(2 , $nb_col_p);
  • $nb_col_p++;
  • $esp_col = $deb_col * 2;
  • /* Meme boucle que tout l'heure boucle dunombre de ligne */
  • for($i = 1 ; $i < $nb_ligne ; $i++)
  • {
  • /* Pareil : si aucun affichage encore */
  • if($i < $deb_col)
  • {
  • echo "<table cellpadding='0' cellspacing='0' border='0' height='".$height."'><tr><td></td></tr></table>";
  • }
  • /* Si on doit afficher les liens */
  • else if($is_case == 1 && $i % 2 == 0)
  • {
  • echo "<table cellpadding='0' cellspacing='0' border='0' height='".$esp_col*$height."'>";
  • /* Je fonctionne comme ça , on fait une boucle du nombre de ligne consécutive pour un lien */
  • for ($i2 = 1 ; $i2 <= $esp_col ; $i2++)
  • {
  • /* Si premiere ligne */
  • if($i2 == 1)
  • {
  • echo "<tr><td width='".($width)."' height='".$height."' valign='top'>
  • <table cellpadding='0' cellspacing='0' border='0'><tr><td height='".$height."' valign='top' width='".($width/2 - 2)."'>
  • <table cellpadding='0' cellspacing='0' border='0'><tr height='4'><td bgcolor='#000000' width='".($width/2 - 2)."'></td></tr>
  • <tr height='".($height-4)."'><td bgcolor='#FFFFFF'></td></tr></table></td>
  • <td width='4' height='".$height."' bgcolor='#000000'></td>
  • <td height='".$height."' bgcolor='#FFFFFF' width='".($width/2 - 2)."'></td></tr></table></td></tr>";
  • }
  • /* Si ligne du milieu */
  • else if($i2 == ($esp_col)/2 )
  • {
  • echo "<tr><td width='".($width)."' height='".$height."'>
  • <table cellpadding='0' cellspacing='0' border='0'><tr><td height='".$height."' bgcolor='#FFFFFF' width='".($width/2 - 2)."'></td>
  • <td bgcolor='#000000' width='4' height='".$height."'></td>
  • <td height='".$height."' width='".($width/2 - 2)."'>
  • <table cellpadding='0' cellspacing='0' border='0'>
  • <tr height='".(($height/2) +2 )."'><td bgcolor='#FFFFFF'></td></tr>
  • <tr height='4'><td bgcolor='#000000' width='".($width/2 - 2)."'></td></tr>
  • <tr height='".(($height/2)-6)."'><td bgcolor='#FFFFFF'></td></tr>
  • </table></td></tr></table></td></tr>";
  • }
  • /* Si derniere ligne */
  • else if($i2 == ($esp_col))
  • {
  • echo "<tr><td width='".($width)."' height='".$height."' valign='bottom'>
  • <table cellpadding='0' cellspacing='0' border='0'><tr><td height='".$height."' valign='bottom' width='".($width/2 - 2)."'>
  • <table cellpadding='0' cellspacing='0' border='0'><tr height='".($height-4)."'><td bgcolor='#FFFFFF'></td></tr>
  • <tr height='4'><td bgcolor='#000000' width='".($width/2 - 2)."'></td></tr></table></td>
  • <td width='4' bgcolor='#000000' height='".$height."'></td>
  • <td height='".$height."' bgcolor='#FFFFFF' width='".($width/2 - 2)."'></td></tr></table></td></tr>";
  • $is_case = 0;
  • }
  • /* Si ligne verticale */
  • else
  • {
  • echo "<tr><td width='".($width)."' height='".$height."' valign='top'>
  • <table cellpadding='0' cellspacing='0' border='0'><tr><td bgcolor='#FFFFFF' width='".($width/2 - 2)."' height='".$height."'></td>
  • <td width='4' bgcolor='#000000' height='".$height."'></td>
  • <td bgcolor='#FFFFFF' height='".$height."' width='".($width/2 - 2)."'></td></tr></table></td></tr>";
  • }
  • }
  • /* on incrémente le nobre de ligne du nombre de ligne consécutive pour un lien */
  • $i += $esp_col;
  • }
  • /* Sinon
  • else
  • {
  • echo "<table cellpadding='0' cellspacing='0' border='0' height='".$height."'><tr><td></td></tr></table>";
  • }*/
  • /*Si on doit afficher des espaces , on les affiche avant d'éecuter une nouvelle fois la boucle , pour a rapiditer */
  • if($is_case == 0 && $i % 2 == 0)
  • {
  • echo "<table cellpadding='0' cellspacing='0' border='0' height='".$esp_col*$height."'><tr><td></td></tr></table>";
  • $i += $esp_col - 1;
  • $is_case = 1;
  • }
  • }
  • }
  • /* On ferme la colonne */
  • echo "</td>";
  • /*Fin de la premiere boucle */
  • }
  • /*On ferme la table */
  • echo "</tr></table>";
  • }
  • /*******************************************/
  • /*Si on a pas renseigner le nombre d'équipe*/
  • /*******************************************/
  • else
  • {
  • ?>
  • <form action="#" method="get" name="nb_equipe">
  • Nombre d'équipe ? <input type="text" name="nb_equipe" value="4">
  • <input type="submit" name="OK">
  • </form>
  • <?
  • }
  • ?>
  • </body>
  • </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Arbre test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" class="Style1">
</head>
<body>

<?
/***********************************************/
/*         Si nb_equipe declarer               */
/***********************************************/

if(isset($_GET['nb_equipe']))
{

/***********************************************/
/*        Les vars globales                    */
/***********************************************/

$nb_equipe = $_GET['nb_equipe'];

$nb_col = 1;
$nb_col_p = 1;
$deb_col = 0;
$esp_col = 0;
$is_case = 1;

/***********************************************/
/*            Les vars de style                */
/***********************************************/
$height = 15;
$width = 80;

/***********************************************/
/*          Calculs globaux                    */
/***********************************************/
$max_col = 0;
	for($i = 0 ; pow(2 , $i) <= $nb_equipe ; $i++) $max_col += 2;
	$max_col--;
$nb_ligne = (($nb_equipe-1) *4) + 2;

/* On Commence la table (pour les colonnes) */
echo "<table cellpadding='0' cellspacing='0'><tr>";

/* On fait une boucle jusqu'au nombre maximum de colonne */
for($nb_col ; $nb_col <= $max_col ; $nb_col++)
{



	/* On reinitilise quelques variable et on affiche une nouvelle colonne */
	echo "<td valign='top' width='".$width."'>";
	$is_case = 1;
	
/* Si la colonne n'est pas une colonne lien */	
if($nb_col % 2 == 1)
{
	/* Certain calcul */
	$deb_col = pow(2 , $nb_col_p) - 1;
	$esp_col = $deb_col * 2;
	
	/* Une boucle du nombre de ligne dans une colonne */
  for($i = 1;$i < $nb_ligne ; $i++)
	{
	  /* Si on a pas atteint le premier affichage */
		if($i < $deb_col)
		{	
			echo "<table cellpadding='0' cellspacing='0' border='0' height='".$height."'><tr><td></td></tr></table>";
		}
		
		/* si c'est une case ( de hauteur 2 * $height ) et que c'est bien la premiere ligne de la case (grace au modulo) */
		else if($is_case == 1 && $i % 2 == 1)
		{
			/* Le texte d'affichage de la case */
			echo "<table cellpadding='0' cellspacing='0' border='1' height='".(2*$height)."' bgcolor='#8080FF' width='".$width."' align='center'><tr><td width='".$width."' align='center'><font size='1'>".$i."</font></td></tr></table>";
			$i += 2;
			$is_case = 0;
		}
		/*Sinon :) 
		else
		{
			echo "<table cellpadding='0' cellspacing='0' border='0' height='".$height."'><tr><td></td></tr></table>";
		}*/
		/*rapiditer on saute directement les espaces vides et on declare qu'il va y avoir de nouveau une case */
		if($is_case == 0 && $i % 2 == 1)
		{
			echo "<table cellpadding='0' cellspacing='0' border='0' height='".($esp_col)*$height."'><tr><td></td></tr></table>";
			$i += $esp_col -1;
			$is_case = 1;
		}
	  
	}
	
	
}

/*************************************************/
/*          Si c'est une colonne lien            */
/*            Le plus chiant                     */
/*************************************************/
else if($nb_col % 2 == 0)
{
  /* On change quelques variables */
	$nb_col_pair = $nb_col;
	
	$deb_col = pow(2 , $nb_col_p);
	$nb_col_p++;
	$esp_col = $deb_col * 2;
	
	/* Meme boucle que tout  l'heure boucle dunombre de ligne */
	for($i = 1 ; $i < $nb_ligne ; $i++)
	{
	  /* Pareil : si aucun affichage encore */
		if($i < $deb_col)
		{	
			echo "<table cellpadding='0' cellspacing='0' border='0' height='".$height."'><tr><td></td></tr></table>";
		}
		
		/* Si on doit afficher les liens */
		else if($is_case == 1 && $i % 2 == 0)
		{
			echo "<table cellpadding='0' cellspacing='0' border='0' height='".$esp_col*$height."'>";
			
			/* Je fonctionne comme ça , on fait une boucle du nombre de ligne consécutive pour un lien */
			for ($i2 = 1 ; $i2 <= $esp_col ; $i2++)
			{
			  /* Si premiere ligne */
				if($i2 == 1)
				{
					echo "<tr><td width='".($width)."' height='".$height."' valign='top'>
									<table cellpadding='0' cellspacing='0' border='0'><tr><td height='".$height."' valign='top' width='".($width/2 - 2)."'>
															<table cellpadding='0' cellspacing='0' border='0'><tr height='4'><td bgcolor='#000000' width='".($width/2 - 2)."'></td></tr>
															<tr height='".($height-4)."'><td bgcolor='#FFFFFF'></td></tr></table></td>
									<td width='4' height='".$height."' bgcolor='#000000'></td>
									<td height='".$height."' bgcolor='#FFFFFF' width='".($width/2 - 2)."'></td></tr></table></td></tr>";
				}
				/* Si ligne du milieu */
				else if($i2 == ($esp_col)/2 )
				{
					echo "<tr><td width='".($width)."' height='".$height."'>
									<table cellpadding='0' cellspacing='0' border='0'><tr><td height='".$height."' bgcolor='#FFFFFF' width='".($width/2 - 2)."'></td>
									<td bgcolor='#000000' width='4' height='".$height."'></td>
									<td height='".$height."' width='".($width/2 - 2)."'>
															<table cellpadding='0' cellspacing='0' border='0'>
															<tr height='".(($height/2) +2 )."'><td bgcolor='#FFFFFF'></td></tr>
															<tr height='4'><td bgcolor='#000000' width='".($width/2 - 2)."'></td></tr>
															<tr height='".(($height/2)-6)."'><td bgcolor='#FFFFFF'></td></tr>
															</table></td></tr></table></td></tr>";
				}
				/* Si derniere ligne */
				else if($i2 == ($esp_col))
				{
					echo "<tr><td width='".($width)."' height='".$height."' valign='bottom'>
									<table cellpadding='0' cellspacing='0' border='0'><tr><td height='".$height."' valign='bottom' width='".($width/2 - 2)."'>
															<table cellpadding='0' cellspacing='0' border='0'><tr height='".($height-4)."'><td bgcolor='#FFFFFF'></td></tr>
															<tr height='4'><td bgcolor='#000000' width='".($width/2 - 2)."'></td></tr></table></td>
									<td width='4' bgcolor='#000000' height='".$height."'></td>
									<td height='".$height."' bgcolor='#FFFFFF' width='".($width/2 - 2)."'></td></tr></table></td></tr>";
					$is_case = 0;
				}
				/* Si ligne verticale */
				else
				{
					echo "<tr><td width='".($width)."' height='".$height."' valign='top'>
									<table cellpadding='0' cellspacing='0' border='0'><tr><td bgcolor='#FFFFFF' width='".($width/2 - 2)."' height='".$height."'></td>
									<td width='4' bgcolor='#000000' height='".$height."'></td>
									<td bgcolor='#FFFFFF' height='".$height."' width='".($width/2 - 2)."'></td></tr></table></td></tr>";
				}
			}		 
			/* on incrémente le nobre de ligne du nombre de ligne consécutive pour un lien */
			$i += $esp_col;
			
		}
		
		/* Sinon 
		else
		{
			echo "<table cellpadding='0' cellspacing='0' border='0' height='".$height."'><tr><td></td></tr></table>";
		}*/
		
		/*Si on doit afficher des espaces , on les affiche avant d'éecuter une nouvelle fois la boucle , pour a rapiditer */
		if($is_case == 0 && $i % 2 == 0)
		{
			echo "<table cellpadding='0' cellspacing='0' border='0' height='".$esp_col*$height."'><tr><td></td></tr></table>";
			$i += $esp_col - 1;
			$is_case = 1;
	  }
	}
}

/* On ferme la colonne */
echo "</td>";

/*Fin de la premiere boucle */
}

/*On ferme la table */
echo "</tr></table>";


}

/*******************************************/
/*Si on a pas renseigner le nombre d'équipe*/
/*******************************************/

else
{
	?>
	<form action="#" method="get" name="nb_equipe">
	Nombre d'équipe ? <input type="text" name="nb_equipe" value="4">
	<input type="submit" name="OK">
	</form>
	<?
}
?>
</body>
</html>

Conclusion

Bugs connu :
   - Plein de ligne inutile ce rajoute en bas de la page , si quelqu'un trouve plus rapidement que moi la solution , qu'il le dise.

Si vous avez des amélioration supplémentaire a me suggéré , je suis toujours a votre écoute.

La capture d'écran arrive :)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Gecko62 le 23/10/2006 15:40:19

Bonjour et merci,
j'attends avec impatience la gestion des poules (pour mon club de badminton cela pourrait être fort utile).
A bientôt cordialement

signaler à un administrateur
Commentaire de morpheus57 le 30/10/2006 09:25:29

Une petite remarque :
Tu pourrais utiliser des fonctions pour faciliter la lecture de ton code.
Cela permettrait aussi de séparer le HTML du PHP : voir s'il faut utiliser un moteur de template

signaler à un administrateur
Commentaire de knasucre le 31/10/2006 12:49:30

Ok je vais voir pour l'utilisation des fonctions et je travaille sur le systeme de poule , j'ai résolu le problème des lignes vides à la fin du code généré mais je ne suis pas chez moi donc je ne peut pas mettre à jour , mais c'est résolu c'est déja ça :).
Allez bonne prog a tous et je vais revenir bientot.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Tournoi avec arbre [ par masseur ] Bonsoir. J'aurais voulu savoir comment faire pour g&#233;n&#233;rer des arbres de tournois en automatiques selon le nombre de personne. COmment s'y pr arbre de défailance VB [ par cosmonul ] bonjour a tous je cherche des exemples de codes qui traiterait de la cr&#233;ation d'un arbre de d&#233;faillance en VB.merci d'avance pour votre aide Liste déroulante [ par Vanessa01 ] Bonjour,J'ai fait une liste déroulante qui contient des tournois, seulement j'aimerais que lorsque je sélectionne un tounoi que mon choix reste sur le compter les fils par niveaux dans un arbre ordonnée [ par paroleparleet ] Bonsoir à tous, J'aimerais que vous puissiez m'aider à resoudre un problème que j'ai rencontré dans mon projet.je dois compter le nombre de fils par n arbre généalogique-collapse tree [ par rami3b ] bonjourexiste-t-il un équivalent libre de yfiles ajax -http://www.yworks.com/en/products_yfilesajax_about.htmlje veut afficher une arbre c arbre généalogique-collapse tree [ par rami3b ] bonjourexiste-t-il un équivalent libre de yfiles ajax -http://www.yworks.com/en/products_yfilesajax_about.htmlje veut afficher une arbre c


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.