T2.2 Gestion des clubs : Cette tâche doit permettre la création, la modification et la suppression d’un club.
Code du formulaire permettant d'afficher les clubs :
<article> <h1> Les Clubs <h1> <?php include"affclub.php" ?> <p> <a href="formulaire/club_form_ajouter.php"><input type="submit" value="Ajouter"></a> </p> </article>
Code de affclub :
<?php try { // On se connecte à MYSQL $connexion= new PDO ('mysql:host=localhost; dbname=mlr1arbitre', 'root', ''); } catch(Exception $e) { // en cas d'erreur die ('Erreur : '.$e->getMessage()); } // on recupère les noms dans la table CLUB $resultat = $connexion->query('SELECT * FROM CLUB '); ?> <table> <tr> <td><strong>Num<strong></td> <td><strong>Nom<strong></td> <td><strong>Modifier<strong></td> <td><strong>Supprimer</strong></td> </tr> <?php //parcourir les enregistrement pour pouvoir les afficher while($ligne=$resultat->fetch()){ ?> <tr> <td><?php echo $ligne['NUM_CLUB'] ;?></td> <td><?php echo $ligne['NOM_CLUB'] ;?></td> <td><a href="formulaire/club_form_modifier.php?code=<?php echo $ligne['NUM_CLUB'] ;?>">Modifier</td> <td><a href="action/club_action_supprimer.php?code=<?php echo $ligne['NUM_CLUB'] ;?>">Supprimer</td> </tr> <?php } ?> </table>
Code du formulaire ajouter :
//Le script nous permet de faire un contrôle de saisi sur les éléments du formulaire donc le nom commence par étoile. <script> function verif_input_etoile(){ var input=document.forms[0].elements;//retourne les éléments du formulaires(input, label,...) for(var i=0;i<input.length;i++) { var tinput=input[i].name.split("_");//créer un tableau avec [0]="etoile" si on a name="etoile_nom" if(tinput.length>0 && tinput[0]=="etoile"){ if (input[i].value=="") { alert(tinput[1]+" : Champ obligatoire"); input[i].focus();//positionne un focus sur le champ return false; //une erreur on redonne la main au formulaire } } } return true; //aucune erreur } </script> <fieldset> <legend> Ajouter un club </legend> <form method="get" action="../action/club_action_ajouter.php"> <table> <strong>Nom :</strong><input id="nom" type="text" name="etoile_nom"/></br> </table> <p> <input type="submit" value="AJOUTER" onclick="verif_input_etoile()"> </p> </form> </fieldset>
Code de l'action ajouter :
<?php try { // On se connecte à MYSQL $connexion= new PDO ('mysql:host=localhost; dbname=mlr1arbitre', 'root', ''); } catch(Exception $e) { // en cas d'erreur die ('Erreur : '.$e->getMessage()); } //On ajoute un club dans la table CLUB $res=$connexion->prepare('INSERT INTO club (NOM_CLUB) VALUES(:nom)'); $res->execute(array('nom'=>$_GET['etoile_nom'])); //On nous redirige vers la page club.php header("Location: ../club.php"); ?>
Après avoir cliqué sur Ajouter, le club a bien été ajouté :
Code du formulaire modifier :
<?php try { // On se connecte à MYSQL $connexion= new PDO ('mysql:host=localhost; dbname=mlr1arbitre', 'root', ''); } catch(Exception $e) { // en cas d'erreur die ('Erreur : '.$e->getMessage()); } // on recupère les club dans la table CLUB $resultat = $connexion->prepare("SELECT * FROM CLUB where NUM_CLUB = :code "); $resultat->execute(array('code'=>$_GET['code'])); ?> <script> function verif_input_etoile(){ var input=document.forms[0].elements;//retourne les éléments du formulaires(input, label,...) for(var i=0;i<input.length;i++) { var tinput=input[i].name.split("_");//créer un tableau avec [0]="etoile" si on a name="etoile_nom" if(tinput.length>0 && tinput[0]=="etoile"){ if (input[i].value=="") { alert(tinput[1]+" : Champ obligatoire"); input[i].focus();//positionne un focus sur le champ return false; //une erreur on redonne la main au formulaire } } } return true; //aucune erreur } </script> <fieldset> <legend>Modifier le club</legend> <form method="get" action="../action/club_action_modifier.php"> <table> <tr> <td></td> <td><strong>Nom<strong></td> </tr> <?php while($ligne=$resultat->fetch()){ ?> <tr> <td><input type="hidden" name="num" value='<?php echo $ligne['NUM_CLUB'] ;?>'></td> <td><input type="text" name="etoile_nom" value='<?php echo $ligne['NOM_CLUB'] ;?>'></td> </tr> <?php } ?> </table> <p> <input type="submit" value="MODIFIER" onclick="verif_input_etoile()"> </p> </form> </fieldset> <?php $resultat->closeCursor(); ?>
Code de l'action modifier :
<?php try { // On se connecte à MYSQL $connexion= new PDO ('mysql:host=localhost; dbname=mlr1arbitre', 'root', ''); } catch(Exception $e) { // en cas d'erreur die ('Erreur : '.$e->getMessage()); } //On modifier le nom du CLUB $res=$connexion->prepare('UPDATE club set NUM_CLUB=:num, NOM_CLUB=:nom where NUM_CLUB=:num'); $res->execute(array('num'=>$_GET['num'], 'nom'=>$_GET['etoile_nom'])); header("Location: ../club.php"); ?>
Le club a bien été modifié et est passé de Abal à Abal-Kassim :
Code de l'action supprimer :
<?php try { // On se connecte à MYSQL $connexion= new PDO ('mysql:host=localhost; dbname=mlr1arbitre', 'root', ''); } catch(Exception $e) { // en cas d'erreur die ('Erreur : '.$e->getMessage()); } // on récupère le code du club concerné et on le supprime de la table CLUB $resultat = $connexion->prepare("DELETE FROM CLUB where NUM_CLUB = :code"); $resultat->execute(array('code'=>$_GET['code'])); header("Location: ../club.php"); ?>
Après avoir cliqué sur Supprimer, le club Abal-Kassim a bien été supprimé :
T4.2 Consultation par un arbitre de ses convocations : l‘arbitre peut à tout moment visualiser les convocations aux matches à venir. état-civil, adresse, numéros de téléphone,adresse mail, nom du club auquel il appartient éventuellement). Pour chaque match, il est souhaitable de faire afficher toutes les données présentes sur sa convocation (informations sur le championnat, sur le match lui-même, qui est son co-arbitre, et le montant de sa rémunération). Il est souhaitable que ces convocations soient triées par date match croissant
Pour traiter ce problème, nous avons décidé de séparer la problèmatique en deux parties: la première partie pour avoir les informations sur l'arbitre connecté, puis la deuxième partie sur les renseignement des matchs qu'il a à arbitrer.
Première partie:l‘arbitre peut à tout moment visualiser les convocations aux matches à venir. état-civil, adresse, numéros de téléphone,adresse mail, nom du club auquel il appartient éventuellement)
<?php // on recupère les informations de l'arbitre connecter $resultat = $connexion->prepare("SELECT NOM_ARBITRE, PRENOM_ARBITRE, ADRESSE_ARBITRE, CP_ARBITRE, MAIL_ARBITRE, NOM_CLUB FROM arbitre a inner join club c on a.NUM_CLUB=c.NUM_CLUB where NUM_ARBITRE=:code"); $resultat->execute(array('code'=>$_SESSION['NUM_ARBITRE'])); $ligne=$resultat->fetch(); ?>
Et on les affiche les information sur l'arbitre.
<?php echo $ligne['NOM_ARBITRE'].' '.$ligne['PRENOM_ARBITRE'] ;?></br> <?php echo $ligne['ADRESSE_ARBITRE'] ;?></br> <?php echo $ligne['CP_ARBITRE'] ;?></br> <?php echo $ligne['MAIL_ARBITRE'] ;?></br> <?php echo $ligne['NOM_CLUB'] ;?></br>
Deuxième partie: Pour chaque match, il est souhaitable de faire afficher toutes les données présentes sur sa convocation (informations sur le championnat, sur le match lui-même, qui est son co-arbitre, et le montant de sa rémunération). Il est souhaitable que ces convocations soient triées par date match croissant
<?php $resultat1 = $connexion->prepare('SELECT nom_championnat, nom_type_championnat, nom_division, nom_categorie, date_match, heure_match, adresse_salle,num_match, montant_deplt_p, e.nom_equipe as eq1, eq.nom_equipe as eq2, a.nom_arbitre as ar1, ar.nom_arbitre as ar2 FROM matchs m INNER JOIN salle s ON m.num_salle = s.num_salle RIGHT OUTER JOIN equipe e ON m.num_equipe_1 = e.num_equipe RIGHT OUTER JOIN equipe eq ON m.num_equipe_2 = eq.num_equipe INNER JOIN championnat c ON e.num_championnat = c.num_championnat INNER JOIN division d ON c.num_division = d.num_division INNER JOIN categorie ca ON c.num_categorie = ca.num_categorie INNER JOIN type_championnat ch ON c.num_type_championnat = ch.num_type_championnat RIGHT OUTER JOIN arbitre a ON m.num_arbitre_p = a.num_arbitre RIGHT OUTER JOIN arbitre ar ON m.num_arbitre_s = ar.num_arbitre WHERE num_arbitre_p=:c1 or num_arbitre_s =:c1 ORDER BY date_match'); $resultat1->execute(array( 'c1'=>$_SESSION['NUM_ARBITRE'])); ?>
On utilise ORDER BY date_match pour trier les matchs par ordre croissant Et on affiche ça sous forme de tableau.
<table border='1'> <tr> <td><strong>Championnat<strong></td> <td><strong>Type championnat<strong></td> <td><strong>Division </strong></td> <td><strong>Catégorie</strong></td> <td><strong>Date match </strong></td> <td><strong>Heure match </strong></td> <td><strong>Salle </strong></td> <td><strong>Equipe 1</strong></td> <td><strong>Equipe 2</strong></td> <td><strong>Arbitre principal</strong></td> <td><strong>Arbitre secondaire</strong></td> <td><strong>Salaire</strong></td> </tr> <?php while($ligne=$resultat1->fetch()){ ?> <tr> <td><?php echo $ligne['nom_championnat'] ;?></td> <td><?php echo $ligne['nom_type_championnat'] ;?></td> <td><?php echo $ligne['nom_division'] ;?></td> <td><?php echo $ligne['nom_categorie'] ;?></td> <td><?php echo $ligne['date_match'] ;?></td> <td><?php echo $ligne['heure_match'] ;?></td> <td><?php echo $ligne['adresse_salle'] ;?></td> <td><?php echo $ligne['eq1'] ;?></td> <td><?php echo $ligne['eq2'] ;?></td> <td><?php echo $ligne['ar1'] ;?></td> <td><?php echo $ligne['ar2'] ;?></td> <td><?php echo $ligne['montant_deplt_p'] ;?></td> </tr> <?php } ?> </table> $resultat1->CloseCursor();
Pour finir, on a tous mis le code dans un TEST afin qu'on affiche les informations sur l'arbitre et ces match que lorsqu'il est connecté.
<?php session_start(); if($_SESSION['type']==2) { try { // On se connecte à MYSQL $connexion= new PDO ('mysql:host=localhost; dbname=bdarbitres', 'root', ''); } catch(Exception $e) { // en cas d'erreur die ('Erreur : '.$e->getMessage()); } ?> . . . } ?>
voici la liste des matchs de l'arbitre connecté