Affectation des arbitres

Aspect graphique

Formulaire

Le formulaire de base comprend un tableau avec les matchs disponibles, et un tableau avec les arbitres.

formarbitreaffecter :

Il suffit de cocher le match désiré, puis de cocher l'arbitre principal et le secondaire, en prenant soin de ne pas choisir le même. Ensuite il faut rentrer les distances entre le lieu où vit l'arbitre et le lieu du match (la salle), il faut rentrer la distance pour les deux arbitres.

Aspect programmation

Formulaire

Pour le formulaire, voici la page de codes:

formarbitreaffecter :

<html>
<head>
<title>Affectation d'un arbitre à un match</title>
</head>
<body>
<?php
try
{
$connexion = new PDO('mysql:host=localhost;dbname=bdarbitre', 'root', '');
}
catch(Exception $e)
{
die('Erreur :'.$e->getMessage());
}
$resultat=$connexion -> query ('SELECT M.NUM_MATCH, M.DATE_MATCH, S.NUM_SALLE, S.ADRESSE_SALLE FROM MATCHE M INNER JOIN SALLE S ON M.NUM_SALLE=S.NUM_SALLE')
?>
<form method="GET" action="../action/action_arbitre_affecter.php">
<h1><center>Affectation d'un arbitre à un match</center></h1>

Ce premier tableau comprend la liste des matchs prévus, il suffit de cocher celui que l'on veut:

<center><table width="500" border="1">
<caption>Liste des matchs</caption>
<tr>
<th>Numéro du match</th>
<th>Date du match</th>
<th>Numéro de la salle</th>
<th>Adresse de la salle</th>
<th>Choix du match</th>
</tr>
<?php
while ($ligne=$resultat->fetch())
{
?>
<tr>
<td><?php echo $ligne['NUM_MATCH'];?></td>
<td><?php echo $ligne['DATE_MATCH'];?></td>
<td><?php echo $ligne['NUM_SALLE'];?></td>
<td><?php echo $ligne['ADRESSE_SALLE'];?></td>
<td><input type='checkbox' name='match[]' value='<?php echo $ligne['NUM_MATCH'];?>' /></td>
</tr>
<?php
}
?>
</table></center>	</br></br>

Ce deuxième tableau représente la liste des arbitres disponibles pour le match sélectionné:

<?php
$resultat=$connexion -> query ('SELECT NUM_ARBITRE, NOM_ARBITRE, PRENOM_ARBITRE, VILLE_ARBITRE FROM ARBITRE')
?>
<center><table width="500" border="1">
<caption>Liste des arbitres</caption>
<tr>
<th>Numéro</th>
<th>Nom et Prénom</th>
<th>Ville</th>
<th>Premier arbitre</th>
<th>Second arbitre</th>
</tr>
<?php
while ($ligne=$resultat->fetch())
{
?>
<tr>
<td><?php echo $ligne['NUM_ARBITRE'];?></td>
<td><?php echo $ligne['NOM_ARBITRE'];?> - <?php echo $ligne['PRENOM_ARBITRE'];?></td>
<td><?php echo $ligne['VILLE_ARBITRE'];?></td>
<td><input type='checkbox' name='arbitre1[]' value='<?php echo $ligne['NUM_ARBITRE'];?>' /></td>
<td><input type='checkbox' name='arbitre2[]' value='<?php echo $ligne['NUM_ARBITRE'];?>' /></td>
</tr>
<?php
}
?>
</table></center>	</br></br>
<?php
$resultat=$connexion -> query ('SELECT NUM_MATCH FROM MATCHE')
?>
<center>

Les deux cases qui suivent doivent contenir la distance entre le lieu de la salle et celui ou vit l'arbitre:

Distance 1er arbitre:
<center><input type="text"name="distance1" size="20"/></center>
</br></br>
Distance 2nd arbitre:
<center><input type="text"name="distance2" size="20"/></center>
</br></br>
<input type="submit"value="affecter"/>
</center>
<?php
$resultat->closeCursor();
?>
</form>

Page action

actionarbitreaffecter :

Ce code permet de récupérer les numéros des arbitres, ainsi que la distance saisie:

$match = $_GET['match'];
$res1 = $match[0];
$arbitre1 = $_GET['arbitre1'];
$res = $arbitre1[0];
$arbitre2 = $_GET['arbitre2'];
$res2 = $arbitre2[0];

La requête $salle va récupérer le numéro de la salle où se déroule le match:

$salle=$connexion->prepare('SELECT NUM_SALLE FROM matche WHERE NUM_MATCH = :match');
$salle->execute(array('match'=>$res1));
$ligne=$salle->fetch();

Les requêtes $existe1 et $ existe2 vont rechercher la distance entre le lieu de résidence de l'arbitre et le lieu de la salle:

$existe1=$connexion->prepare('SELECT DISTANCE, NUM_ARBITRE, NUM_SALLE FROM deplacement WHERE NUM_SALLE = :salle AND NUM_ARBITRE = :arbitre');
$existe1->execute(array('salle'=>$ligne['NUM_SALLE'], 'arbitre'=> $res));
$existe2=$connexion->prepare('SELECT * FROM deplacement WHERE NUM_SALLE =:salle AND NUM_ARBITRE =:arbitre');
$existe2->execute(array('salle'=>$ligne['NUM_SALLE'], 'arbitre'=> $res2));

Cette requête va modifier les distances si elles existent déjà:

$resultat=$connexion->prepare('UPDATE matche SET NUM_ARBITRE_P=:numarbitre1, NUM_ARBITRE_S=:numarbitre2 WHERE NUM_MATCH=:nummatch');
$resultat->execute(array('nummatch'=>$res1,
'numarbitre1'=>$res,
'numarbitre2'=>$res2));

Si celle-ci n'existe pas, elle sera insérée dans la table grâce à cette requête:

$resultat=$connexion->prepare('INSERT INTO deplacement VALUES (:distance, :arbitre, :salle)');
$resultat->execute(array('arbitre'=>$res,
'salle'=>$ligne['NUM_SALLE'],
'distance'=>$_GET['distance1']));
}

Et enfin un header qui va permettre le retour au formulaire:

header('location: ../form/form_arbitre_affecter.php');
?>