Calendrier football

souhailmerroun
Invité n'ayant pas de compte PHPfrance

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.

Mammouth du PHP | 2278 Messages

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
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD