Bonjour à tous,

Je m'excuse de vous déranger.
Je suis en train de développer, en local, un site qui organise des compétitions sur Fifa en ligne sur PS3.

J'ai mis en place mon propre modèle MVC.

Pour le moment, j'ai une table « championnat » :

  • ID

  • Name

  • Slug (Pour l'URL)

  • Online (1 : Le championnat est ouvert)

  • Status (1 : Les inscriptions sont fermées)

Une table « inscription_championnat » :

  • ID

  • Fk_id_user

  • Fk_id_championnat

Donc, l'utilisateur se connecte sur le site. Il consulte les championnats et peut s'inscrire à un championnat.

Voici le code de ma fonction « signup » avec les différents contrôles :

function signup($id) {
        $idUser = $this->Session->user('id');
        $this->loadModel('Inscription');
        $condition = array('fk_id_championnats' => $id); 
        $d'total'] = $this->Inscription->findCount($condition);

        $this->loadModel('Championnat');

        $d'etat'] = $this->Championnat->findFirst(array(
            'fields' => 'Championnat.status',
            'conditions' => array('Championnat.id' => $id),
        ));
        if($d'etat'] == 1) {
            if($d'total'] < 20) {
                if($idUser != 0) {
                    $this->Inscription->save(array(
                        'fk_id_championnats' => $id,
                        'fk_id_users' => $idUser
                    ));
                    echo 'ok'; 
                }
                else {
                    $this->Session->setFlash('Vous devez être connecté','error');
                    echo 'no';
                } 
            }
            else {
                $this->Championnat->save(array(
                    'status' => 0
                ));
                $this->Session->setFlash('Il n\'y a plus de place','error');
                echo 'no';  
            }
        }
        else {
            $this->Session->setFlash('Les inscriptions sont fermées.','error');
            echo 'no';
        }
    }

Une fois que le nombre d'inscription atteint son maximum, donc 20 équipes, il faudrait que sa crée automatiquement les journées (Aller et retour) des matchs à jouer.

Mais je n'arrive pas, au niveau logique, à modéliser ceci dans ma base de données.
Comment, en PHP automatiser cela ?
Comment structurer ma table « match » ?
Mettre en place le classement, etc...

Le but, étant, sur le profil de l'utilisateur, d'afficher ses matchs joués, les matchs qu'il lui reste à jouer, les matchs qu'il doit valider et ceux validés...etc

Donc je vous demande pas de me faire le boulot mais de m'éclaircir, de me donner vos points de vues, la façon dont vous, vous procéderiez.

En espérant obtenir des réponses positives de votre part, pourquoi pas des liens d'exemples de codes qui génère des données (Pour les matchs, comme j'ai expliqué plus haut).

Merci à vous de votre.

Amicalement,
DexX

3 réponses


Sur ce niveau la il suffit juste d'extrapoler ce que tu as du faire dans un cahier des charge puis ce que tu as du faire dans un schéma UML pour préparer tes entités.
J'imagine que tu n'a pas crée de schéma pour ta base de donnés alors je vais faire simple et résoudre ton problème mais sache qu'il est plus propre de commencer par se faire un cahier des charges puis d'en faire un schéma UML ou Merise avant de commencer son projet.
En Effet tu perd moins de temps et tu ira plus vite.

Pour la résolution de ton problème je te conseil de faire appelle a la fonction SQL COUNT .
Dont la Syntaxe est la suivante:

SELECT COUNT(column_name) FROM table_name

Il te suffira tout simplement de vérifier dans une fonction si Fk_id_championnat(par convention championnat_id vus qu'il s'agit d'un id externe a ta table) est présent 20 fois dans ta table inscription_championnat ( qui d’ailleurs si tu respecte les convention doit s’appeler inscriptionChampionat ).
Dans ce cas la si ton id championnat est présent 20 foix ta fonction return true.
et dans tes inscription

if(is_full($id)){
Actions si le championnat est full 
} 
else
{
Actions si le championnat n'est pas full  
}

Comme prévus je ne t'envoi pas du code puisque le but est de bien comprendre la méthode par laquelle tu obtient ton résultât et non avoir le résultât tout prêt.
N’hésite pas a répondre si tu pense que je n'ai pas été clair ou si ça mérite plus d'explication, je te répondrais avec plaisir.

Cordialement,
WarkAngel

Pour tes match crée toi une table match(id,name,etc...), une table équipe(id,nameetc...user_id(sous forme de tableau)) et un table match_team( avec match_id et team_id) voir a limite ( avec match_id et team_id1 et team_id2).

DexX
Auteur

Bonjour,

Disons que ce que tu me dis est simplement un rappel de mes cours d'il y a 3 ans ^^

En faite, c'est plus pour générer les matchs dans la base de donnée une fois les inscriptions terminées.
Au niveau PHP, algorithmiquement parlant, comme tu ferais pour que sa crée les journées des matchs à jouer de façon à ce qu'on ne soit pas obligé de le faire manuellement.

Et donc la question qui suivait la précédente était comment modéliser mes tables qui serviront à la gestion des matchs dans ma base de données.

J'espère avoir éclairci ma requête.
En tout cas merci déjà de tes réponses en espérant obtenir encore des réponses positives ;)

Amicalement,
DexX