Support : B.KANNE VTT ©BAC STT IG-1995

Dossier 4 "Gestion des frais de déplacement (Annexes 6, 7, 8)"
-> Calcul d'indemnités de déplacement en fonction du nombre de kilomètres, de la puissance fiscale du véhicule et de tranches kilométriques.

Réalisation de la fonction Frais (cf. 4.1)

Déclaration d'une fonction et retour d'une valeur

function frais($nbKm, $nbCv) {
  ...
  return $montant;
}

Déclaration, initialisation et manipulation d'un tableau

$tarif=array();
$tarif[0]=5; $tarif[1]=12; $tarif[2]=7; $tarif[3]=48;
echo $tarif[2]; // affiche le 3ème élément du tableau soit '7'

Ou bien

$tarif=array(5, 12, 7, 48);
echo $tarif[1]; // affiche le 2ème élément du tableau soit '12'

remarque : premier indice = 0 !

Structures alternatives

if

if ($nbCv > 13) {
  $nbCv=13;
}

if else

if ($nbCv > 13) {
  $nbCv=13;
}
else {
  ...
}

imbriquées

if ($nbKm < 5000) {
  $montant1= ... ;
}
else {
  $montant1= ... ;
  if ($nbKm < 10000) {
    $montant2= ... ;
  }
  else {
    $montant2= ... ;
    $montant3= ... ;
  }
}

TAF

Écrire (implémenter) la fonction "frais" ...

remarque : pour la tester, ajouter le code suivant en dehors de la fonction

function frais($nbKm, $nbCv) {
  ...
  return $montant;
}

echo frais(7000, 9);

Réalisation du programme (cf. 4.2)

Création de base de données sous MySQL

Création de la base "bkanne_vtt" et de la table "recap" (cf. phpMyAdmin)

Médiateur d'accès au données (Middleware)

Utilisation de la bibliothèque "mysql.dll" (déjà chargée cf. php.ini)

Établir la connexion avec la base de données

$connexion=mysql_connect(SERVEUR, UTILISATEUR, MOTDEPASSE);
if (!$connexion) {
  die('Impossible de se connecter > '.mysql_error());
}
if (!mysql_select_db(BASE,$connexion)) {
  die('Impossible de sélectionner la base de données > '.mysql_error());
}

remarque : die permet d'afficher un message et d'arrêter l'exécution du programme (problème grave !)

Exécuter une requête et récupérer les données

$recap=mysql_query("select * from recap");
while($ligne=mysql_fetch_array($recap)) {
  echo $ligne["r_totalkm"];
}

remarque : $ligne["r_totalkm"] permet d'accéder au champ "r_totalkm" de la ligne courante.

TAF

Lister le contenu de la table "recap"...(version 1 sans HTML et version 2 avec HTML)

remarque : pour insérer des données dans une chaîne HTML, utiliser l'opérateur de concaténation qui est le point [.] et le délimiteur de chaîne qui sera l'apostrophe ['] (afin d'utiliser les guillemets du code HTML sans conflits !)

echo '<td width="25%">'.$ligne["r_nom"].'</td>';

Inclusion de fichiers

Des répétitions de lignes de code apparaissent dans les différentes versions ! Pour éviter cela, il est recommandé de créer des fichiers pour chaque bloc répété,

Fichier "_connexion.php"

<?php

define("SERVEUR","localhost");
define("BASE", "bkanne_vtt");
define("UTILISATEUR","root");
define("MOTDEPASSE","");

$connexion=mysql_connect(SERVEUR, UTILISATEUR, MOTDEPASSE);
if (!$connexion) {
  die('Impossible de se connecter > '.mysql_error());
}
if (!mysql_select_db(BASE,$connexion)) {
  die('Impossible de sélectionner la base de données > '.mysql_error());
}

?>

Puis de les inclure, quand c'est nécessaire, à l'aide de l'instruction 'include'

include("_connexion.php");

remarque : le trait de soulignement indique un fichier non utilisable directement (ce n'est qu'une convention !) . Certain ajoute même l'extension 'inc' pour signifier qu'il doit être inclus dans un autre fichier...

include("_connexion.inc.php");

TAF

Afficher les montants des indemnités pour chaque personne avec les inclusions de fichiers suivantes :

include("_connexion.php"); // réalise la connexion à la base de données
include("_fx_frais.php"); // fonction frais(nbKm, nbCv)

Réalisation de la fonction FraisBis (cf. 4.1)

Pour les plus rapides et intrépides ...

Proposer une version de la fonction Frais avec des tarifs provenant de la base de données et non plus directement fixés dans le corps de la fonction.

Même raisonnement pour les tranches et les coefficients ...