/** * getSpecialiteInfo - Retourne les informations relatives à la spécialité * * @category stageFunction * @param int $id Identifiant de la spécialité * @return array Array contenant les informations relatives à la spécialité * * @Author Ali Bellamine * * Contenu de l'array retourné :<br> * ['id'] => (int) Identifiant de la spécialité<br> * ['nom'] => (string) Nom de la spécialité<br> * ['nb'] => (int) Nombre de services associés à la spécialité<br> * ['services'][id du service]['id'] => (int) Identifiant des services associés à la spécialité * */ function getSpecialiteInfo($id) { /* Initialisation des variables */ global $db; // Permet l'accès à la BDD $erreur = array(); $specialite = array(); /* On vérifie l'existance de la spécialité */ $erreur = checkSpecialite($id, $erreur); if (count($erreur) == 0) { // Récupérations des données de la spécialité $sql = 'SELECT sp.id id, sp.nom nom, (SELECT count(*) FROM service WHERE specialite = sp.id LIMIT 1) nb FROM specialite sp WHERE sp.id = ? LIMIT 1'; $res = $db->prepare($sql); $res->execute(array($id)); $specialite = array(); // On construit l'array contenant les données de l'hopital if ($res_f = $res->fetch()) { $specialite['id'] = $res_f['id']; $specialite['nom'] = $res_f['nom']; $specialite['nb'] = $res_f['nb']; } // Liste des services enregistrés dans l'hopital $sql = 'SELECT s.id id FROM service s INNER JOIN hopital h ON s.hopital = h.id WHERE s.specialite = ? ORDER BY h.nom ASC, s.nom ASC'; $res = $db->prepare($sql); $res->execute(array($id)); while ($res_f = $res->fetch()) { $specialite['services'][$res_f['id']]['id'] = $res_f['id']; } return $specialite; } else { return false; } }
} // Traitement du POST if ($action == 'edit' || $action == 'add') { foreach ($_POST as $key => $value) { if ($key == 'nom') { if ($value != '' && ($action == 'add' || $value != $serviceInfo[$key])) { $sqlData[$key] = htmLawed($value); } } if ($key == 'chef' && is_numeric($value) && count(checkUser($value, array())) == 0 && ($action == 'add' || $value != $serviceInfo[$key])) { $sqlData[$key] = $value; } if ($key == 'hopital' && is_numeric($value) && count(checkHopital($value, array())) == 0 && ($action == 'add' || $value != $serviceInfo[$key])) { $sqlData[$key] = $value; } if ($key == 'specialite' && is_numeric($value) && count(checkSpecialite($value, array())) == 0 && ($action == 'add' || $value != $serviceInfo[$key])) { $sqlData[$key] = $value; } if ($key == 'certificat') { $sqlAffectationData = array(); $currentCertificat = array(); if (isset($serviceInfo)) { $listeCertificats = array(); foreach ($serviceInfo['certificat'] as $certificatId => $certificatValue) { $listeCertificats[$certificatValue['idAffectation']] = $certificatId; } } /* On parcours la liste des certificats sélectionnés, pour chaque, plusieurs cas possible : - Soit il s'agit d'une modification d'affectation et dans ce cas on le stock dans $sqlAffectationData['edit'] - Soit il s'agit d'un ajout et dans ce cas on le stock dans $sqlAffectationData['add']
if ($action == 'list') { if (isset($_GET['order'])) { $order = $_GET['order']; } else { $order = 'nom'; } if (isset($_GET['desc'])) { $desc = true; } else { $desc = false; } $listeSpecialite = getSpecialiteList($order, $desc); } else { if ($action == 'view' || $action == 'delete' || $action == 'edit') { // On récupère les données sur la spécialité if (count(checkSpecialite($_GET['id'], array())) == 0) { $specialiteData = getSpecialiteInfo($_GET['id']); } else { header('Location: ' . ROOT . CURRENT_FILE . '?page=' . $_GET['page']); } } } /** 2. Traitement des formulaires **/ if (isset($_POST) && count($_POST)) { /* Préparation des données : on crée un array contenant toutes les données, ce dernier sera ensuite parcouru pour créer la requête SQL qui sera préparée */ if ($action == 'edit' || $action == 'delete') { $sqlData['id'] = $specialiteData['id'];