Calendrier football

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Calendrier football

Re: Calendrier football

par sirakawa » 17 nov. 2014, 13:37

Il me semble que en faisant un tableau comme ceci
<?PHP

:: tableau detoutes les rencontres possibles
$tab = array(
0 => array(1,2),
1 => array(1,3),
2 => array(1,4),
3 => array(1,5),
4 => array(1,6),
5 => array(2,3),
6 => array(2,4),
7 => array(2,5),
8 => array(2,6),
9 => array(3,4),
10 => array(3,5),
11 => array(3,6),
12 => array(4,5),
13 => array(4,6),
14 => array(5,6),

);
print_r($tab);
shuffle($tab); // le tableau est mélangé
print "<br>";
print_r($tab);
?>
eten se fiant au tableau pour piocvher dans la bdd,ça devrait aller

Calendrier football

par souhailmerroun » 17 nov. 2014, 11:10

Bonjour, je veux créer un algorithme de football a partir d'une table clubs
CREATE TABLE clubs(  
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,   
    nom VARCHAR(255),   
    PRIMARY KEY (id));
remplir une table calendrier
CREATE TABLE calendrier(   
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,        
    journee INT(10) UNSIGNED,    
    equipe1 INT(10) UNSIGNED,     
    equipe2 INT(10) UNSIGNED,    
    PRIMARY KEY (id),
    CONSTRAINT clubs_calendrier_equipe1 FOREIGN KEY (equipe1) REFERENCES clubs(id) ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT clubs_calendrier_equipe2 FOREIGN KEY (equipe2) REFERENCES clubs(id) ON DELETE CASCADE ON UPDATE CASCADE);
je veux que chaque equipe joue contre tous les autres 2 fois et chaque jour chaque equipe ne peux jouer que un seul match,
j'ai déja travailler un peux voila ou j'en suis je voulais créer tous les match aller ensuite pour le retour ca sera facile.
$req1=$bd2->prepare("SELECT id,nom FROM clubs"); 
    $req1->execute();
    $donnees1=$req1->fetchAll(PDO::FETCH_ASSOC);
    $nb_equipes=$req1->rowCount();
    $nb_journee=($nb_equipes-1)*2;
    $nb_matchs=(($nb_equipes-1)*2)*$nb_equipes/2;
    $i=1;
    $k=0;
    while($i<=$nb_journee/2)
    {
        for($j=0;$j<$nb_equipes/2;$j++)
        {
            $req2=$bd2->prepare("SELECT journee,equipe1,equipe2 FROM calendrier WHERE journee=:journee AND equipe1=:equipe1 AND equipe2=:equipe2"); 
            $req2->execute(array(
                "journee"=>$i,
                "equipe1"=>$donnees1[$k]["id"],
                "equipe2"=>$donnees1[$k+1]["id"]
                ));
            if($donnees2=$req2->fetch(PDO::FETCH_ASSOC))
            {
                $k=$k+2;    
                $req2=$bd2->prepare("INSERT INTO calendrier(journee,equipe1,equipe2)VALUES(:journee,:equipe1,:equipe2)"); 
                $req2->execute(array(
                    "journee"=>$i,
                    "equipe1"=>$donnees1[$k]["id"],
                    "equipe2"=>$donnees1[$k+1]["id"]
                ));
            }
            else
            {
                $req2=$bd2->prepare("INSERT INTO calendrier(journee,equipe1,equipe2)VALUES(:journee,:equipe1,:equipe2)"); 
                $req2->execute(array(
                    "journee"=>$i,
                    "equipe1"=>$donnees1[$k]["id"],
                    "equipe2"=>$donnees1[$k+1]["id"]
                ));
            }
        }
        $k=0;
        $temp=$donnees1[1]["id"];
        $temp2=$donnees1[1]["nom"];
        for($l=1;$l<$nb_equipes-1;$l++)
        {
            $donnees1[$l]["id"]=$donnees1[$l+1]["id"];
            $donnees1[$l]["nom"]=$donnees1[$l+1]["nom"];
        }
        $donnees1[$nb_equipes-1]["id"]=$temp;
        $donnees1[$nb_equipes-1]["nom"]=$temp2;
        $i++;
    }
Mon problème c'est ca commence bien les 2premières journée après je trouve des doublons
Merci de votre aide.