Bonjour,

J'ai une relation HBTML entre ma table « user » et « match ».
On imagine que j'ai 4 utilisateurs inscrits à un championnat. Ma table « participer » contient donc 4 enregistrements.

Je ferme le championnat et je souhaite générer automatiquement les matchs.
Sachant qu'il y a un match aller et retour.

Voici, actuellement, ma fonction qui génère ces matchs :

public function generateMatchs($idChampionship) {
        $players = $this->query('SELECT User.id FROM user as User, participer as Participer WHERE User.id = Participer.user_id AND Participer.championship_id = '.$idChampionship.'');
        foreach ($players as $key => $value) {
            $joueurs] = $value'User']'id'];
        }
        $count = 0;
        $journee = 1;
        $type = "Aller";
        foreach ($joueurs as $domicile) {
            foreach ($joueurs as $exterieur) {
                if ($domicile != $exterieur) {
                    $this->query('INSERT INTO `match_user` (match_id, user_id) VALUES ('.$count.', '.$domicile.')');
                    $this->query('INSERT INTO `match_user` (match_id, user_id) VALUES ('.$count.', '.$exterieur.')');
                    $this->query('INSERT INTO `match` (championship_id, type, journee) VALUES ('.$idChampionship.', "'.$type.'", '.$journee.')');          
                }
                $count++;
            }
            $journee++;
            $type = "Retour";
        }
    }

Voici comment cette fonction remplit ma base :

Table « match » :

Table « match_user » :

J'ai l'impression que mes tables ne sont pas remplient correctement.

Auriez-vous une idée pour améliorer mon système afin de pouvoir générer correctement mes matchs ?

Merci de votre aide.

3 réponses


je te donne une piste a toi de la travailler :)

function generateMatchs($idChampionship = 1) {
    $player = array('J1','J2','J3','J4'); // Recuperes tes id
    foreach ($player as $k => $v) {
        foreach ($player as $l => $w) {
            if($v != $w && $v < $w) {
                $aller] = $v.' vs '.$w. ' -- Aller';
                $retour] = $w.' vs '.$v. ' -- Retour';
            }
        }
    }
    $match = array_merge($aller, $retour);
    var_dump($match);
}

ce qui donne comme resultat:

array (size=12)
  0 => string 'J1 vs J2 -- Aller' (length=17)
  1 => string 'J1 vs J3 -- Aller' (length=17)
  2 => string 'J1 vs J4 -- Aller' (length=17)
  3 => string 'J2 vs J3 -- Aller' (length=17)
  4 => string 'J2 vs J4 -- Aller' (length=17)
  5 => string 'J3 vs J4 -- Aller' (length=17)
  6 => string 'J2 vs J1 -- Retour' (length=18)
  7 => string 'J3 vs J1 -- Retour' (length=18)
  8 => string 'J4 vs J1 -- Retour' (length=18)
  9 => string 'J3 vs J2 -- Retour' (length=18)
  10 => string 'J4 vs J2 -- Retour' (length=18)
  11 => string 'J4 vs J3 -- Retour' (length=18)
DexX
Auteur

Merci de ton aide, toute fois, j'aurais une question.
Quand j'insère dans ma base de données, je n'arrive pas à insérer l'idée du match.

Ou alors, en faisant avec ton code, je devrais avoir qu'une seule table match avec id, user_1, user_2 ?

DexX
Auteur

UP Please :$