COMPTE RENDU ARBITRE

Première séance

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>

Lorsque l'on clique sur ajouter, une nouvelle page web s'ouvre permettant la création d'un nouveau club.

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é :

Seconde séance

Lorsque l'on clique sur Modifier, une page web s'ouvre, affichant le club sélectionnée, et le responsable pourra alors le modifier.

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 :

Lorsque l'on clique sur Supprimer, le responsable peut supprimer, après contrôle, le club sélectionné.

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é :

Troisième séance

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();

== Quatrième séance ==

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é

Guide utilisateurs