'.$_SESSION['Bateaux']['bateau']['Nom'].' a été dévalidé dans la base de données.'; $_SESSION['Bateaux']['page'] = "Accueil"; } break; } } if ($_SESSION['Bateaux']['ancre'] == "") header('Location:bateaux.php'); // Permet de "vider" la barre d'URL des champs GET et donc de doubler le traitement en cas de raffraichissement de page... else header('Location:bateaux.php#'.$_SESSION['Bateaux']['ancre'].''); } // Variables POST : if (isset($_POST['date_version'])){ $_SESSION['Bateaux']['date_version'] = $_POST['date_version']; } //--------------------------------------------------------------------------- // Création/Modification Bateau : if (isset($_POST['validation_creation_bateau']) OR isset($_POST['validation_modification_bateau'])) { // Vérification si un changement de carte a été demandé : $flag_new_carte = false; $new_id_carte = isset($_POST['ID_Carte']) ? addslashes ($_POST['ID_Carte']) : 0; if ($_SESSION['Bateaux']['bateau']['ID_Carte'] != $new_id_carte) $flag_new_carte = true; //echo "Flag nouvelle carte = ".($flag_new_carte ? "Oui" : "Non")."
"; // Mémorisation des valeurs saisies pour éviter de les perdre en cas d'erreur rendant la création impossible : $_SESSION['Bateaux']['bateau']['Nom'] = isset($_POST['Nom']) ? addslashes ($_POST['Nom']) : ""; $_SESSION['Bateaux']['bateau']['ID_Flotte'] = isset($_POST['ID_Flotte']) ? addslashes ($_POST['ID_Flotte']) : 0; $_SESSION['Bateaux']['bateau']['ID_Carte'] = isset($_POST['ID_Carte']) ? addslashes ($_POST['ID_Carte']) : 0; $_SESSION['Bateaux']['bateau']['Date_mes'] = isset($_POST['Date_mes']) ? addslashes ($_POST['Date_mes']) : date("Y-m-d"); $_SESSION['Bateaux']['bateau']['Date_carte'] = isset($_POST['Date_carte']) ? addslashes ($_POST['Date_carte']) : date("Y-m-d"); $_SESSION['Bateaux']['bateau']['Commentaires'] = isset($_POST['Commentaires']) ? addslashes ($_POST['Commentaires']) : ""; if (isset($_POST['validation_creation_bateau'])) { // Création du bateau : $requete = 'INSERT INTO TB_Bateaux (Nom, ID_Flotte, ID_Carte, Date_mes, Date_carte, Date_derniere_maj, Commentaires) VALUES (?, ?, ?, ?, ?, ?, ?)'; Requete_preparee_bdd($requete, array( array('s', $_SESSION['Bateaux']['bateau']['Nom']), array('i', $_SESSION['Bateaux']['bateau']['ID_Flotte']), array('i', $_SESSION['Bateaux']['bateau']['ID_Carte']), array('s', $_SESSION['Bateaux']['bateau']['Date_mes']), array('s', $_SESSION['Bateaux']['bateau']['Date_carte']), array('s', $_SESSION['Bateaux']['bateau']['Date_derniere_maj']), array('s', $_SESSION['Bateaux']['bateau']['Commentaires'])), __FILE__, __LINE__); // Récup de la clé primaire de l'enregistrement créé : $_SESSION['Bateaux']['bateau']['Cle_primaire'] = Recuperation_id_cree_bdd(); // Retour à la liste si la création s'est bien passée : $_SESSION['Bateaux']['page'] = "Accueil"; } else if (isset($_POST['validation_modification_bateau'])) { // Mise à jour du bateau : $requete = 'UPDATE TB_Bateaux SET Nom=?, ID_Flotte=?, ID_Carte=?, Date_mes=?, Date_carte=?, Commentaires=? WHERE Cle_primaire=?'; Requete_preparee_bdd($requete, array( array('s', $_SESSION['Bateaux']['bateau']['Nom']), array('i', $_SESSION['Bateaux']['bateau']['ID_Flotte']), array('i', $_SESSION['Bateaux']['bateau']['ID_Carte']), array('s', $_SESSION['Bateaux']['bateau']['Date_mes']), array('s', $_SESSION['Bateaux']['bateau']['Date_carte']), array('s', $_SESSION['Bateaux']['bateau']['Commentaires']), array('i', $_SESSION['Bateaux']['bateau']['Cle_primaire'])), __FILE__, __LINE__); // Message d'information : $message_information = 'Le bateau '.$_SESSION['Bateaux']['bateau']['Nom'].' vient d\'être modifié'; // Retour à la liste si la modification s'est bien passée : $_SESSION['Bateaux']['page'] = "Accueil"; } // Recherche de l'adresse MAC de la carte ShipBase déclarée : $requete = 'SELECT Adresse_mac FROM TB_Cartes WHERE Cle_primaire=?'; $reponse = Requete_preparee_bdd($requete, array( array('i', $_SESSION['Bateaux']['bateau']['ID_Carte'])), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { $_SESSION['Bateaux']['bateau']['Adresse_mac'] = str_replace(":", "_", $donnees['Adresse_mac']); } // Si changement de carte (ou nouveau bateau) : if ($flag_new_carte) { // Vérification de l'existence du répertoire correspondant à cette adresse MAC sur le serveur, dans le répertoire "Bateaux" : $flag_creation_repertoires = false; if (repertoire_contient_repertoire(REPERTOIRE_BATEAUX, $_SESSION['Bateaux']['bateau']['Adresse_mac'])) // Le répertoire existe : { // Cas particulier du répertoire d'archives qui pouvait ne pas exister sur les premiers bateaux (permet de créer le fichier archive dans ce cas) : if (!repertoire_contient_repertoire(REPERTOIRE_BATEAUX.'/'.$_SESSION['Bateaux']['bateau']['Adresse_mac'], 'archives')) mkdir(REPERTOIRE_BATEAUX.'/'.$_SESSION['Bateaux']['bateau']['Adresse_mac'].'/archives'); // Si le contenu des sous-répertoires est vide, on ne sauvegarde pas l'ancien bateau (cas standard) : if (repertoire_est_vide(REPERTOIRE_BATEAUX.'/'.$_SESSION['Bateaux']['bateau']['Adresse_mac'].'/download') AND repertoire_est_vide(REPERTOIRE_BATEAUX.'/'.$_SESSION['Bateaux']['bateau']['Adresse_mac'].'/upload') AND repertoire_est_vide(REPERTOIRE_BATEAUX.'/'.$_SESSION['Bateaux']['bateau']['Adresse_mac'].'/archives')) { $message_information .= '
Le répertoire ['.$_SESSION['Bateaux']['bateau']['Adresse_mac'].'] et ses trois sous-répertoires "download", "upload" et "archives" existaient déjà dans le répertoire "bateaux" et ils sont bien vides.'; } else // ... et son contenu n'est PAS vide : { $suffixe_repertoire_archive = '__SAUVEGARDE_'.date("Y-m-d_H-i-s"); if (rename(REPERTOIRE_BATEAUX.'/'.$_SESSION['Bateaux']['bateau']['Adresse_mac'], REPERTOIRE_BATEAUX.'/'.$_SESSION['Bateaux']['bateau']['Adresse_mac'].$suffixe_repertoire_archive)) { $message_erreur .= 'Le répertoire ['.$_SESSION['Bateaux']['bateau']['Adresse_mac'].'] n\'était pas vide ; il a donc été renommé en ['.REPERTOIRE_BATEAUX.'/'.$_SESSION['Bateaux']['bateau']['Adresse_mac'].$suffixe_repertoire_archive.']
'; $flag_creation_repertoires = true; } else { $message_erreur .= 'Le répertoire ['.$_SESSION['Bateaux']['bateau']['Adresse_mac'].'] dans "bateaux" existait et n\'était pas vide mais son renommage a échoué ! Il est conservé tel quel...
'; } } } else $flag_creation_repertoires = true; // Création du répertoire de communication pour cette adresse MAC : if ($flag_creation_repertoires) { if (mkdir(REPERTOIRE_BATEAUX.'/'.$_SESSION['Bateaux']['bateau']['Adresse_mac'])) { mkdir(REPERTOIRE_BATEAUX.'/'.$_SESSION['Bateaux']['bateau']['Adresse_mac'].'/download'); mkdir(REPERTOIRE_BATEAUX.'/'.$_SESSION['Bateaux']['bateau']['Adresse_mac'].'/upload'); mkdir(REPERTOIRE_BATEAUX.'/'.$_SESSION['Bateaux']['bateau']['Adresse_mac'].'/archives'); $message_information .= '
Le répertoire ['.$_SESSION['Bateaux']['bateau']['Adresse_mac'].'] et ses trois sous-répertoires "download", "upload" et "archives" viennent d\'être créés dans le répertoire "bateaux"'; } else $message_erreur .= '!!! Le répertoire ['.$_SESSION['Bateaux']['bateau']['Adresse_mac'].'] n\'a pas pu être créé dans le répertoire "bateaux" !!!'; } } } //--------------------------------------------------------------------------- // Filtre du graphe : if (isset($_POST['filtrer_graphe'])){ $_SESSION['Bateaux']['graphe_date_debut'] = $_POST['date_debut']; $_SESSION['Bateaux']['graphe_date_fin'] = $_POST['date_fin']; } //--------------------------------------------------------------------------- // Modifier la validité des droits if (isset($_POST['validite_acces'])) { // echo 'Validité = ON pour ID='.$_POST['ID'].'
'; $requete = 'UPDATE TB_Lien_bateau_shipmember SET Validite_acces = 1 WHERE ID = '.$_POST['ID']; $reponse = Requete_bdd($requete, __FILE__, __LINE__); } else if (!isset($_POST['validite_acces']) && isset($_POST['ID']) && !isset($_POST['supprimerAcces']) && !isset($_POST['modifierAcces'])){ // echo 'Validité = OFF pour ID='.$_POST['ID'].'
'; $requete = 'UPDATE TB_Lien_bateau_shipmember SET Validite_acces = 0 WHERE ID = '.$_POST['ID']; $reponse = Requete_bdd($requete, __FILE__, __LINE__); } //--------------------------------------------------------------------------- // Supprimer l'accès if (isset($_POST['supprimerAcces']) && isset($_POST['ID'])){ $id = $_POST['ID']; $requete = 'UPDATE TB_Lien_bateau_shipmember SET Validite = 0 WHERE ID = ? '; $reponse = Requete_preparee_bdd($requete, array( array('i', $id)), __FILE__, __LINE__); } //--------------------------------------------------------------------------- // Modifier l'accès if (isset($_POST['modifierAcces']) && isset($_POST['ID'])){ $id = $_POST['ID']; $fin_validite = $_POST['fin_validite']." 23:59:59"; $type_profil = $_POST['type_profil']; $requete = 'UPDATE TB_Lien_bateau_shipmember SET Fin_validite = ? , ID_Type_acces_bateau_shipmember = ? WHERE ID = ? '; $reponse = Requete_preparee_bdd($requete, array( array('s', $fin_validite), array('i', $type_profil), array('i', $id)), __FILE__, __LINE__); } //************************************************************************************************************************************ // Traitement des données //************************************************************************************************************************************ // Protection contre les accès directs... : $flag_sortie = true; do // Dummy loop : { if (!$_SESSION['acces_valide']) break; // Si on n'est pas identifié, on ne peut pas accéder quoi qu'il arrive... if ($_SESSION['shipmember']['Niveau_acces'] >= NIVEAU_ACCES_MINI_ADMINISTRATEUR) { $flag_sortie = false; // Si on est administrateur, on a toujours accès.... break; } // Recherche des droits d'accès à un bateau en particulier : if ($_SESSION['Bateaux']['page'] == "Details_bateau") { $requete = 'SELECT * FROM TB_Lien_bateau_shipmember WHERE Validite=1 AND Validite_acces=1 AND ID_SHIPMEMBER=? AND ID_BATEAU=? '; $reponse = Requete_preparee_bdd($requete, array( array('i', $_SESSION['shipmember']['Cle_primaire']), array('i', $_SESSION['Bateaux']['bateau']['Cle_primaire'])), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { $flag_sortie = false; break; } Liberation_jeu_de_resultat_bdd($reponse); } if($flag_sortie && $_SESSION['Bateaux']['bateau']['Cle_primaire'] == 25){ $flag_sortie = false; } } while (0); if ($flag_sortie) header('Location:shipmembers.php?action=navigation&destination=Login'); switch ($_SESSION['Bateaux']['page']) { //**************************************************************************************************************************** case "Accueil": { //-------------------------------------------------- // Récupération des informations sur les bateaux : $nb_bateaux = 0; switch($_SESSION['Bateaux']['tri_liste']) { case "Nom": { $tri_liste = " ORDER By Nom ".$_SESSION['Bateaux']['sens_tri_liste']; break; } case "Flotte" : { $tri_liste = " ORDER By nom_flotte ".$_SESSION['Bateaux']['sens_tri_liste'].", Nom"; break; } case "Carte": { $tri_liste = " ORDER By nom_carte ".$_SESSION['Bateaux']['sens_tri_liste']; break; } case "Adresse_mac": { $tri_liste = " ORDER By adresse_carte ".$_SESSION['Bateaux']['sens_tri_liste']; break; } case "Version": { $tri_liste = " ORDER By version ".$_SESSION['Bateaux']['sens_tri_liste'].", Nom"; break; } case "Date_maj": { $tri_liste = " ORDER By Date_derniere_maj ".$_SESSION['Bateaux']['sens_tri_liste'].", Nom"; break; } default : { $tri_liste = " ORDER By nom_flotte, Nom ".$_SESSION['Bateaux']['sens_tri_liste']; break; } } $requete = 'SELECT TB_Bateaux.Cle_primaire AS Cle_primaire, '; $requete .= ' TB_Bateaux.Nom AS Nom, '; $requete .= ' (SELECT Nom FROM TB_Flottes WHERE Validite=1 AND Cle_primaire=TB_Bateaux.ID_Flotte) AS nom_flotte, '; $requete .= ' (SELECT No_serie FROM TB_Cartes WHERE Validite=1 AND Cle_primaire=TB_Bateaux.ID_Carte) AS nom_carte, '; $requete .= ' (SELECT Adresse_mac FROM TB_Cartes WHERE Validite=1 AND Cle_primaire=TB_Bateaux.ID_Carte) AS adresse_carte, '; $requete .= ' (SELECT Valeur FROM TB_BATEAUX_Systeme WHERE Validite=1 AND ID_Bateau=TB_Bateaux.Cle_primaire AND Nom="Version_soft_no_package") AS version, '; $requete .= ' TB_Bateaux.Date_derniere_maj AS Date_derniere_maj, '; $requete .= ' TB_Bateaux.Commentaires AS Commentaires '; $requete .= ' FROM `TB_Bateaux` '; $requete .= ' WHERE Validite=1 '; $requete .= $tri_liste; echo "Requête = [ ".$requete."; ]
"; $reponse = Requete_preparee_bdd($requete, array(), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { $bateaux[$nb_bateaux] = $donnees; // Mise en forme de certaines variables : if ($bateaux[$nb_bateaux]['version'] == "") $bateaux[$nb_bateaux]['version'] = 'inconnue'; if ($donnees['Date_derniere_maj'] < "2020-01-02") $bateaux[$nb_bateaux]['Date_derniere_maj'] = "Jamais"; else $bateaux[$nb_bateaux]['Date_derniere_maj'] = Formatage_date($donnees['Date_derniere_maj']); $bateaux[$nb_bateaux]['Commentaires'] = htmlspecialchars(stripcslashes($bateaux[$nb_bateaux]['Commentaires'])); $nb_bateaux ++; } Liberation_jeu_de_resultat_bdd($reponse); break; } //**************************************************************************************************************************** case "Details_bateau": { //-------------------------------------------------- // Récupération des informations sur le bateau : $nb_bateaux = 0; $requete = 'SELECT * FROM TB_Bateaux WHERE Cle_primaire=? '; $reponse = Requete_preparee_bdd($requete, array( array('i', $_SESSION['Bateaux']['bateau']['Cle_primaire'])), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { $bateau = $donnees; $sous_req = "SELECT Adresse_mac FROM TB_Cartes WHERE Validite = 1 AND Cle_primaire = ".$bateau['ID_Carte']; $sous_rep = Requete_bdd($sous_req, __FILE__, __LINE__); $sous_don = Recherche_ligne_bdd($sous_rep); $bateau['Adresse_mac'] = $sous_don['Adresse_mac']; Liberation_jeu_de_resultat_bdd($sous_rep); // Mise en forme de textes : if ($donnees['Date_derniere_maj'] < "2020-01-02") $bateau['Date_derniere_maj'] = "".Recuperer_texte("bateau","details","derniere_connexion","jamais").""; else { $bateau['Date_derniere_maj'] = Formatage_date($donnees['Date_derniere_maj']); $_SESSION['Bateaux']['derniere_maj'] = $donnees['Date_derniere_maj']; } $bateau['Commentaires'] = htmlspecialchars(stripcslashes($bateau['Commentaires'])); } Liberation_jeu_de_resultat_bdd($reponse); // Recherche de la version en cours sur le bateau : $bateau['version'] = "Version inconnue"; $requete = 'SELECT Valeur FROM TB_BATEAUX_Systeme WHERE ID_Bateau=? AND Nom="Version_soft_no_package" AND Validite=1 '; $reponse = Requete_preparee_bdd($requete, array( array('i', $_SESSION['Bateaux']['bateau']['Cle_primaire'])), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { $bateau['version'] = $donnees['Valeur']; } Liberation_jeu_de_resultat_bdd($reponse); /* for ($i = 0; $i < $_SESSION['acces']; $i++){ if ($_SESSION['bateau_shipmember'][$i]['ID_Bateau'] == $bateau['Cle_primaire']){ $acces = $_SESSION['bateau_shipmember'][$i]['Niveau_acces']; break; } else $acces = 0; } if ($_SESSION['acces'] == 0) $acces = 0; $requete = 'SELECT * FROM TB_Lien_bateau_shipmember_acces WHERE Validite=1 AND Niveau_acces='.$acces; $reponse = Requete_bdd($requete, __FILE__, __LINE__); $donnees = Recherche_ligne_bdd($reponse); $acces_profil = $donnees; */ //--------------------------------------------- // Recherche des droits d'accès au bateau : //--------------------------------------------- if ($_SESSION['shipmember']['Niveau_acces'] >= NIVEAU_ACCES_MINI_ADMINISTRATEUR) // Dans le cas des administrateurs, on accorde tous les droits, indépendamment des paramètres du bateau { $acces_profil['Creation_profils'] = 1; $acces_profil['Devalidation_profils'] = 2; $acces_profil['Consultation_donnees'] = 2; $acces_profil['Modification_acces'] = 1; } else { // Valeurs par défaut : $id_type_acces = 0; $acces_profil['Creation_profils'] = 0; $acces_profil['Devalidation_profils'] = 0; $acces_profil['Consultation_donnees'] = 0; $acces_profil['Modification_acces'] = 0; // Recherche de l'ID de l'accès le plus élevé pour ce bateau et ce shipmember : $requete = 'SELECT ID_Type_acces_bateau_shipmember FROM TB_Lien_bateau_shipmember WHERE Validite=1 AND Validite_acces=1 AND ID_Shipmember=? AND ID_Bateau=? AND Fin_validite>=? ORDER BY ID_Type_acces_bateau_shipmember DESC LIMIT 1'; $reponse = Requete_preparee_bdd($requete, array( array('i', $_SESSION['shipmember']['Cle_primaire']), array('i', $_SESSION['Bateaux']['bateau']['Cle_primaire']), array('s', date_format(date_create(), 'Y-m-d H:i:s'))), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { $id_type_acces = $donnees['ID_Type_acces_bateau_shipmember']; } Liberation_jeu_de_resultat_bdd($reponse); if ($_SESSION['Bateaux']['bateau']['Cle_primaire'] == 25 && $id_type_acces == 0){ $id_type_acces = 4; } // Recherche des caractérirtiques de l'accès le plus élevé trouvé : if ($id_type_acces > 0) { $requete = 'SELECT * FROM TB_Types_acces_bateau_shipmember WHERE Validite=1 AND Cle_primaire=?'; $reponse = Requete_preparee_bdd($requete, array( array('i', $id_type_acces)), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { $acces_profil = $donnees; } Liberation_jeu_de_resultat_bdd($reponse); } } // Récupération des types d'accès possibles : //$requete = 'SELECT Nom, Niveau_acces FROM TB_Lien_bateau_shipmember_acces WHERE Validite = 1 AND Niveau_acces < 99'; $requete = 'SELECT * FROM TB_Types_acces_bateau_shipmember WHERE Validite=1 '; $reponse = Requete_bdd($requete, __FILE__, __LINE__); $type_acces_nb = 0; while($donnees = Recherche_ligne_bdd($reponse)){ if ($_SESSION['langue'] == "EN") $donnees['Nom'] = $donnees['Nom_en']; else $donnees['Nom'] = $donnees['Nom_fr']; $type_acces[$type_acces_nb++] = $donnees; } Liberation_jeu_de_resultat_bdd($reponse); // Génération d'un nouveau code d'acces : if (isset($_POST['generer_code_acces'])){ $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $unique = false; do { // Vérifier si le code n'est pas déjà utilisé $code_acces = ''; for ($i = 0; $i < 6; $i++) { $code_acces .= $characters[random_int(0, $charactersLength - 1)]; } $req = 'SELECT Code FROM TB_Lien_bateau_shipmember WHERE Code="'.$code_acces.'"'; $rep = Requete_bdd($req, __FILE__, __LINE__); $donnees = Recherche_ligne_bdd($rep); if ($donnees == NULL) $unique = true; } while($unique == false); if (isset($_POST['date_validite']) && (!empty($_POST['date_validite']))){ $date = $_POST['date_validite']." 00:00:00"; } else $date = '9999-12-31 23:59:59'; $requete = 'INSERT INTO TB_Lien_bateau_shipmember(ID_Bateau, Code, Fin_validite, Cree_par, ID_Type_acces_bateau_shipmember) VALUES (?,?,?,?,?)'; $reponse = Requete_preparee_bdd($requete, array( array('i', $bateau['Cle_primaire']), array('s', $code_acces), array('s', $date), array('i', $_SESSION['shipmember']['Cle_primaire']), array('i', $_POST['type_acces']) ),__FILE__, __LINE__); $no = Recuperation_id_cree_bdd(); if ( code_acces_pdf($code_acces, $no, $bateau['Adresse_mac'],"")== 0 ) Entete_page_html(); // Message d'information : // if (isset($_SESSION['pdf']['src']) && $_SESSION['pdf']['src'] != '') // $message_information.= "Télécharger le code d'accès d' ici "; // $_SESSION['pdf']['src'] =''; } $nb_onglets = 0; //----------------------------------------------------------- // Recherche des informations complémentaires sur le bateau : switch($_SESSION['Bateaux']['type_details_bateau']) { //========================= case "gerer_les_acces": { $requete = 'SELECT * FROM TB_Lien_bateau_shipmember WHERE Validite=1 AND ID_Bateau='.$bateau['Cle_primaire'].' AND ID_Shipmember!=0 '; $reponse = Requete_bdd($requete, __FILE__, __LINE__); $utilisateur_acces_nb = 0; while ($donnees = Recherche_ligne_bdd($reponse)){ // Récupérer le nom et le prénom du shipmember qui a accès : $sous_req = ' SELECT Nom, Prenom, Email FROM TB_Shipmembers WHERE Validite=1 AND ID='.$donnees['ID_Shipmember'].''; $sous_rep = Requete_bdd($sous_req, __FILE__, __LINE__); $sous_donnees = Recherche_ligne_bdd($sous_rep); $donnees['sm_Nom'] = $sous_donnees['Nom']; $donnees['sm_Prenom'] = $sous_donnees['Prenom']; $donnees['sm_Email'] = $sous_donnees['Email']; // Récupérer le nom et le prénom du shipmember qui a crée le lien : $sous_req = ' SELECT Nom, Prenom FROM TB_Shipmembers WHERE Validite=1 AND ID='.$donnees['Cree_par'].''; $sous_rep = Requete_bdd($sous_req, __FILE__, __LINE__); $sous_donnees = Recherche_ligne_bdd($sous_rep); $donnees['cree_par_Nom'] = $sous_donnees['Nom']; $donnees['cree_par_Prenom'] = $sous_donnees['Prenom']; // Récupérer le niveau accès garantie à l'utilisateur : //$sous_req = ' SELECT Nom FROM TB_Lien_bateau_shipmember_acces WHERE Validite=1 AND Niveau_acces='.$donnees['Niveau_acces'].''; $sous_req = 'SELECT * FROM TB_Types_acces_bateau_shipmember WHERE Validite=1 AND Cle_primaire='.$donnees['ID_Type_acces_bateau_shipmember'].' '; $sous_rep = Requete_bdd($sous_req, __FILE__, __LINE__); $sous_donnees = Recherche_ligne_bdd($sous_rep); if ($_SESSION['langue'] == "EN") $donnees['Niveau_acces_nom'] = $sous_donnees['Nom_en']; else $donnees['Niveau_acces_nom'] = $sous_donnees['Nom_fr']; $utilisateur_acces[$utilisateur_acces_nb++] = $donnees; } break; } //========================= case "TB_BATEAUX_Carte": { $timestamp_debut = hrtime(TRUE); // En ns // Récupérer les positions du bateaux pour le maps (30 derniers jours) $date = date_create(); date_sub($date, date_interval_create_from_date_string(DATE_SEUIL_1.' days')); $date_debut_carte = date_format($date, 'Y-m-d H:00:00'); $data_map = []; // $requete = 'SELECT DISTINCT Date FROM ( // SELECT Date FROM TB_BATEAUX_Mesures_capteurs WHERE ID_Bateau = '.$_SESSION['Bateaux']['bateau']['Cle_primaire'].' AND ID = 7 AND ID_Variable = 64 AND Date > "'.$date_debut_carte.'" UNION ALL // SELECT Date FROM TB_BATEAUX_Mesures_capteurs WHERE ID_Bateau = '.$_SESSION['Bateaux']['bateau']['Cle_primaire'].' AND ID = 8 AND ID_Variable = 64 AND Date > "'.$date_debut_carte.'" // ) uni ORDER BY Date;'; // echo "Requête = ".$requete."
"; // Temps de traitement = 1 470 ms pour 'Et Si... 2' // Recherche des coordonnées du début de carte : // Latitude : $requete = 'SELECT Date, Valeur FROM TB_BATEAUX_Mesures_capteurs WHERE ID_Bateau='.$_SESSION['Bateaux']['bateau']['Cle_primaire'].' AND ID=7 AND ID_Variable=64 AND Date<="'.$date_debut_carte.'" ORDER BY Date LIMIT 1'; $reponse = Requete_bdd($requete, __FILE__, __LINE__); $donnees = Recherche_ligne_bdd($reponse); if ($donnees == NULL) // S'il n'y a aucune latitude AVANT le début de la carte, on cherche la première APRES la date de début : { $requete = 'SELECT Date, Valeur FROM TB_BATEAUX_Mesures_capteurs WHERE ID_Bateau='.$_SESSION['Bateaux']['bateau']['Cle_primaire'].' AND ID=7 AND ID_Variable=64 AND Date>"'.$date_debut_carte.'" ORDER BY Date LIMIT 1'; $reponse = Requete_bdd($requete, __FILE__, __LINE__); $donnees = Recherche_ligne_bdd($reponse); } else{ } $data_map[0]['latitude'] = ($donnees != NULL) ? $donnees['Valeur'] : 45.735237; // NB : s'il n'y aucune valeur ni AVANT ni APRES, c'est qu'il n'y a pas de courbe à tracer... // Longitude : $requete = 'SELECT Date, Valeur FROM TB_BATEAUX_Mesures_capteurs WHERE ID_Bateau='.$_SESSION['Bateaux']['bateau']['Cle_primaire'].' AND ID=8 AND ID_Variable=64 AND Date<="'.$date_debut_carte.'" ORDER BY Date LIMIT 1'; $reponse = Requete_bdd($requete, __FILE__, __LINE__); $donnees = Recherche_ligne_bdd($reponse); if ($donnees == NULL) // S'il n'y a aucune longitude AVANT le début de la carte, on cherche la première APRES la date de début : { $requete = 'SELECT Date, Valeur FROM TB_BATEAUX_Mesures_capteurs WHERE ID_Bateau='.$_SESSION['Bateaux']['bateau']['Cle_primaire'].' AND ID=8 AND ID_Variable=64 AND Date>"'.$date_debut_carte.'" ORDER BY Date LIMIT 1'; $reponse = Requete_bdd($requete, __FILE__, __LINE__); $donnees = Recherche_ligne_bdd($reponse); } $data_map[0]['longitude'] = ($donnees != NULL) ? $donnees['Valeur'] : 4.804827; $data_map[0]['date'] = $date_debut_carte; $nb_data = 1; // Requête de tous les points sur la période : $requete = 'SELECT Date, ID, Valeur FROM TB_BATEAUX_Mesures_capteurs WHERE ID_Bateau='.$_SESSION['Bateaux']['bateau']['Cle_primaire'].' AND (ID=7 OR ID=8) AND ID_Variable=64 AND Date>"'.$date_debut_carte.'" ORDER BY Date'; // echo "Requête = ".$requete."
"; // Temps de traitement = 7.9ms pour Et Si... 2 $reponse = Requete_bdd($requete, __FILE__, __LINE__); while($donnees = Recherche_ligne_bdd($reponse)) { $date_point = Formatage_date($donnees['Date']).' [UTC]'; $date_point_sans_formatage = $donnees['Date']; $jour = substr($donnees['Date'], 8, 2); if ($date_point == $data_map[$nb_data - 1]['date']) // Si on est sur la même date que la data précédente, on ne créée pas de nouveau point mais on ajoute juste la LAT ou LON sur le point précédent : { if ($donnees['ID'] == 7) { $data_map[$nb_data - 1]['latitude'] = $donnees['Valeur']; $data_map[$nb_data - 1]['latitude_dms'] = Conversion_DECtoDMS("LAT", $donnees['Valeur']); } else { $data_map[$nb_data - 1]['longitude'] = $donnees['Valeur']; $data_map[$nb_data - 1]['longitude_dms'] = Conversion_DECtoDMS("LON", $donnees['Valeur']); } } else // Si on est sur une date différente de la dat précédente, on créée un nouveau point : { $data_map[$nb_data]['date'] = $date_point; $data_map[$nb_data]['raw_date'] = $date_point_sans_formatage; // Couleur unie : $data_map[$nb_data]['couleur'] = '#004563'; $data_map[$nb_data]['opacite'] = 0.8; // Couleur de tracé alternée (bleu clair / bleu foncé) les jours pairs et impairs : // if (($jour % 2) == 0) $data_map[$nb_data]['couleur'] = '#75B9DA'; //'#00FF00'; // else $data_map[$nb_data]['couleur'] = '#004563'; //'#FF0000'; // Couleur de tracé avec 10 couleurs tournantes : /* switch($jour % 10) { default : case 0 : { $data_map[$nb_data]['couleur'] = '#00FF99'; $data_map[$nb_data]['opacite'] = 1.0; break; } // Vert d'eau case 1 : { $data_map[$nb_data]['couleur'] = '#FFC000'; $data_map[$nb_data]['opacite'] = 0.8; break; } // Orange case 2 : { $data_map[$nb_data]['couleur'] = '#004563'; $data_map[$nb_data]['opacite'] = 0.8; break; } // Bleu Koriolan foncé case 3 : { $data_map[$nb_data]['couleur'] = '#990099'; $data_map[$nb_data]['opacite'] = 0.8; break; } // Violet case 4 : { $data_map[$nb_data]['couleur'] = '#00B050'; $data_map[$nb_data]['opacite'] = 0.6; break; } // Vert case 5 : { $data_map[$nb_data]['couleur'] = '#FF0000'; $data_map[$nb_data]['opacite'] = 0.4; break; } // Rouge case 6 : { $data_map[$nb_data]['couleur'] = '#FFFF00'; $data_map[$nb_data]['opacite'] = 0.8; break; } // Jaune case 7 : { $data_map[$nb_data]['couleur'] = '#FF7DFF'; $data_map[$nb_data]['opacite'] = 0.9; break; } // Fushia case 8 : { $data_map[$nb_data]['couleur'] = '#00B0F0'; $data_map[$nb_data]['opacite'] = 0.6; break; } // Bleu roi case 9 : { $data_map[$nb_data]['couleur'] = '#996633'; $data_map[$nb_data]['opacite'] = 0.5; break; } // Marron } */ if ($donnees['ID'] == 7) { $data_map[$nb_data]['latitude'] = $donnees['Valeur']; $data_map[$nb_data]['longitude'] = $data_map[$nb_data-1]['longitude']; // Dans le doute, on met à jour la LON avec la dernière valeur connue } else { $data_map[$nb_data]['longitude'] = $donnees['Valeur']; $data_map[$nb_data]['latitude'] = $data_map[$nb_data-1]['latitude']; // Dans le doute, on met à jour la LAT avec la dernière valeur connue } $data_map[$nb_data]['latitude_dms'] = Conversion_DECtoDMS("LAT", $data_map[$nb_data]['latitude']); $data_map[$nb_data]['longitude_dms'] = Conversion_DECtoDMS("LON", $data_map[$nb_data]['longitude']); $nb_data ++; } } // Batteries du bateau $requete = 'SELECT Nom, Tension_nominale, Soc FROM TB_BATEAUX_Batteries WHERE ID_Bateau=? AND Validite=1'; $reponse = Requete_preparee_bdd($requete, array( array('i', $bateau['Cle_primaire'])), __FILE__, __LINE__); $nb_batteries = 0; while($donnees = Recherche_ligne_bdd($reponse)){ $batteries[$nb_batteries++] = $donnees; } Liberation_jeu_de_resultat_bdd($reponse); // Rservoirs du bateau $nb_familles = 0; // Recherche des onglets configurés sur le bateau : $requete = 'SELECT Cle_primaire, Nom FROM TB_BATEAUX_Familles_reservoirs WHERE ID_Bateau=? AND Validite=1 ORDER BY Priorite_affichage ASC '; $reponse = Requete_preparee_bdd($requete, array( array('i', $bateau['Cle_primaire'])), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { // Recherche du nombre de réservoirs affectés à cette famille : $sous_requete = 'SELECT COUNT(*) as Total FROM TB_BATEAUX_Reservoirs WHERE ID_Bateau=? AND Validite=1 AND ID_Famille_reservoirs=? '; $sous_reponse = Requete_preparee_bdd($sous_requete, array( array('i', $bateau['Cle_primaire']), array('i', $donnees['Cle_primaire'])), __FILE__, __LINE__); $sous_donnees = Recherche_ligne_bdd($sous_reponse); if ($sous_donnees['Total'] > 0) { $bateau['familles'][$nb_familles] = $donnees; // Ajout de la famille au tableau des familles // Recherche des réservoirs appartenant à la famille en cours : $reservoirs_requete = 'SELECT * FROM TB_BATEAUX_Reservoirs '; $reservoirs_requete .= 'WHERE ID_Bateau=? AND Validite=1 AND ID_Famille_reservoirs=? ORDER BY ABS(Priorite_affichage_accueil) ASC'; $reservoirs_reponse = Requete_preparee_bdd($reservoirs_requete, array( array('i', $bateau['Cle_primaire']), array('i', $donnees['Cle_primaire'])), __FILE__, __LINE__); while ($reservoir = Recherche_ligne_bdd($reservoirs_reponse)) { $bateau['familles'][$nb_familles]['reservoirs'][] = $reservoir; // Ajout du réservoir au tableau de réservoirs de la famille } Liberation_jeu_de_resultat_bdd($reservoirs_reponse); $nb_familles++; } } Liberation_jeu_de_resultat_bdd($reponse); $nb_onglets = 0; $timestamp_fin = hrtime(TRUE); // En ns //echo "Temps exécution = ".number_format(($timestamp_fin - $timestamp_debut)/(1000 * 1000), 1, ".", " ")." ms et nb points = ".$nb_data."
"; break; } //========================= case "TB_BATEAUX_Systeme": { if (isset($_SESSION['Bateaux']['date_version']) && $_SESSION['Bateaux']['date_version'] != "") $date_ver = str_replace("T"," ",$_SESSION['Bateaux']['date_version']).":00"; if (isset($_SESSION['Bateaux']['date_version']) && $_SESSION['Bateaux']['date_version'] != "" && $_SESSION['Bateaux']['date_version'] != $_SESSION['Bateaux']['derniere_maj']){ $requete = 'SELECT * FROM '.$_SESSION['Bateaux']['type_details_bateau'].'_archive WHERE ID_Bateau=? AND SUBSTR(date_maj, 1, 13) = (SELECT SUBSTR(date_maj, 1, 13) from '.$_SESSION['Bateaux']['type_details_bateau'].'_archive WHERE SUBSTR(date_maj, 1, 13) < SUBSTR("'.$date_ver.'", 1, 13) ORDER BY date_maj DESC limit 1) ORDER BY Nom ASC'; } else { $requete = 'SELECT * FROM '.$_SESSION['Bateaux']['type_details_bateau'].' WHERE ID_Bateau=? AND Validite=1 ORDER BY Nom ASC'; } $reponse = Requete_preparee_bdd($requete, array( array('i', $bateau['Cle_primaire'])), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { $bateau['details_bateau'][''.$donnees['Nom'].'']['Valeur'] = $donnees['Valeur']; if (isset($donnees['Description'])) $bateau['details_bateau'][''.$donnees['Nom'].'']['Description'] = $donnees['Description']; } Liberation_jeu_de_resultat_bdd($reponse); // Mise en forme de certains champs et valeurs par défaut lorsqu'aucune donnée n'est encore disponible : if(isset($bateau['details_bateau']['Version_soft_no_package']['Valeur'])) $bateau['version'] = $bateau['details_bateau']['Version_soft_no_package']['Valeur']; elseif(isset($bateau['details_bateau']['Version_soft_package']['Valeur'])) $bateau['version'] = $bateau['details_bateau']['Version_soft_package']['Valeur']; else $bateau['version'] = 'inconnue'; if (!isset($bateau['details_bateau']['Version_soft_modem']['Valeur'])) $bateau['details_bateau']['Version_soft_modem']['Valeur'] = 'inconnue'; if (!isset($bateau['details_bateau']['No_iccid']['Valeur'])) $bateau['details_bateau']['No_iccid']['Valeur'] = 'inconnu'; if (!isset($bateau['details_bateau']['No_imei']['Valeur'])) $bateau['details_bateau']['No_imei']['Valeur'] = 'inconnu'; if (!isset($bateau['details_bateau']['No_imsi']['Valeur'])) $bateau['details_bateau']['No_imsi']['Valeur'] = 'inconnu'; //------------------------------------- // Recherche des cartes existantes à bord : $nb_cartes = 0; $requete=""; //$requete = 'SELECT * FROM TB_BATEAUX_Cartes WHERE ID_Bateau=? AND Validite=1 AND Presence=1 ORDER BY Adresse_k_bus'; if (isset($_SESSION['Bateaux']['date_version']) && $_SESSION['Bateaux']['date_version'] != ""){ $requete = 'SELECT * FROM TB_BATEAUX_Cartes_archive WHERE ID_Bateau=? AND SUBSTR(date_maj, 1, 13) = (SELECT SUBSTR(date_maj, 1, 13) from TB_BATEAUX_Cartes_archive WHERE SUBSTR(date_maj, 1, 13) < substr("'.$date_ver.'",1 ,13) ORDER BY date_maj DESC limit 1) ORDER BY Adresse_k_bus'; } else { $requete = 'SELECT * FROM TB_BATEAUX_Cartes WHERE ID_Bateau=? AND Validite=1 ORDER BY Adresse_k_bus'; } //echo "Requête = [".$requete."]
"; $reponse = Requete_preparee_bdd($requete, array( array('i', $bateau['Cle_primaire'])), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { // Mise en forme de certains champs : switch($donnees['Type']) { //------------------------------- case TYPE_CARTE_COMPAGNON: { $donnees['nom_type'] = "ShipBase"; break; } //------------------------------- case TYPE_CARTE_SP812: case TYPE_CARTE_SP8DC: { if ($donnees['Type'] == TYPE_CARTE_SP812) $donnees['nom_type'] = "ShipPower812"; else $donnees['nom_type'] = "ShipPower8DC"; // Valeurs par défaut des circuits affectés à ce module : for ($i = 0; $i < 8; $i++) $donnees['circuits'][$i]['Nom'] = "--- Non affecté ---"; // Recherche des circuits réellement affectés à ce module : $sous_requete = 'SELECT * FROM TB_BATEAUX_Circuits WHERE ID_Bateau='.$bateau['Cle_primaire'].' AND No_carte='.$donnees['Adresse_k_bus'].' AND Validite=1 ORDER BY No_circuit_carte'; //echo "Requête = [".$sous_requete."]
"; $sous_reponse = Requete_bdd($sous_requete, __FILE__, __LINE__); while ($sous_donnees = Recherche_ligne_bdd($sous_reponse)) { if ($sous_donnees['ID_Circuit_esclave'] >= 0) $donnees['circuits'][$sous_donnees['No_circuit_carte']]['Nom'] = ''.$sous_donnees['Nom'].''; else $donnees['circuits'][$sous_donnees['No_circuit_carte']]['Nom'] = ''.$sous_donnees['Nom'].' [circuit renfort]'; } Liberation_jeu_de_resultat_bdd($sous_reponse); break; } //------------------------------- case TYPE_CARTE_SBS1224: { $donnees['nom_type'] = "ShipBS"; break; } //------------------------------- case TYPE_CARTE_SP4AC: { $donnees['nom_type'] = "ShipPower4AC"; // Valeurs par défaut des circuits affectés à ce module : for ($i = 0; $i < 4; $i++) $donnees['circuits'][$i]['Nom'] = "--- Non affecté ---"; // Recherche des circuits réellement affectés à ce module : $sous_requete = 'SELECT * FROM TB_BATEAUX_Circuits WHERE ID_Bateau='.$bateau['Cle_primaire'].' AND No_carte='.$donnees['Adresse_k_bus'].' AND Validite=1 ORDER BY No_circuit_carte'; //echo "Requête = [".$sous_requete."]
"; $sous_reponse = Requete_bdd($sous_requete, __FILE__, __LINE__); while ($sous_donnees = Recherche_ligne_bdd($sous_reponse)) { $donnees['circuits'][$sous_donnees['No_circuit_carte']]['Nom'] = ''.$sous_donnees['Nom'].''; } Liberation_jeu_de_resultat_bdd($sous_reponse); break; } //------------------------------- default : { $donnees['nom_type'] = "Type inconnu..."; break; } } if ($donnees['Flag_resistance_terminaison'] == 1) $donnees['libelle_resistance_terminaison'] = "Oui"; else $donnees['libelle_resistance_terminaison'] = "Non"; $cartes[$nb_cartes ++] = $donnees; } Liberation_jeu_de_resultat_bdd($reponse); break; } //========================= case "TB_BATEAUX_Capteurs": { if (isset($_SESSION['Bateaux']['date_version']) && $_SESSION['Bateaux']['date_version'] != "") $date_ver = str_replace("T"," ",$_SESSION['Bateaux']['date_version']).":00"; $nb_entrees = 0; if (isset($_SESSION['Bateaux']['date_version']) && $_SESSION['Bateaux']['date_version'] != ""){ $requete = 'SELECT * FROM '.$_SESSION['Bateaux']['type_details_bateau'].'_archive WHERE ID_Bateau=? AND SUBSTR(date_maj, 1, 13) = (SELECT SUBSTR(date_maj, 1, 13) from '.$_SESSION['Bateaux']['type_details_bateau'].'_archive WHERE SUBSTR(date_maj, 1, 13) < SUBSTR("'.$date_ver.'", 1, 13) ORDER BY date_maj DESC limit 1) ORDER BY Priorite_affichage_accueil ASC'; } else { // Recherche des onglets configurés sur le bateau : $requete = 'SELECT Cle_primaire, Nom FROM TB_BATEAUX_Familles_capteurs WHERE ID_Bateau=? AND Validite=1 ORDER BY Priorite_affichage ASC '; $reponse = Requete_preparee_bdd($requete, array( array('i', $bateau['Cle_primaire'])), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { // Recherche du nombre de capteurs affectés à cette famille : $sous_requete = 'SELECT COUNT(*) as Total FROM TB_BATEAUX_Capteurs WHERE ID_Bateau=? AND Validite=1 AND ID_Famille_capteurs=? '; $sous_reponse = Requete_preparee_bdd($sous_requete, array( array('i', $bateau['Cle_primaire']), array('i', $donnees['Cle_primaire'])), __FILE__, __LINE__); $sous_donnees = Recherche_ligne_bdd($sous_reponse); if ($sous_donnees['Total'] > 0) $bateau['onglets'][$nb_onglets ++] = $donnees; // On ne présente que les familles ayant au moins 1 capteur... Liberation_jeu_de_resultat_bdd($sous_reponse); } Liberation_jeu_de_resultat_bdd($reponse); // Affectation du premier onglet si aucun n'est sélectionné : if ($nb_onglets > 0) { if ($_SESSION['Bateaux']['bateau']['ID_Famille'] == 0) $_SESSION['Bateaux']['bateau']['ID_Famille'] = $bateau['onglets'][0]['Cle_primaire']; $filtre_famille = " ID_Famille_capteurs=".$_SESSION['Bateaux']['bateau']['ID_Famille']." "; } else $filtre_famille = " 1 "; // Recherche des éléments appartenant à l'onglet en cours : $requete = 'SELECT * FROM TB_BATEAUX_Capteurs '; $requete .= 'WHERE ID_Bateau=? AND Validite=1 AND '.$filtre_famille.' ORDER BY ABS(Priorite_affichage_accueil) ASC'; } $reponse = Requete_preparee_bdd($requete, array( array('i', $bateau['Cle_primaire'])), __FILE__, __LINE__); // echo 'Requête = [ '.$requete.' ]
'; while ($donnees = Recherche_ligne_bdd($reponse)) { $bateau['details_bateau'][$nb_entrees] = $donnees; // Recherche de l'unité du capteur : $sous_requete = 'SELECT Unite FROM TB_BATEAUX_Variables WHERE ID_Bateau=? AND Validite=1 AND Cle_primaire=? '; $sous_reponse = Requete_preparee_bdd($sous_requete, array( array('i', $bateau['Cle_primaire']), array('i', $donnees['ID_Variable'])), __FILE__, __LINE__); $sous_donnees = Recherche_ligne_bdd($sous_reponse); $bateau['details_bateau'][$nb_entrees]['Unite'] = $sous_donnees['Unite']; Liberation_jeu_de_resultat_bdd($sous_reponse); $nb_entrees ++; } Liberation_jeu_de_resultat_bdd($reponse); if ($_SESSION['Bateaux']['type_courbe_details_bateau'] != "Aucune") { // Préparation des paramètres spécifiques à chaque type (mais communs à tous les éléments de ce type) : $haxis_format = "'dd/MM'"; $langue = "'".$_SESSION['langue']."'"; $couleur_1 = "'rgb(117, 185, 218)'"; // Valeur par défaut (bleu Koriolan) $couleur_2 = "'rgb(117, 185, 218)'"; // Valeur par défaut (bleu Koriolan) $couleur_3 = "'rgb(117, 185, 218)'"; // Valeur par défaut (bleu Koriolan) $titre_graphique = Recuperer_texte("bateau","details","capteurs","titre_graphe1"); if ($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Tous") $nom_table = "TB_BATEAUX_Mesures_capteurs"; if ($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Synthese") $nom_table = "TB_BATEAUX_Archive_mesures_capteurs"; $diviseur_unite = 1; $variables = "SELECT Cle_primaire, Nom, Unite FROM TB_BATEAUX_Variables WHERE Type = ? AND ID_Bateau = ? ORDER BY Priorite_affichage"; // $variables = "SELECT Cle_primaire, Nom, Unite FROM TB_BATEAUX_Variables WHERE Type = ? AND ID_Bateau = ? AND Priorite_affichage != 0 ORDER BY Priorite_affichage"; $type_var = 3; switch($_SESSION['Bateaux']['type_courbe_details_bateau']) { //=============== case "Aucune": break; //=============== default: $_SESSION['Bateaux']['type_courbe_details_bateau'] = "Synthese"; // Pas de break; case "Synthese" : { $nb_jours_periode = 360; $regroupement_donnees = 1; // * 60; // En secondes ATTENTION : Pas sûr car passé en ms dans la requête ci-desssous !!!! A Vérifier ! if ((isset($_SESSION['Bateaux']['graphe_date_debut']) && $_SESSION['Bateaux']['graphe_date_debut'] != '') || isset($_SESSION['Bateaux']['graphe_date_fin']) && $_SESSION['Bateaux']['graphe_date_fin'] != ''){ if(isset($_SESSION['Bateaux']['graphe_date_debut']) && $_SESSION['Bateaux']['graphe_date_debut'] != '') $titre_graphique .= Recuperer_texte("bateau","details","all","titre_graphe5").str_replace("T"," ",$_SESSION['Bateaux']['graphe_date_debut']).":00"; if(isset($_SESSION['Bateaux']['graphe_date_fin']) && $_SESSION['Bateaux']['graphe_date_fin'] != '') $titre_graphique .= Recuperer_texte("bateau","details","all","titre_graphe6").str_replace("T"," ",$_SESSION['Bateaux']['graphe_date_fin']).":00"; $titre_graphique .= Recuperer_texte("bateau","details","all","titre_graphe"); } else $titre_graphique .= Recuperer_texte("bateau","details","capteurs","titre_graphe2").($nb_jours_periode).Recuperer_texte("bateau","details","capteurs","titre_graphe3"); $requete = ' SELECT (UNIX_TIMESTAMP(Date) * 1000) AS Date, '; // Le x1000 permet d'avoir directement un timestamp en ms (nécessaire pour la fonction Date de JS) $requete .= ' Valeur_maxi AS Max, '; $requete .= ' Valeur_mini AS Min, '; $requete .= ' Valeur_moyenne AS Avg '; $requete .= ' FROM '.$nom_table.' WHERE ID_Bateau=? AND ID=? AND ID_Variable=? AND Date>? AND Date<=? '; $requete .= ' GROUP BY (Date DIV 1000000) ORDER BY Date '; // Le 'DIV 1000000' permet de passer de timestamp à des jours (https://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-conversion.html ) $table = array(); $table['cols'] = array( array('label' => 'Date', 'type' => 'datetime'), array('label' => 'Max', 'type' => 'number'), // Nb : le nom de chaque champs (comme 'Max') est visible à l'écran quand on balade la crosshair. array('label' => 'Min', 'type' => 'number'), // ... Il vaut donc mieux leur donner un nom explicite, notamment sur ce graphique avec plusieurs courbes. array('label' => 'Avg', 'type' => 'number') // ... A noter que la question de la traduction peut se poser... ); $nom_val_max = "Max"; // Nom de la variable sur laquelle la valeur max de la courbe sera calculée $nom_val_min = "Min"; // Nom de la variable sur laquelle la valeur min de la courbe sera calculée $couleur_1 = "'rgb(0, 69, 99)'"; $couleur_2 = "'rgb(117,185,218)'"; $couleur_3 = "'rgb(171, 215, 237)'"; break; } //=============== case "Tous" : { $nb_jours_periode = DATE_SEUIL_1; $regroupement_donnees = 1; // * 60; // En secondes ATTENTION : Pas sûr car passé en ms dans la requête ci-desssous !!!! A Vérifier ! $titre_graphique .= Recuperer_texte("bateau","details","capteurs","titre_graphe2").($nb_jours_periode).Recuperer_texte("bateau","details","capteurs","titre_graphe4"); $requete = ' SELECT (UNIX_TIMESTAMP(Date) * 1000) AS Date, '; // Le x1000 permet d'avoir directement un timestamp en ms (nécessaire pour la fonction Date de JS) $requete .= ' Valeur AS Val '; $requete .= ' FROM '.$nom_table.' WHERE ID_Bateau=? AND ID=? AND ID_Variable=? AND Date>? AND Date<=?'; $requete .= ' GROUP BY (Date DIV '.$regroupement_donnees.') ORDER BY Date '; $table = array(); $table['cols'] = array( array('label' => 'Date', 'type' => 'datetime'), array('label' => 'Val', 'type' => 'number'), array('label' => 'Valeur_2', 'type' => 'number'), array('label' => 'Valeur_3', 'type' => 'number') ); $nom_val_max = "Val"; // Nom de la variable sur laquelle la valeur max de la courbe sera calculée $nom_val_min = "Val"; // Nom de la variable sur laquelle la valeur min de la courbe sera calculée $couleur_1 = "'rgb(0, 69, 99)'"; $couleur_2 = "'rgb(117,185,218)'"; $couleur_3 = "'rgb(171, 215, 237)'"; break; } } // Préparation du tableau de valeurs : $min = 999999; $max = -999999; $rows = array(); // Calcul des dates de début de filtrage des données du graphique : $date = date_create(); $date_fin = date_format($date, 'Y-m-d H:i:s'); date_sub($date, date_interval_create_from_date_string(''.$nb_jours_periode.' days')); $date_debut = date_format($date, 'Y-m-d H:i:s'); if ($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Synthese"){ if(isset($_SESSION['Bateaux']['graphe_date_debut']) && $_SESSION['Bateaux']['graphe_date_debut'] != '') $date_debut = str_replace("T"," ",$_SESSION['Bateaux']['graphe_date_debut']).":00"; if(isset($_SESSION['Bateaux']['graphe_date_fin']) && $_SESSION['Bateaux']['graphe_date_fin'] != '') $date_fin = str_replace("T"," ",$_SESSION['Bateaux']['graphe_date_fin']).":00"; } // Récupération des datas : // if ($_SESSION['Bateaux']['id_variable_details_bateau'] == 0){ // $_SESSION['Bateaux']['id_variable_details_bateau'] = $variables[0]['Cle_primaire']; // Variable par default pour ne pas avoir un graphe vide // } $reponse = Requete_preparee_bdd($requete, array( array('i', $bateau['Cle_primaire']), array('i', $_SESSION['Bateaux']['id_entree_details_bateau']), array('i', $_SESSION['Bateaux']['id_variable_details_bateau']), array('s', $date_debut), array('s', $date_fin)), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { // Préparation de la chaine de date selon format "Date(Year, Month, Day, Hours, Minutes, Seconds, Milliseconds)" : $chaine_date = 'Date('.$donnees['Date'].')'; // On créée la chaine qui appellera la fonction Date avec le timestamp (soit une chaine du genre 'Date(124524415214225)') $temp = array(); $temp[] = array('v' => $chaine_date); switch($_SESSION['Bateaux']['type_courbe_details_bateau']) { case "Synthese" : { $temp[] = array('v' => $donnees['Max']); $temp[] = array('v' => $donnees['Min']); $temp[] = array('v' => $donnees['Avg']); break; } case "Tous" : { $temp[] = array('v' => $donnees['Val']); break; } } $rows[] = array('c' => $temp); if ($donnees[''.$nom_val_max.''] != '' && $donnees[''.$nom_val_max.''] > $max) $max = $donnees[''.$nom_val_max.'']; if ($donnees[''.$nom_val_min.''] != '' && $donnees[''.$nom_val_min.''] < $min) $min = $donnees[''.$nom_val_min.'']; } Liberation_jeu_de_resultat_bdd($reponse); // Préparation des données : // Création des faux points 0.1ms avant chaque nouveau enregistrement pour bien affiché les graphes switch($_SESSION['Bateaux']['type_courbe_details_bateau']) { case "Synthese" : { $size = sizeof($rows); for ($i = 1; $i < $size; $i++){ $date = str_replace(')','',str_replace('Date(','',$rows[$i]['c']['0']['v']))-100; $date = 'Date('.$date.')'; $temp_faux = array(); $temp_faux[] = array('v' => $date); $temp_faux[] = array('v' => $rows[$i-1]['c']['1']['v']); $temp_faux[] = array('v' => $rows[$i-1]['c']['2']['v']); $temp_faux[] = array('v' => $rows[$i-1]['c']['3']['v']); $rows[] = array('c' => $temp_faux); } // if (sizeof($rows) > 0){ // $temp_faux = array(); // $temp_faux[] = array('v' => "Date(".time()."000)"); // $temp_faux[] = array('v' => $rows[$i-1]['c']['1']['v']); // $temp_faux[] = array('v' => $rows[$i-1]['c']['2']['v']); // $temp_faux[] = array('v' => $rows[$i-1]['c']['3']['v']); // $rows[] = array('c' => $temp_faux); // } break; } case "Tous" : { $size = sizeof($rows); for ($i = 1; $i < $size; $i++){ $date = str_replace(')','',str_replace('Date(','',$rows[$i]['c']['0']['v']))-100; $date = 'Date('.$date.')'; $temp_faux = array(); $temp_faux[] = array('v' => $date); $temp_faux[] = array('v' => $rows[$i-1]['c']['1']['v']); $rows[] = array('c' => $temp_faux); } // if (sizeof($rows) > 0){ // $temp_faux = array(); // $temp_faux[] = array('v' => "Date(".time()."000)"); // $temp_faux[] = array('v' => $rows[$i-1]['c']['1']['v']); // $rows[] = array('c' => $temp_faux); // } break; } } // Trier le tableau du data function sortByDate_rows($a, $b) { return str_replace(')','',str_replace('Date(','',$a['c']['0']['v'])) - str_replace(')','',str_replace('Date(','',$b['c']['0']['v'])); } usort($rows, 'sortByDate_rows'); $table['rows'] = $rows; // Stockage de toutes les rows créées dans 'table' $jsonTable = json_encode($table); // Mise au format JSON pour être lu par la fonction JS $nomgraphique = "'graphique_".$_SESSION['Bateaux']['id_entree_details_bateau']."'"; // Permet de passer à la fonction JS le nom du graphique (différent pour chaque capteur...) //=============================================================================================================================================== // GRAPHIQUES : //=============================================================================================================================================== // Appels JavaScript pour générer le graphique : ?> 0) $bateau['onglets'][$nb_onglets ++] = $donnees; // On ne présente que les familles ayant au moins 1 circuit... } Liberation_jeu_de_resultat_bdd($reponse); // Affectation du premier onglet si aucun n'est sélectionné : if ($nb_onglets > 0) { if ($_SESSION['Bateaux']['bateau']['ID_Famille'] == 0) $_SESSION['Bateaux']['bateau']['ID_Famille'] = $bateau['onglets'][0]['Cle_primaire']; $filtre_famille = " ID_Famille_circuits=".$_SESSION['Bateaux']['bateau']['ID_Famille']." "; } else $filtre_famille = " 1 "; // Recherche des éléments appartenant à l'onglet en cours : $requete = 'SELECT * FROM TB_BATEAUX_Circuits '; $requete .= 'WHERE ID_Bateau=? AND Validite=1 AND '.$filtre_famille.' ORDER BY ABS(Priorite_affichage_accueil) ASC'; break; } //---------------------------------------- case "TB_BATEAUX_Reservoirs": { // Recherche des onglets configurés sur le bateau : $requete = 'SELECT Cle_primaire, Nom FROM TB_BATEAUX_Familles_reservoirs WHERE ID_Bateau=? AND Validite=1 ORDER BY Priorite_affichage ASC '; $reponse = Requete_preparee_bdd($requete, array( array('i', $bateau['Cle_primaire'])), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { // Recherche du nombre de réservoirs affectés à cette famille : $sous_requete = 'SELECT COUNT(*) as Total FROM TB_BATEAUX_Reservoirs WHERE ID_Bateau=? AND Validite=1 AND ID_Famille_reservoirs=? '; $sous_reponse = Requete_preparee_bdd($sous_requete, array( array('i', $bateau['Cle_primaire']), array('i', $donnees['Cle_primaire'])), __FILE__, __LINE__); $sous_donnees = Recherche_ligne_bdd($sous_reponse); if ($sous_donnees['Total'] > 0) $bateau['onglets'][$nb_onglets ++] = $donnees; // On ne présente que les familles ayant au moins 1 réservoir... } Liberation_jeu_de_resultat_bdd($reponse); // Affectation du premier onglet si aucun n'est sélectionné : if ($nb_onglets > 0) { if ($_SESSION['Bateaux']['bateau']['ID_Famille'] == 0) $_SESSION['Bateaux']['bateau']['ID_Famille'] = $bateau['onglets'][0]['Cle_primaire']; $filtre_famille = " ID_Famille_reservoirs=".$_SESSION['Bateaux']['bateau']['ID_Famille']." "; } else $filtre_famille = " 1 "; // Recherche des éléments appartenant à l'onglet en cours : $requete = 'SELECT * FROM TB_BATEAUX_Reservoirs '; $requete .= 'WHERE ID_Bateau=? AND Validite=1 AND '.$filtre_famille.' ORDER BY ABS(Priorite_affichage_accueil) ASC'; break; } //---------------------------------------- default : { $requete = 'SELECT * FROM '.$_SESSION['Bateaux']['type_details_bateau'].' WHERE ID_Bateau=? AND Validite=1 ORDER BY Priorite_affichage_accueil ASC'; break; } } // echo 'Requête = [ '.$requete.' ]
'; } // Exécution de la requête et récupération des résultats : $reponse = Requete_preparee_bdd($requete, array( array('i', $bateau['Cle_primaire'])), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { $bateau['details_bateau'][$nb_entrees] = $donnees; switch($_SESSION['Bateaux']['type_details_bateau']) { //---------------------------------------- case "TB_BATEAUX_Batteries": { // Capacité 1 : if ($bateau['details_bateau'][$nb_entrees]['Capacite_1'] != "") { $capa = explode("/", $bateau['details_bateau'][$nb_entrees]['Capacite_1']); $bateau['details_bateau'][$nb_entrees]['capacite_1'] = number_format($capa[0], 0, ".", " ")." Ah [C".number_format($capa[1], 0, ".", " ")."]"; } else $bateau['details_bateau'][$nb_entrees]['capacite_1'] = "".Recuperer_texte("bateau","details","batteries","capacite_1_non_renseignee").""; // Ce cas ne devrait jamais se produire ! // Capacité 2 : if ($bateau['details_bateau'][$nb_entrees]['Capacite_2'] != "") { $capa = explode("/", $bateau['details_bateau'][$nb_entrees]['Capacite_2']); $bateau['details_bateau'][$nb_entrees]['capacite_2'] = number_format($capa[0], 0, ".", " ")." Ah [C".number_format($capa[1], 0, ".", " ")."]"; } else $bateau['details_bateau'][$nb_entrees]['capacite_2'] = "".Recuperer_texte("bateau","details","batteries","capacite_2_non_renseignee").""; // Type : switch($bateau['details_bateau'][$nb_entrees]['Type']) { case 0 : { $bateau['details_bateau'][$nb_entrees]['type'] = "".Recuperer_texte("bateau","details","batteries","non_defini").""; break; } case 1 : { $bateau['details_bateau'][$nb_entrees]['type'] = Recuperer_texte("bateau","details","batteries","type_pb_acide_liquide"); break; } case 2 : { $bateau['details_bateau'][$nb_entrees]['type'] = Recuperer_texte("bateau","details","batteries","type_pb_agm"); break; } case 3 : { $bateau['details_bateau'][$nb_entrees]['type'] = Recuperer_texte("bateau","details","batteries","type_pb_gel"); break; } case 4 : { $bateau['details_bateau'][$nb_entrees]['type'] = Recuperer_texte("bateau","details","batteries","type_pb_carbone"); break; } case 10 : { $bateau['details_bateau'][$nb_entrees]['type'] = Recuperer_texte("bateau","details","batteries","type_lithium"); break; } default : { $bateau['details_bateau'][$nb_entrees]['type'] = "".Recuperer_texte("bateau","details","batteries","type_inconnu").""; break; } } break; } //---------------------------------------- case "TB_BATEAUX_Circuits": case "TB_BATEAUX_Reservoirs": default : { break; } } $nb_entrees ++; } Liberation_jeu_de_resultat_bdd($reponse); // Calculs des éléments de la courbe si une courbe est demandée : if ($_SESSION['Bateaux']['type_courbe_details_bateau'] != "Aucune") { // $start_time = microtime(true); // Préparation des paramètres spécifiques à chaque type (mais communs à tous les éléments de ce type) : $haxis_format = "'dd/MM/yy'"; $langue = "'".$_SESSION['langue']."'"; $couleur_1 = "'rgb(117, 185, 218)'"; // Valeur par défaut (bleu Koriolan) $couleur_2 = "'rgb(117, 185, 218)'"; // Valeur par défaut (bleu Koriolan) $couleur_3 = "'rgb(117, 185, 218)'"; // Valeur par défaut (bleu Koriolan) $regroupement_donnees = 1; // Valeur par défaut (en secondes) switch($_SESSION['Bateaux']['type_details_bateau']) { case "TB_BATEAUX_Batteries": { $titre_graphique = ""; if ($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Tous") $nom_table = "TB_BATEAUX_Mesures_batteries"; if ($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Synthese") $nom_table = "TB_BATEAUX_Archive_mesures_batteries"; $diviseur_unite = 1; if ((version_compare($bateau['version'], '2.1.8') < 0) && ($bateau['Cle_primaire'] != 25)) { $variables = "SELECT Cle_primaire, Nom, Unite FROM TB_BATEAUX_Variables WHERE Type = ? AND ID_Bateau = ? ORDER BY Priorite_affichage"; } else $variables = "SELECT Cle_primaire, Nom, Unite FROM TB_BATEAUX_Variables WHERE Type=? AND ID_Bateau=? AND Priorite_affichage!=0 ORDER BY Priorite_affichage"; $type_var = 4; break; } case "TB_BATEAUX_Circuits": { $titre_graphique = ""; if ($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Tous") $nom_table = "TB_BATEAUX_Mesures_circuits"; if ($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Synthese") $nom_table = "TB_BATEAUX_Archive_mesures_circuits"; $diviseur_unite = 1; $variables = "SELECT Cle_primaire, Nom, Unite FROM TB_BATEAUX_Variables WHERE Type = ? AND ID_Bateau = ? ORDER BY Priorite_affichage"; // $variables = "SELECT Cle_primaire, Nom, Unite FROM TB_BATEAUX_Variables WHERE Type = ? AND ID_Bateau = ? AND Priorite_affichage != 0 ORDER BY Priorite_affichage"; $type_var = 1; break; } case "TB_BATEAUX_Reservoirs": { // limite du nombre de valeurs affichées qui atteignait 82 000 sur 30 jours.... ! $regroupement_donnees = 120; // En secondes $titre_graphique = ""; if ($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Tous") $nom_table = "TB_BATEAUX_Mesures_reservoirs"; if ($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Synthese") $nom_table = "TB_BATEAUX_Archive_mesures_reservoirs"; $diviseur_unite = 1; $variables = "SELECT Cle_primaire, Nom, Unite FROM TB_BATEAUX_Variables WHERE Type = ? AND ID_Bateau = ? ORDER BY Priorite_affichage"; // $variables = "SELECT Cle_primaire, Nom, Unite FROM TB_BATEAUX_Variables WHERE Type = ? AND ID_Bateau = ? AND Priorite_affichage != 0 ORDER BY Priorite_affichage"; $type_var = 3; break; } } switch($_SESSION['Bateaux']['type_courbe_details_bateau']) { //=============== case "Aucune": break; //=============== default: $_SESSION['Bateaux']['type_courbe_details_bateau'] = "Synthese"; // Pas de break; case "Synthese" : { $nb_jours_periode = 360; // $titre_graphique .= Recuperer_texte("bateau","details","rest","titre_graphe2").($nb_jours_periode).Recuperer_texte("bateau","details","rest","titre_graphe3"); if ((isset($_SESSION['Bateaux']['graphe_date_debut']) && $_SESSION['Bateaux']['graphe_date_debut'] != '') || isset($_SESSION['Bateaux']['graphe_date_fin']) && $_SESSION['Bateaux']['graphe_date_fin'] != ''){ if(isset($_SESSION['Bateaux']['graphe_date_debut']) && $_SESSION['Bateaux']['graphe_date_debut'] != '') $titre_graphique .= Recuperer_texte("bateau","details","all","titre_graphe5").str_replace("T"," ",$_SESSION['Bateaux']['graphe_date_debut']).":00"; if(isset($_SESSION['Bateaux']['graphe_date_fin']) && $_SESSION['Bateaux']['graphe_date_fin'] != '') $titre_graphique .= Recuperer_texte("bateau","details","all","titre_graphe6").str_replace("T"," ",$_SESSION['Bateaux']['graphe_date_fin']).":00"; $titre_graphique .= Recuperer_texte("bateau","details","all","titre_graphe"); } else $titre_graphique .= Recuperer_texte("bateau","details","rest","titre_graphe2").($nb_jours_periode).Recuperer_texte("bateau","details","rest","titre_graphe3"); $requete = ' SELECT (UNIX_TIMESTAMP(Date) * 1000) AS Date, '; // Le x1000 permet d'avoir directement un timestamp en ms (nécessaire pour la fonction Date de JS) $requete .= ' Valeur_maxi AS Max, '; $requete .= ' Valeur_mini AS Min, '; $requete .= ' Valeur_moyenne AS Avg '; $requete .= ' FROM '.$nom_table.' WHERE ID_Bateau=? AND ID=? AND ID_Variable=? AND Date>? AND Date<=? '; $requete .= ' GROUP BY (Date DIV 1000000) ORDER BY Date '; // Le 'DIV 1000000' permet de passer de timestamp à des jours (https://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-conversion.html ) $table = array(); $table['cols'] = array( array('label' => 'Date', 'type' => 'datetime'), array('label' => 'Max', 'type' => 'number'), // Nb : le nom de chaque champs (comme 'Max') est visible à l'écran quand on balade la crosshair. array('label' => 'Min', 'type' => 'number'), // ... Il vaut donc mieux leur donner un nom explicite, notamment sur ce graphique avec plusieurs courbes. array('label' => 'Avg', 'type' => 'number') // ... A noter que la question de la traduction peut se poser... ); $nom_val_max = "Max"; // Nom de la variable sur laquelle la valeur max de la courbe sera calculée $nom_val_min = "Min"; // Nom de la variable sur laquelle la valeur min de la courbe sera calculée $couleur_1 = "'rgb(0, 69, 99)'"; $couleur_2 = "'rgb(117,185,218)'"; $couleur_3 = "'rgb(171, 215, 237)'"; break; } //=============== case "Tous" : { $nb_jours_periode = DATE_SEUIL_1; $titre_graphique .= Recuperer_texte("bateau","details","rest","titre_graphe2").($nb_jours_periode).Recuperer_texte("bateau","details","rest","titre_graphe4"); $requete = ' SELECT (UNIX_TIMESTAMP(Date) * 1000) AS Date, '; $requete .= ' Valeur AS Val '; // Le x1000 permet d'avoir directement un timestamp en ms (nécessaire pour la fonction Date de JS) $requete .= ' FROM '.$nom_table.' WHERE ID_Bateau=? AND ID=? AND ID_Variable=? AND Date>? AND Date<=?'; $requete .= ' GROUP BY (Date DIV '.$regroupement_donnees.') ORDER BY Date '; $table = array(); $table['cols'] = array( array('label' => 'Date', 'type' => 'datetime'), array('label' => 'Val', 'type' => 'number'), array('label' => 'Valeur_2', 'type' => 'number'), array('label' => 'Valeur_3', 'type' => 'number') ); $nom_val_max = "Val"; // Nom de la variable sur laquelle la valeur max de la courbe sera calculée $nom_val_min = "Val"; // Nom de la variable sur laquelle la valeur min de la courbe sera calculée $couleur_1 = "'rgb(0, 69, 99)'"; $couleur_2 = "'rgb(117,185,218)'"; $couleur_3 = "'rgb(171, 215, 237)'"; break; } } // Préparation du tableau de valeurs : $min = 999999; $max = -999999; $rows = array(); // Calcul des dates de début de filtrage des données du graphique : $date = date_create(); $date_fin = date_format($date, 'Y-m-d H:i:s'); date_sub($date, date_interval_create_from_date_string(''.$nb_jours_periode.' days')); $date_debut = date_format($date, 'Y-m-d H:i:s'); if ($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Synthese"){ if(isset($_SESSION['Bateaux']['graphe_date_debut']) && $_SESSION['Bateaux']['graphe_date_debut'] != '') $date_debut = str_replace("T"," ",$_SESSION['Bateaux']['graphe_date_debut']).":00"; if(isset($_SESSION['Bateaux']['graphe_date_fin']) && $_SESSION['Bateaux']['graphe_date_fin'] != '') $date_fin = str_replace("T"," ",$_SESSION['Bateaux']['graphe_date_fin']).":00"; } // Récupération des noms de variables $var_reponse = Requete_preparee_bdd($variables, array( array('i', $type_var), array('i', $bateau['Cle_primaire']) ), __FILE__, __LINE__); //echo 'Requête : '.$variables.', type_var='.$type_var.' et clé_primaire du bateau = '.$bateau['Cle_primaire'].'
'; $nb_var = 0; $variables = NULL; while ($donnees = Recherche_ligne_bdd($var_reponse)) { // echo $nb_var.' : '.$donnees['Nom'].'
'; $variables[$nb_var ++] = $donnees; } Liberation_jeu_de_resultat_bdd($var_reponse); // Récupération des datas : if ($_SESSION['Bateaux']['id_variable_details_bateau'] == 0){ $_SESSION['Bateaux']['id_variable_details_bateau'] = $variables[0]['Cle_primaire']; // Variable par default pour ne pas avoir un graphe vide } $reponse = Requete_preparee_bdd($requete, array( array('i', $bateau['Cle_primaire']), array('i', $_SESSION['Bateaux']['id_entree_details_bateau']), array('i', $_SESSION['Bateaux']['id_variable_details_bateau']), array('s', $date_debut), array('s', $date_fin)), __FILE__, __LINE__); $nb_val = 0; while ($donnees = Recherche_ligne_bdd($reponse)) { // Préparation de la chaine de date selon format "Date(Year, Month, Day, Hours, Minutes, Seconds, Milliseconds)" : $chaine_date = 'Date('.$donnees['Date'].')'; // On créée la chaine qui appellera la fonction Date avec le timestamp (soit une chaine du genre 'Date(124524415214225)') $temp = array(); $temp[] = array('v' => $chaine_date); switch($_SESSION['Bateaux']['type_courbe_details_bateau']) { case "Synthese" : { $temp[] = array('v' => $donnees['Max']); $temp[] = array('v' => $donnees['Min']); $temp[] = array('v' => $donnees['Avg']); break; } case "Tous" : { $temp[] = array('v' => $donnees['Val']); break; } } $rows[] = array('c' => $temp); if ($donnees[''.$nom_val_max.''] != '' && $donnees[''.$nom_val_max.''] > $max) $max = $donnees[''.$nom_val_max.'']; if ($donnees[''.$nom_val_min.''] != '' && $donnees[''.$nom_val_min.''] < $min) $min = $donnees[''.$nom_val_min.'']; $nb_val ++; } Liberation_jeu_de_resultat_bdd($reponse); //$titre_graphique .= "
Nb de valeurs = ".$nb_val."
"; // Préparation des données : // Création des faux points 0.1ms avant chaque nouveau enregistrement pour bien affiché les graphes switch($_SESSION['Bateaux']['type_courbe_details_bateau']) { case "Synthese" : { $size = sizeof($rows); for ($i = 1; $i < $size; $i++){ $date = str_replace(')','',str_replace('Date(','',$rows[$i]['c']['0']['v']))-100; $date = 'Date('.$date.')'; $temp_faux = array(); $temp_faux[] = array('v' => $date); $temp_faux[] = array('v' => $rows[$i-1]['c']['1']['v']); $temp_faux[] = array('v' => $rows[$i-1]['c']['2']['v']); $temp_faux[] = array('v' => $rows[$i-1]['c']['3']['v']); $rows[] = array('c' => $temp_faux); } // if (sizeof($rows) > 0){ // $temp_faux = array(); // $temp_faux[] = array('v' => "Date(".time()."000)"); // $temp_faux[] = array('v' => $rows[$i-1]['c']['1']['v']); // $temp_faux[] = array('v' => $rows[$i-1]['c']['2']['v']); // $temp_faux[] = array('v' => $rows[$i-1]['c']['3']['v']); // $rows[] = array('c' => $temp_faux); // } break; } case "Tous" : { $size = sizeof($rows); for ($i = 1; $i < $size; $i++){ $date = str_replace(')','',str_replace('Date(','',$rows[$i]['c']['0']['v']))-100; $date = 'Date('.$date.')'; $temp_faux = array(); $temp_faux[] = array('v' => $date); $temp_faux[] = array('v' => $rows[$i-1]['c']['1']['v']); $rows[] = array('c' => $temp_faux); } // if (sizeof($rows) > 0){ // $temp_faux = array(); // $temp_faux[] = array('v' => "Date(".time()."000)"); // $temp_faux[] = array('v' => $rows[$i-1]['c']['1']['v']); // $rows[] = array('c' => $temp_faux); // } break; } } // Trier le tableau du data function sortByDate_rows($a, $b) { return str_replace(')','',str_replace('Date(','',$a['c']['0']['v'])) - str_replace(')','',str_replace('Date(','',$b['c']['0']['v'])); } usort($rows, 'sortByDate_rows'); $table['rows'] = $rows; // Stockage de toutes les rows créées dans 'table' $jsonTable = json_encode($table); // Mise au format JSON pour être lu par la fonction JS $nomgraphique = "'graphique_".$_SESSION['Bateaux']['id_entree_details_bateau']."'"; // Permet de passer à la fonction JS le nom du graphique (différent pour chaque capteur...) /*$nb_intervalles = 5; $maille = 100; $max = ceil($max / $maille) * $maille; $intervalle = floor(($max - $min) / $nb_intervalles); echo 'Min = '.$min.', Max = '.$max.' et intervalle = '.$intervalle.'
'; */ //=============================================================================================================================================== // GRAPHIQUES : //=============================================================================================================================================== // Appels JavaScript pour générer le graphique : ?> '; } break; } //========================= default: break; } // Fin du switch 'type_details_bateau' $requete_date_maj = "SELECT substr(date_maj,1,10) as date from TB_BATEAUX_Systeme_archive WHERE ID_Bateau = ? GROUP BY substr(date_maj,1,10) UNION SELECT substr(date_maj,1,10) as date from TB_BATEAUX_Batteries_archive WHERE ID_Bateau = ? GROUP BY substr(date_maj,1,10) UNION SELECT substr(date_maj,1,10) as date from TB_BATEAUX_Cartes_archive WHERE ID_Bateau = ? GROUP BY substr(date_maj,1,10) UNION SELECT substr(date_maj,1,10) as date from TB_BATEAUX_Circuits_archive WHERE ID_Bateau = ? GROUP BY substr(date_maj,1,10) UNION SELECT substr(date_maj,1,10) as date from TB_BATEAUX_Systeme_archive WHERE ID_Bateau = ? GROUP BY substr(date_maj,1,10) "; $reponse_date_maj = Requete_preparee_bdd($requete_date_maj, array( array('i', $bateau['Cle_primaire']), array('i', $bateau['Cle_primaire']), array('i', $bateau['Cle_primaire']), array('i', $bateau['Cle_primaire']), array('i', $bateau['Cle_primaire']) ), __FILE__, __LINE__); $nb_dates_maj = 0; while ($donnees = Recherche_ligne_bdd($reponse_date_maj)) { $dates_maj[$nb_dates_maj ++] = $donnees; } Liberation_jeu_de_resultat_bdd($reponse_date_maj); function sortByDate($a, $b) { return str_replace('-','',preg_replace('/[T_-_ _:]/', '', $b['date'])) - str_replace('-','',preg_replace('/[T_-_ _:]/', '', $a['date'])); } if ($nb_dates_maj != 0) usort($dates_maj, 'sortByDate'); break; } //**************************************************************************************************************************** case "Creation_bateau": case "Modification_bateau": { //-------------------------------------------------- // Préparation des variables du bateau : if ($_SESSION['Bateaux']['page'] == "Creation_bateau") { $_SESSION['Bateaux']['bateau']['Cle_primaire'] = 0; $_SESSION['Bateaux']['bateau']['Nom'] = ""; $_SESSION['Bateaux']['bateau']['ID_Flotte'] = 0; $_SESSION['Bateaux']['bateau']['ID_Carte'] = 0; $_SESSION['Bateaux']['bateau']['Date_mes'] = date("Y-m-d"); $_SESSION['Bateaux']['bateau']['Date_carte'] = date("Y-m-d"); $_SESSION['Bateaux']['bateau']['Date_derniere_maj'] = "2020-01-01 00:00:00"; $_SESSION['Bateaux']['bateau']['Commentaires'] = ""; } else // Modification : { $requete = 'SELECT * FROM TB_Bateaux WHERE Cle_primaire=? '; $reponse = Requete_preparee_bdd($requete, array( array('i', $_SESSION['Bateaux']['bateau']['Cle_primaire'])), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { $_SESSION['Bateaux']['bateau'] = $donnees; // Mise en forme de textes : $_SESSION['Bateaux']['bateau']['Commentaires'] = htmlspecialchars(stripcslashes($_SESSION['Bateaux']['bateau']['Commentaires'])); } Liberation_jeu_de_resultat_bdd($reponse); } //-------------------------------------------------- // Recherche des flottes existantes : $nb_flottes = 0; $flottes[$nb_flottes]['Cle_primaire'] = 0; $flottes[$nb_flottes]['Nom'] = '--- Affecté à aucune flotte ---'; $nb_flottes ++; $requete = 'SELECT * FROM TB_Flottes WHERE Validite=1 ORDER BY Nom ASC'; $reponse = Requete_preparee_bdd($requete, array(), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { $flottes[$nb_flottes ++] = $donnees; } Liberation_jeu_de_resultat_bdd($reponse); //-------------------------------------------------------------------------------------- // Recherche des cartes existantes et disponibles (+ la carte actuellement installée) : $nb_cartes = 0; $cartes[$nb_cartes]['Cle_primaire'] = 0; $cartes[$nb_cartes]['No_serie'] = '--- Aucune carte ShipBase installée ---'; $cartes[$nb_cartes]['Adresse_mac'] = ""; $cartes[$nb_cartes]['Affectee'] = false; $nb_cartes ++; // $requete = 'SELECT * FROM TB_Cartes WHERE Validite=1 AND Type=1 AND (NOT EXISTS (SELECT ID_Carte FROM TB_Bateaux WHERE TB_Cartes.Cle_primaire=TB_Bateaux.ID_Carte) OR '.$ajout_requete.') ORDER BY No_serie ASC'; $requete = 'SELECT *, EXISTS(SELECT ID_Carte FROM TB_Bateaux WHERE TB_Bateaux.Validite=1 AND TB_Cartes.Cle_primaire=TB_Bateaux.ID_Carte) AS Affectee FROM TB_Cartes WHERE Validite=1 AND Type=0 AND Etat!='.ETAT_CARTE_REBUT.' ORDER BY No_serie ASC'; $reponse = Requete_preparee_bdd($requete, array(), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { $cartes[$nb_cartes] = $donnees; if ($_SESSION['Bateaux']['bateau']['ID_Carte'] == $donnees['Cle_primaire']) $cartes[$nb_cartes]['Affectee'] = false; // Permet de resélectionner la carte existante carte... $nb_cartes ++; } Liberation_jeu_de_resultat_bdd($reponse); break; } //**************************************************************************************************************************** case "Confirmation_suppression_bateau": { break; } //**************************************************************************************************************************** default: { $_SESSION['Bateaux']['page'] = "Accueil"; break; } } Fermeture_bdd(); // Déconnexion de MySQL //************************************************************************************************************************************ // Affichage //************************************************************************************************************************************ Entete_page_html(); //******************************************************************************************************************************** // Affichage principal : echo '
'; //========================================================================================= // Entête : Entete_page($message_erreur, $message_information); switch ($_SESSION['Bateaux']['page']) { //************************************************************************************************************************ case "Accueil": { echo '
'; echo '

Bateaux

'; echo '
'; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; // echo ''; echo ''; for ($i = 0; $i < $nb_bateaux; $i ++) { echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; // echo ''; echo ''; } echo '
NomFlotteShipBaseAdresse MACVersionDernière mise à jour [UTC]Commentaires
'.$bateaux[$i]['Nom'].' '.$bateaux[$i]['nom_flotte'].''.$bateaux[$i]['nom_carte'].''.$bateaux[$i]['adresse_carte'].''.$bateaux[$i]['version'].''.$bateaux[$i]['Date_derniere_maj'].''.$bateaux[$i]['Commentaires'].'
'; echo '
'; echo ''; echo '
'; break; } //**************************************************************************************************************************** case "Details_bateau": { echo '
'; echo '

Bateau '.$bateau['Nom'].'

'; echo '
'; if ($_SESSION['shipmember']['Niveau_acces'] >= NIVEAU_ACCES_MINI_ADMINISTRATEUR || $acces_profil['Consultation_donnees'] == 2) { echo '
'; echo Ajouter_lien_modif_buttons("bateau","details","boutons","acces"); echo ' '.$_SESSION['textes']['bateau']['details']['boutons']['acces'] .' '; echo '
'; } echo '
'.Recuperer_texte("bateau","details","derniere_connexion","libelle").' : '.$bateau['Date_derniere_maj'].' [UTC]
'; echo '
'; // if ($nb_dates_maj != 0){ // echo '
Consulter une configuration précédente :'; // echo '
// // //
'; // echo '
'; // } // echo '
Version date précise:'; // echo '
// // //
'; // echo '
'; // if ($nb_data > 0){ // echo '
//
'; // } //-------------------------------- // Boutons de haut de page : echo '
'; if ( ($_SESSION['shipmember']['Niveau_acces'] >= NIVEAU_ACCES_MINI_ADMINISTRATEUR) || (($acces_profil['Consultation_donnees'] == 1) || ($acces_profil['Consultation_donnees'] == 2)) ) { echo '
'; echo Ajouter_lien_modif_buttons("bateau","details","boutons","carte"); echo ' '.$_SESSION['textes']['bateau']['details']['boutons']['carte'] .' '; echo '
'; echo '
'; echo Ajouter_lien_modif_buttons("bateau","details","boutons","batteries"); echo ' '.$_SESSION['textes']['bateau']['details']['boutons']['batteries'] .' '; echo '
'; echo '
'; echo Ajouter_lien_modif_buttons("bateau","details","boutons","circuits"); echo ' '.$_SESSION['textes']['bateau']['details']['boutons']['circuits'] .' '; echo '
'; echo '
'; echo Ajouter_lien_modif_buttons("bateau","details","boutons","reservoirs"); echo ' '.$_SESSION['textes']['bateau']['details']['boutons']['reservoirs'] .' '; echo '
'; echo '
'; echo Ajouter_lien_modif_buttons("bateau","details","boutons","capteurs"); echo ' '.$_SESSION['textes']['bateau']['details']['boutons']['capteurs'] .' '; echo '
'; echo '
'; echo Ajouter_lien_modif_buttons("bateau","details","boutons","par_sys"); echo '' .$_SESSION['textes']['bateau']['details']['boutons']['par_sys']. ''; echo '
'; } echo '
'; // Affichage des onglets lorsqu'il y en a : if ($nb_onglets > 0) { echo '
'; for ($i = 0; $i < $nb_onglets; $i ++) { echo '' .$bateau['onglets'][$i]['Nom']. ''; } echo '
'; } echo '
'; switch($_SESSION['Bateaux']['type_details_bateau']) { case "TB_BATEAUX_Carte": { if ($nb_data > 0){ echo '
'; echo '
'; // echo '
//
// // // // // '; // for ($i = 0; $i < $nb_batteries; $i ++) // { // echo ' // // // // // // // '; // } // elseif ($i==1) { // echo // '[en dur]Maximale : // // '; // } // if ($i==2) { // echo // '[en dur]Minimale: // // '; // } // echo // ''; // } // echo' //
Etat de charge : Consommation électrique :
'.$batteries[$i]['Nom'].' : '.$batteries[$i]['Tension_nominale'].' V '.$batteries[$i]['Soc'].' % '; // if ($i==0) { // echo // '[en dur]Moyenne: [en dur]3.2A [en dur]Sur 24h [en dur]8.2A [en dur]2h30 au total [en dur]0.13 [en dur]13h21
//


// // // // // // // // // // // // // // '; // for ($i = 0; $i < $nb_familles; $i ++){ // echo // ' // // // // // // ' // ; // for($j = 0; $j < sizeof($bateau['familles'][$i]['reservoirs']); $j++){ // echo // ' // // // // // // // // // ' // ; // } // } // echo // ' // // // // // // // // // // // // // // // // // // // // //
Date début de la croisière : Date fin de la croisière : Nom de la croisière :
Nom
'.$bateau['familles'][$i]['Nom'].' : Consommation moyenne : Consommation depuis le début de la croisière : Nbre de pleins :
'.$bateau['familles'][$i]['reservoirs'][$j]['Nom'].' : '.$bateau['familles'][$i]['reservoirs'][$j]['Capacite'].' l '.$bateau['familles'][$i]['reservoirs'][$j]['Niveau'].' % [en dur] x/24h [en dur] x l [en dur] x
Distance parcourue : Vitesse moyenne : Vitesse max :
Dernières 24h : Depuis le début de la croisière : Dernières 24h : Depuis le début de la croisière : Depuis le début de la croisière :
echo '
'; } break; } //=========================================================== case "TB_BATEAUX_Batteries": { for ($i = 0; $i < $nb_entrees; $i ++) { echo '
'; // L'utilisation d'une div dédiée permet de donner une "hauteur" à l'ancre et ainsi dégager de dessous le bandeau de menu... echo '

'.$bateau['details_bateau'][$i]['Nom'].'

'.Recuperer_texte("bateau","details","batterie","tension").' : '.number_format($bateau['details_bateau'][$i]['Tension'], 2, ".", " ").' V

'.Recuperer_texte("bateau","details","batterie","soc").' : $bateau['details_bateau'][$i]['Soc_seuil_haut']) echo " green"; else echo " orange"; echo '">'.number_format($bateau['details_bateau'][$i]['Soc'], 2, ".", " ").' %

'; // Graphique : if (($bateau['details_bateau'][$i]['Cle_primaire'] == $_SESSION['Bateaux']['id_entree_details_bateau']) AND ($_SESSION['Bateaux']['type_courbe_details_bateau'] != "Aucune")) { echo '
'; echo '
'; for($j = 0; $j < $nb_var; $j++){ if ($_SESSION['Bateaux']['id_variable_details_bateau'] == $variables[$j]['Cle_primaire']){ $titre_graphique = $variables[$j]['Nom'].' (en '.$variables[$j]['Unite'].')'.$titre_graphique; } } echo $titre_graphique; echo '
'; if($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Synthese" ){ echo '
'; } echo '
'; if($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Tous" || $_SESSION['Bateaux']['type_courbe_details_bateau'] == "Synthese"){ echo '
'; for($j = 0; $j < $nb_var; $j++){ echo ''; } echo'
'; } echo'
'; echo '
'; $_SESSION['Bateaux']['graphe_date_debut'] = ''; $_SESSION['Bateaux']['graphe_date_fin'] = ''; echo '
'; echo ''.$_SESSION['textes']['bateau']['details']['graph']['display_all'].Ajouter_lien_modif_buttons("bateau","details","graph","display_all").''; else echo ' >'.$_SESSION['textes']['bateau']['details']['graph']['display_daily'] .Ajouter_lien_modif_buttons("bateau","details","graph","display_daily").''; echo '
'; // Capacité 1 : echo '
'.Recuperer_texte("bateau","details","batterie","cap").' 1
'.$bateau['details_bateau'][$i]['capacite_1'].'
'; // Capacité 2 : echo '
'.Recuperer_texte("bateau","details","batterie","cap").' 2
'.$bateau['details_bateau'][$i]['capacite_2'].'
'; // Type : echo '
'; //echo '
'.Recuperer_texte("bateau","details","batterie","cap").' 2
echo '
Type de batterie
'.$bateau['details_bateau'][$i]['type'].'
'; // Seuil soc haut : echo '
'.Recuperer_texte("bateau","details","batterie","seuil_haut").'
'.number_format($bateau['details_bateau'][$i]['Soc_seuil_haut'], 0, ".", " ").' %
'; // Seuil soc bas : echo '
'.Recuperer_texte("bateau","details","batterie","seuil_bas").'
'.number_format($bateau['details_bateau'][$i]['Soc_seuil_bas'], 0, ".", " ").' %
'; } } break; } //=========================================================== case "TB_BATEAUX_Circuits": { for ($i = 0; $i < $nb_entrees; $i ++) { echo '
'; // L'utilisation d'une div dédiée permet de donner une "hauteur" à l'ancre et ainsi dégager de dessous le bandeau de menu... echo '

'.$bateau['details_bateau'][$i]['Nom'].'

Off'; elseif ($bateau['details_bateau'][$i]['Etat_commande_carte'] == 2) echo 'A DEFINIR en fonction de la valeur de Mode_test de la carte de commande'; elseif ($bateau['details_bateau'][$i]['Consigne'] == 0) echo 'capteur_off "> Off'; else { echo 'capteur_on "> On'; echo '

'.number_format($bateau['details_bateau'][$i]['Intensite'], 2, ".", " ").' A

'; if (($bateau['details_bateau'][$i]['Consigne'] > 0) AND ($bateau['details_bateau'][$i]['Consigne'] < 100)) echo '['.$bateau['details_bateau'][$i]['Consigne'].' %]'; } echo '

'; // Graphique : if (($bateau['details_bateau'][$i]['Cle_primaire'] == $_SESSION['Bateaux']['id_entree_details_bateau']) AND ($_SESSION['Bateaux']['type_courbe_details_bateau'] != "Aucune")) { echo '
'; echo '
'; for($j = 0; $j < $nb_var; $j++){ if ($_SESSION['Bateaux']['id_variable_details_bateau'] == $variables[$j]['Cle_primaire']){ $titre_graphique = $variables[$j]['Nom'].' (en '.$variables[$j]['Unite'].')'.$titre_graphique; } } echo $titre_graphique; echo '
'; if($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Synthese" ){ echo '
'; } echo '
'; if($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Tous" || $_SESSION['Bateaux']['type_courbe_details_bateau'] == "Synthese"){ echo '
'; for($j = 0; $j < $nb_var; $j++){ echo ''; } echo'
'; } echo'
'; echo '
'; $_SESSION['Bateaux']['graphe_date_debut'] = ''; $_SESSION['Bateaux']['graphe_date_fin'] = ''; echo '
'; echo ''.$_SESSION['textes']['bateau']['details']['graph']['display_all'].Ajouter_lien_modif_buttons("bateau","details","graph","display_all").''; else echo ' >'.$_SESSION['textes']['bateau']['details']['graph']['display_daily'] .Ajouter_lien_modif_buttons("bateau","details","graph","display_daily").''; echo '
'; // Etat : echo '
'.Recuperer_texte("bateau","details","circuits","etat").'
'; if ($bateau['details_bateau'][$i]['Etat_commande_carte'] == 1) { echo Recuperer_texte("bateau","details","circuits","tension_faible"); } elseif ($bateau['details_bateau'][$i]['Etat_commande_carte'] == 2) { echo Recuperer_texte("bateau","details","circuits","cmd_man"); } else { switch($bateau['details_bateau'][$i]['Etat']) { case 1 : { echo Recuperer_texte("bateau","details","circuits","limitation"); break; } case 2 : { echo Recuperer_texte("bateau","details","circuits","protection"); break; } case 3 : { echo Recuperer_texte("bateau","details","circuits","disjonction"); break; } case 4 : { echo Recuperer_texte("bateau","details","circuits","court_circuit_batterie"); break; } case 5 : { echo Recuperer_texte("bateau","details","circuits","delestage"); break; } default: { echo Recuperer_texte("bateau","details","circuits","ok"); break; } } } echo '
'; // Consigne : echo '
'.Recuperer_texte("bateau","details","circuits","etat").'
'; if ($bateau['details_bateau'][$i]['Etat_commande_carte'] == 1) echo 'Off'; elseif ($bateau['details_bateau'][$i]['Etat_commande_carte'] == 2) echo 'A DEFINIR en fonction de la valeur de Mode_test de la carte de commande'; elseif ($bateau['details_bateau'][$i]['Consigne'] == 0) echo 'Off'; else { echo 'On'; if (($bateau['details_bateau'][$i]['Consigne'] > 0) AND ($bateau['details_bateau'][$i]['Consigne'] < 100)) echo '['.$bateau['details_bateau'][$i]['Consigne'].' %]'; } echo '
'; // Seuil de disjonction : echo '
'.Recuperer_texte("bateau","details","circuits","seuil_disjonction").'
'.number_format($bateau['details_bateau'][$i]['Intensite_seuil_haut'], 0, ".", " ").' A
'; // Temporisation de disjonction : echo '
'.Recuperer_texte("bateau","details","circuits","temp_disjonction").'
'.number_format($bateau['details_bateau'][$i]['Intensite_seuil_haut_tempo']/1000, 1, ".", " ").' '.Recuperer_texte("bateau","details","circuits","sec").'
'; } } break; } //=========================================================== case "TB_BATEAUX_Reservoirs": { for ($i = 0; $i < $nb_entrees; $i ++) { echo '
'; // L'utilisation d'une div dédiée permet de donner une "hauteur" à l'ancre et ainsi dégager de dessous le bandeau de menu... echo '

'.$bateau['details_bateau'][$i]['Nom'].'

'.Recuperer_texte("bateau","details","reservoirs","niveau").' : $bateau['details_bateau'][$i]['Niveau_seuil_haut']) echo " green"; else echo " orange"; echo '">'.number_format(($bateau['details_bateau'][$i]['Capacite'] * $bateau['details_bateau'][$i]['Niveau'])/100, 0, ".", " ").' '.Recuperer_texte("bateau","details","reservoirs","litres").' soit '.number_format($bateau['details_bateau'][$i]['Niveau'], 1, ".", " ").' %

'.Recuperer_texte("bateau","details","reservoirs","capacite_totale").' : '.$bateau['details_bateau'][$i]['Capacite'].' litres

'; // Graphique : if (($bateau['details_bateau'][$i]['Cle_primaire'] == $_SESSION['Bateaux']['id_entree_details_bateau']) AND ($_SESSION['Bateaux']['type_courbe_details_bateau'] != "Aucune")) { echo '
'; echo '
'; for($j = 0; $j < $nb_var; $j++){ if ($_SESSION['Bateaux']['id_variable_details_bateau'] == $variables[$j]['Cle_primaire']){ $titre_graphique = $variables[$j]['Nom'].' (en '.$variables[$j]['Unite'].')'.$titre_graphique; } } echo $titre_graphique; echo '
'; if($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Synthese" ){ echo '
'; } echo '
'; if($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Tous" || $_SESSION['Bateaux']['type_courbe_details_bateau'] == "Synthese"){ echo ''; } echo'
'; echo '
'; $_SESSION['Bateaux']['graphe_date_debut'] = ''; $_SESSION['Bateaux']['graphe_date_fin'] = ''; echo '
'; echo ''.$_SESSION['textes']['bateau']['details']['graph']['display_all'].Ajouter_lien_modif_buttons("bateau","details","graph","display_all").''; else echo ' >'.$_SESSION['textes']['bateau']['details']['graph']['display_daily'] .Ajouter_lien_modif_buttons("bateau","details","graph","display_daily").''; echo '
'; // // Seuil niveau haut : echo '
'.Recuperer_texte("bateau","details","reservoirs","seuil_haut").'
'.number_format($bateau['details_bateau'][$i]['Niveau_seuil_haut'], 0, ".", " ").' %
'; // Seuil niveau bas : echo '
'.Recuperer_texte("bateau","details","reservoirs","seuil_bas").'
'.number_format($bateau['details_bateau'][$i]['Niveau_seuil_bas'], 0, ".", " ").' %
'; } } break; } //=========================================================== case "TB_BATEAUX_Capteurs": { for ($i = 0; $i < $nb_entrees; $i ++) { echo '
'; // L'utilisation d'une div dédiée permet de donner une "hauteur" à l'ancre et ainsi dégager de dessous le bandeau de menu... echo '

'.$bateau['details_bateau'][$i]['Nom'].'

'.Recuperer_texte("bateau","details","capteurs","valeur").' : '.number_format($bateau['details_bateau'][$i]['Valeur'], $bateau['details_bateau'][$i]['Precision_affichage_accueil'], ".", " ").' '.$bateau['details_bateau'][$i]['Unite'].'

'; // Graphique : if (($bateau['details_bateau'][$i]['Cle_primaire'] == $_SESSION['Bateaux']['id_entree_details_bateau']) AND ($_SESSION['Bateaux']['type_courbe_details_bateau'] != "Aucune")) { echo '
'; echo '
'; echo $titre_graphique; echo '
'; if($_SESSION['Bateaux']['type_courbe_details_bateau'] == "Synthese"){ echo '
'; } echo '
'; echo'
'; echo '
'; $_SESSION['Bateaux']['graphe_date_debut'] = ''; $_SESSION['Bateaux']['graphe_date_fin'] = ''; echo '
'; echo ''.$_SESSION['textes']['bateau']['details']['graph']['display_all'].Ajouter_lien_modif_buttons("bateau","details","graph","display_all").''; else echo ' >'.$_SESSION['textes']['bateau']['details']['graph']['display_daily'] .Ajouter_lien_modif_buttons("bateau","details","graph","display_daily").''; echo '
'; // Valeur seuil haut : echo '
'.Recuperer_texte("bateau","details","capteurs","valeur_seuil_haut").'
'.number_format($bateau['details_bateau'][$i]['Valeur_seuil_haut'], $bateau['details_bateau'][$i]['Precision_affichage_accueil'], ".", " ").' '.$bateau['details_bateau'][$i]['Unite'].'
'; // Valeur seuil bas : echo '
'.Recuperer_texte("bienvenue","details","capteurs","valeur_seuil_bas").'
'.number_format($bateau['details_bateau'][$i]['Valeur_seuil_bas'], $bateau['details_bateau'][$i]['Precision_affichage_accueil'], ".", " ").' '.$bateau['details_bateau'][$i]['Unite'].'
'; // Etat : echo '
'.Recuperer_texte("bateau","details","capteurs","etat").'
'; if ($bateau['details_bateau'][$i]['Etat'] == 0) { echo Recuperer_texte("bateau","details","capteurs","ok"); } elseif ($bateau['details_bateau'][$i]['Etat'] == 1) { echo Recuperer_texte("bateau","details","capteurs","alerte"); } elseif ($bateau['details_bateau'][$i]['Etat'] == 2) { echo Recuperer_texte("bateau","details","capteurs","alarme"); } echo '
'; } // // Boutons graphique : // echo '
'; // echo ''.$_SESSION['textes']['bateau']['details']['graph']['hide'].''; // else echo ' >'.$_SESSION['textes']['bateau']['details']['graph']['display_daily'] .Ajouter_lien_modif_buttons("bateau","details","graph","display_daily").''; // echo ''.$_SESSION['textes']['bateau']['details']['graph']['hide'].''; // else echo ' >'.$_SESSION['textes']['bateau']['details']['graph']['display_all'] .''; // echo '
'; } break; } //=========================================================== case "TB_BATEAUX_Systeme": { // Informations provenant de TB_Systeme : // Version : echo '
'.Recuperer_texte("bateau","details","parsys","ver").'
'.$bateau['version'].'
'; // Version modem : echo '
'.Recuperer_texte("bateau","details","parsys","verm").'
'.$bateau['details_bateau']['Version_soft_modem']['Valeur'].'
'; // N° d'ICCID : echo '
'.Recuperer_texte("bateau","details","parsys","iccid").'
'.$bateau['details_bateau']['No_iccid']['Valeur'].'
'; // N° d'IMEI : echo '
'.Recuperer_texte("bateau","details","parsys","imei").'
'.$bateau['details_bateau']['No_imei']['Valeur'].'
'; // N° d'IMSI : echo '
'.Recuperer_texte("bateau","details","parsys","imsi").'
'.$bateau['details_bateau']['No_imsi']['Valeur'].'
'; // Informations sur les cartes présentes à bord (TB_Cartes) : for ($i = 0; $i < $nb_cartes; $i ++) { echo '
'; // L'utilisation d'une div dédiée permet de donner une "hauteur" à l'ancre et ainsi dégager de dessous le bandeau de menu... echo '

'; echo ''; if (($cartes[$i]['Adresse_k_bus']) != 0 ) echo $cartes[$i]['Adresse_k_bus']." - "; echo $cartes[$i]['nom_type']; echo ''; echo '

'.Recuperer_texte("bateau","details","parsys","mac").' : '.$cartes[$i]['Adresse_mac'].'

'.Recuperer_texte("bateau","details","parsys","ver_logicielle").' : '.$cartes[$i]['Software_version'].'

'; echo '
'; if ($cartes[$i]['Cle_primaire'] == $_SESSION['Bateaux']['id_entree_details_bateau']){ echo '
'; // Résistance de terminaison : echo '
'.Recuperer_texte("bateau","details","parsys","resistance").'
'.$cartes[$i]['libelle_resistance_terminaison'].'
'; // Version matérielle : echo '
'.Recuperer_texte("bateau","details","parsys","ver_materielle").'
'.$cartes[$i]['Hardware_version'].'
'; // Données spécifiques en fonction du type de carte : echo '
'; switch($cartes[$i]['Type']) { //--------------------------- case TYPE_CARTE_SP812: case TYPE_CARTE_SP8DC: { // Circuits affectés à ce module : for ($j = 0; $j < 8; $j++) { echo '
Circuit n° '.($j + 1).'
'.$cartes[$i]['circuits'][$j]['Nom'].'
'; } break; } //--------------------------- case TYPE_CARTE_SP4AC: { // Circuits affectés à ce module : for ($j = 0; $j < 4; $j++) { echo '
Circuit n° '.($j + 1).'
'.$cartes[$i]['circuits'][$j]['Nom'].'
'; } break; } //--------------------------- case TYPE_CARTE_COMPAGNON: case TYPE_CARTE_SBS1224: default : break; } echo '
'; } } /* // Version complète de tous les champs de TB_Systeme : foreach($bateau['details_bateau'] as $key => $value) { echo '
'.$key.'
'.$value['Valeur'].'
'; if (isset($value['Description'])) { echo '
'.$value['Description'].'
'; } echo '
'; } */ break; } //=========================================================== case "gerer_les_acces": { echo '
'; echo '
'; echo ' '; echo ' '; echo ' '; echo '
'; echo '
'; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; if ($utilisateur_acces_nb == 0) echo ''; else { for($i = 0; $i < $utilisateur_acces_nb; $i++){ echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; if ($acces_profil['Modification_acces'] == 1){ echo ' '; } echo ' '; echo ' '; } } echo '
'.Recuperer_texte("bateau","details","acces","validite").' '.Recuperer_texte("bateau","details","acces","shipmember").' '.Recuperer_texte("bateau","details","acces","cree_par").' '.Recuperer_texte("bateau","details","acces","type_profil").' '.Recuperer_texte("bateau","details","acces","fin_validite").'
0 shipmember / acces
'.$utilisateur_acces[$i]['sm_Prenom'].' '.$utilisateur_acces[$i]['sm_Nom'].' ['.$utilisateur_acces[$i]['sm_Email'].'] '.$utilisateur_acces[$i]['cree_par_Prenom'].' '.$utilisateur_acces[$i]['cree_par_Nom'].''.$utilisateur_acces[$i]['Niveau_acces_nom'].' '; echo (substr($utilisateur_acces[$i]['Fin_validite'],0,-9) == "9999-12-31") ? Recuperer_texte("bateau","details","acces","aucune_fin") : substr($utilisateur_acces[$i]['Fin_validite'],0,-9) ; echo '
'; echo '
'; echo '
'; echo ''; break; } //=========================================================== default: { echo '

'.Recuperer_texte("bateau","details","autres","autre").'

'; break; } } echo '
'; // Fin de class="corps_details_bateau" //-------------------------------- echo '
'; if ($_SESSION['Bateaux']['origine'] == "shipmember") echo 'Retour au menu ShipMember'; else { echo 'Retour au menu Administration'; echo 'Revenir à la liste des bateaux'; echo 'Modifier'; } echo '
'; //------------------------------- // Help echo ''; echo '
'; echo '
'; echo '
'; break; } //************************************************************************************************************************ case "Creation_bateau": case "Modification_bateau": { echo '
'; echo '

Bateaux

'; echo '
'; if ($_SESSION['Bateaux']['page'] == "Creation_bateau") echo '

Nouveau bateau

'; else echo '

Modification du bateau '.$_SESSION['Bateaux']['bateau']['Nom'].'

'; //---------------------------------------- // Nom : echo '
Nom
'; //---------------------------------------- // Date de mise en service : echo '
Date de mise en service
'; //---------------------------------------- // Flotte : echo '
Flotte à laquelle le bateau appartient
'; //---------------------------------------- // Carte : echo '
Carte ShipBase installée à bord
'; //---------------------------------------- // Date d'installation de la carte ShipBase à bord : echo '
Date d\'installation de la carte ShipBase à bord
'; //---------------------------------------- // Commentaires : echo '
Commentaires
'; //---------------------------------------- // Boutons de bas de page : echo '
'; if ($_SESSION['Bateaux']['page'] == "Creation_bateau") // Création : { echo 'Annuler'; echo ''; } else // Modification : { echo 'Annuler'; echo ''; echo 'Supprimer la bateau'; } echo '
'; echo '
'; echo '
'; break; } //**************************************************************************************************************************** case "Confirmation_suppression_bateau": { echo '
'; echo '

Bateaux

'; echo '
'; echo '

Confirmez-vous la suppression du bateau '; echo $_SESSION['Bateaux']['bateau']['Nom']; echo ' ?

'; echo '

Si oui, son entrée dans la base de données sera dévalidée de la base de données.

'; echo '
'; echo '
'; echo 'Annuler'; echo 'Confirmer la suppression'; echo '
'; echo '
'; break; } } echo '
'; Pied_de_page(); ?>