Soyez le premier à donner votre avis sur cette source.
Snippet vu 18 513 fois - Téléchargée 27 fois
<?php //********************************************************************************************* // Tables de Berger pour le volley // //********************************************************************************************* // // Sources : http://www.barrychessclub.org.uk/berger2001.htm (1) // Ligue de Poitou-Charentes de Volley-Ball (2) // // (1) : constitution des journees (methode) // (2) : melange des journees pour obtenir le championnat (deduction pour 6, 8, 10 equipes) // //********************************************************************************************* // Version : 0.1 // //********************************************************************************************* // // Principe : // - pour n equipes (n pair) // - constituer un tableau T1 de 2 colonnes et n/2 lignes // - remplir le tableau en commencant en haut a gauche dans le sens anti-horaire // 1 n // 2 n-1 // 3 n-2 // ... // n/2 n/2 +1 // - a partir de T1, on cree T2 en gardant n fixe en haut a droite // et en faisant tourner les autres d'un cran dans le sens horaire // 2 n // 3 1 // 4 n-1 // ... // n/2 +1 n/2 +2 // - on repete l'operation pour avoir n-1 tableaux // - la correspondance entre les tableaux Ti et les journees de championnat Ji // est alors : // J1 -> T1 // J2 -> Tn/2 // J3 -> Tn-1 // J4 -> Tn/2-1 // J5 -> Tn-2 // J6 -> Tn/2-2 // ... // Jn-2 -> T2 // Jn-1 -> Tn/2+1 // - pour les journees paires, pour le 1er match de la journee, on inverse // Domicile et Exterieur (donc pour l'equipe n). Sinon, elle ferait tous ses matchs aller // a l'exterieur... // //********************************************************************************************* // // Historique : // v.0.1 mars 2003 Creation // //********************************************************************************************* //----------------------------------- // Page pour test echo "<html><title>Tables de Berger</title><body>\n"; // Saisie du nombre d'equipes // Par defaut = 0 if ( ! isset($HTTP_POST_VARS['nb'])) $nb=0; echo "<form name='form' action='' method='post'>\n", "Nombre d'équipes du championnat :<br>\n", "<select name='nombre' onchange='form.nb.value=form.nombre[form.nombre.selectedIndex].value'>\n", "<option value='0'>----\n", "<option value='6'>5-6\n", "<option value='8'>7-8\n", "<option value='10'>9-10\n", "<option value='12'>11-12\n", "<option value='14'>13-14\n", "<option value='16'>15-16\n", "<option value='18'>17-18\n", "<option value='20'>19-20\n", "<option value='22'>21-22\n", "<option value='24'>23-24\n", "</select>\n", "<input type='hidden' name='nb' value=$nb>\n", "<input type='submit' name='submit' value='afficher'>\n", "</form>\n", "<br><br>source<a href='berger.php3.txt'>ici</a><br>\n", "<br><br>Fichier Excel pour comprendre<a href='berger.xls'>ici</a><br>\n"; if ( $nb > 0 ) { echo "<hr noshade>\n"; echo "Nombre d'équipes : ".$nb."<br>\n"; echo "Matchs aller uniquement<br>\n"; echo berger_affiche ( berger_calcule ($nb) ); } echo "</body></html>\n"; // Fin de la page //----------------------------------- //------------------------------------ // Fonction berger_calcule // // Parametres : nb_equipe = nombre d'equipes // Retour : tableau des journees a 3 dimensions // pour une journee j, le match m donne // $tableau[$j]["D"][$m] recoit $tableau[$j]["E"][$m] // // Calcule les journees // function berger_calcule ($nb_equipe) { // Si le nombre d'equipes est impair // on passe au nombre pair juste apres if ( ($nb_equipe % 2) == 1 ) $nb_equipe++; // Moitie des equipes $moitie=$nb_equipe/2; // Tableau de sortie a deux dimensions : journee, matchs $tableau=array(); for ($j=1; $j<=$nb_equipe-1; $j++) { $tableau[$j]=array(); $tableau[$j]["D"]=array(); // Domicile $tableau[$j]["E"]=array(); // Exterieur // Traitement particulier de la premiere ligne $tableau[$j]["D"][1]=$j; $tableau[$j]["E"][1]=$nb_equipe; for ($m=2; $m<=$moitie; $m++) { $dom=$j+$m-1; if ( $dom >= $nb_equipe ) $dom++; $ext=$nb_equipe+$j-$m; if ( $ext >= $nb_equipe ) $ext++; $tableau[$j]["D"][$m]= ( $dom % $nb_equipe ); $tableau[$j]["E"][$m]= ( $ext % $nb_equipe ); } } // On cree journee a partir de tableau // en "melangeant" les colonnes (tableau[journee]) $journee=array(); for ($j=1; $j<=$nb_equipe-1; $j++) { $journee[$j]=array(); $journee[$j]["D"]=array(); $journee[$j]["E"]=array(); } // 1ere journee $journee[1]=$tableau[1]; $journee[2]=$tableau[$nb_equipe-1]; // autres journees for ($j=2; $j<=$nb_equipe-1; $j++) { if ( ($j % 2) == 0) { // Cas $j pair $indice = ($nb_equipe / 2) - ( ($j -2)/2 ); } else { // Cas $j impair $indice = $nb_equipe - ( ($j-1) / 2 ); } $journee[$j]=$tableau[$indice]; } // On balaye les journees paires // pour alterner Domicile-Exterieur pour l'equipe $nb_equipe // donc uniquement pour le 1er match de chaque journee for ($j=1; $j<=$nb_equipe-1; $j++) { // Journee paire if ( ($j % 2) == 0 ) { // On recupere les valeurs $dom=$journee[$j]["D"][1]; $ext=$journee[$j]["E"][1]; // On inverse $journee[$j]["D"][1]=$ext; $journee[$j]["E"][1]=$dom; } } return $journee; } // //------------------------------------ //------------------------------------ // Fonction berger_affiche // // Parametres : tableau des journees a 3 dimensions // pour une journee j, le match m donne // $tableau[$j]["D"][$m] recoit $tableau[$j]["E"][$m] // Retour : chaine d'affichage des journees (table) // // Genere la table d'affichage des journess // function berger_affiche ($journee) { // Nombre de journees $nb_jour=sizeof($journee); // Largeur des colonnes $width=round(100/$nb_jour); // Nombre de matches ( (nombre de journees +1) / 2) $nb_match=($nb_jour+1)/2; // Initialisation de la table $sortie="<table width='100%' border='1'>\n"; // Ligne d'entete $sortie .= " <tr>\n"; for ($j=1; $j<=$nb_jour; $j++) { $sortie .= " <td align='center' width='".$width."%'><b>J ".$j."</b></td>\n"; } $sortie .= " </tr>\n"; // Affichage des matches for ($m=1; $m<=$nb_match; $m++) { $sortie .= " <TR>\n"; for ($j=1; $j<=$nb_jour; $j++) { $sortie .= " <td align='center' width='".$width."%'>".$journee[$j]["D"][$m]."-".$journee[$j]["E"][$m]."</td>\n"; } $sortie .= " </tr>\n"; } // Fermeture de la table $sortie .= "</table>\n"; return $sortie; } // //------------------------------------ ?>
merci pour cette source!! Vraiment pile poil ce dont j'avais besoin! Je sent le mal de tête disparaitre :p
Pour les commentaires, le peut que j'en ai lu m'a suffit pour la comprendre et voir les adaptations que j'aurais à faire.
Après divers test, tout est ok sur free. Encore merci
merci
j'ai testé le code mais un message d'erreru apparaît systématiquement :
"
Notice: Undefined variable: nb in c:\program files\easyphp1-7\www\berger\index.php on line 215
Notice: Undefined variable: nb in c:\program files\easyphp1-7\www\berger\index.php on line 221
"
j'ai testé plusieurs solutions (changemetn de variable, couper le code sur deux pages...) mais rien n'y fait.
pouvez vous m'aider ?
Vraiment parfait !
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.