589 lines
23 KiB
PHP
589 lines
23 KiB
PHP
<?php
|
|
|
|
// Fonctions par ordre alphabétique...
|
|
|
|
|
|
//************************************************************************************************************
|
|
// Fonction : Affichage de la date et de l'heure courante
|
|
// Reçoit : Rien
|
|
// Retour : Rien (le résultat est renvoyé directement sur la page par 'echo')
|
|
//************************************************************************************************************
|
|
function Affichage_date_heure()
|
|
{
|
|
echo '<div id="affichage_date_heure">
|
|
<p>'.Texte_jour_semaine(date("w")).'</p>
|
|
<p>'.date("d").' '.Texte_mois(date("n")-1).'</p>
|
|
<p>'.date("Y").'</p>
|
|
<p>'.date("H:i").'</p>
|
|
</div>';
|
|
}
|
|
|
|
|
|
//************************************************************************************************************
|
|
// Fonction : Affichage de la date en cours
|
|
// Reçoit : Rien
|
|
// Retour : Rien (le résultat est renvoyé directement sur la page par 'echo')
|
|
//************************************************************************************************************
|
|
function Affichage_date()
|
|
{
|
|
if (!isset($_SESSION['Prise_rendez_vous']['jour_en_cours'])) $_SESSION['Prise_rendez_vous']['jour_en_cours'] = date("Y-m-d");
|
|
$current_date = $_SESSION['Prise_rendez_vous']['jour_en_cours'];
|
|
|
|
// On regarde si le jour en cours est dans ce mois pour le marquer de façon particulière :
|
|
$month = substr($current_date, 5, 2);
|
|
$year = substr($current_date, 0, 4);
|
|
$day = substr($current_date, 8, 2);
|
|
$time = mktime(0,0,0, $month, $day, $year);
|
|
|
|
echo '<div id="affichage_date">
|
|
<p>'.Texte_jour_semaine(date("w", $time)).'</p>
|
|
<p>'.date("d", $time).' '.Texte_mois(date("n", $time)-1).'</p>
|
|
<p>'.date("Y", $time).'</p>
|
|
</div>';
|
|
// echo '<div style="text-align:center; margin-top:20px;">
|
|
// <span style="font-size:2.5em; font-weight:bold;">'.Texte_jour_semaine(date("w", $time)).'<br />'
|
|
// .date("j", $time).' '.Texte_mois(date("n", $time)-1).' '.date("Y", $time).'</span><br />
|
|
// </div>';
|
|
}
|
|
|
|
|
|
//********************************************************************************************************************************
|
|
// Fonction : Vérifie la longueur d'un paramètre de formulaire en fonction de valeurs mini et maxi reçues et
|
|
// renvoie une chaine d'erreur dans la langue en cours
|
|
// Reçoit : Le titre du champ, la chaine du champs à vérifier, la longueur mini et la longueur maxi
|
|
// Retour : Une chaine d'erreur. Vide si aucune erreur ou message dans la langue en cours
|
|
//********************************************************************************************************************************
|
|
function check_longueur_champ($titre_champ, $champ, $min, $max)
|
|
{
|
|
$longueur = strlen($champ);
|
|
$retour = "";
|
|
if (($longueur < $min) OR ($longueur > $max))
|
|
{
|
|
$retour .= '['.$_SESSION['textes']['all']['all']['all'][''.$titre_champ.''].'] ';
|
|
$retour .= $_SESSION['textes']['all']['all']['erreurs']['longueur_champ_invalide'];
|
|
$retour .= ' (min = '.$min.' - max = '.$max.')';
|
|
$retour .= '<br />';
|
|
}
|
|
return($retour);
|
|
}
|
|
|
|
|
|
//************************************************************************************************************
|
|
// Fonction : Affiche le comparatif des versions de ShipHeart qui est utilisé sur la Boutique et sur la page
|
|
// d'Accueil.
|
|
// Reçoit : Rien
|
|
// Retour : Rien (le résultat est renvoyé directement sur la page par 'echo')
|
|
//************************************************************************************************************
|
|
function comparatif_shiphearts()
|
|
{
|
|
|
|
$nom_page = basename($_SERVER['SCRIPT_FILENAME']);
|
|
|
|
// Variables spécifiques au fichier d'origine :
|
|
switch($nom_page)
|
|
{
|
|
case 'accueil.php' :
|
|
{
|
|
$image_coche = "selection_blanc.png";
|
|
$type_fond = "fond_fonce";
|
|
break;
|
|
}
|
|
case 'boutique.php' :
|
|
{
|
|
$image_coche = "selection.png";
|
|
$type_fond = "fond_clair";
|
|
break;
|
|
}
|
|
default : { $image_coche = "selection_hover.png"; break; }
|
|
}
|
|
|
|
//=========================================================================
|
|
// Récupération des données :
|
|
Ouverture_bdd(); // Connexion à MySql
|
|
|
|
// Variables spécifiques à la langue :
|
|
switch($_SESSION['langue'])
|
|
{
|
|
case "EN" : { $texte_coche = "Yes"; break; }
|
|
case "FR" : { $texte_coche = "Oui"; break; }
|
|
default : { $texte_coche = "langue_non_féfinie"; break; } // Ce texte ne sera jamais trouvé, donc jamais remplacé....
|
|
}
|
|
|
|
$nb_lignes_comparatif = 0;
|
|
$nb_renvois_comparatif = 0;
|
|
/* $requete = 'SELECT * FROM TB_Comparatif WHERE Validite=1 AND Visible_public=1 ORDER BY Priorite_affichage, Cle_primaire ';
|
|
// echo "Requete = ".$requete.'<br />';
|
|
$reponse = Requete_bdd($requete, __FILE__, __LINE__);
|
|
*/
|
|
$requete = 'SELECT ID, ';
|
|
$requete .= 'Renvoi, ';
|
|
$requete .= '(SELECT Texte FROM TB_Textes_traduction WHERE ID_LANGUAGES=(SELECT ID FROM TB_Langues WHERE Prefix=?) AND ID_TEXTES=ID_FONCTION) AS Texte, ';
|
|
$requete .= 'CONCAT(\'{\',GROUP_CONCAT(CONCAT(\'"\',ID_PRODUITS,\'":"\',(SELECT Texte FROM TB_Textes_traduction WHERE ID_LANGUAGES=(SELECT ID FROM TB_Langues WHERE Prefix=?) AND ID_TEXTES=ID_RESULTAT),\'"\') ORDER BY ID_PRODUITS ASC SEPARATOR ","),"}") AS Produits ';
|
|
$requete .= 'FROM TB_Galerie_comparatif LEFT JOIN TB_Comparatif ON TB_Galerie_comparatif.ID_COMPARATIF=TB_Comparatif.ID JOIN TB_Comparatif_produits ON TB_Comparatif.ID=TB_Comparatif_produits.ID_COMPARATIF ';
|
|
$requete .= 'WHERE TB_Galerie_comparatif.Priorite!=0 GROUP BY TB_Comparatif.ID ORDER BY TB_Galerie_comparatif.Priorite ASC';
|
|
$reponse = Requete_preparee_bdd($requete,
|
|
array(
|
|
array('s', $_SESSION['langue']),
|
|
array('s', $_SESSION['langue'])),
|
|
__FILE__, __LINE__);
|
|
while ($donnees = Recherche_ligne_bdd($reponse))
|
|
{
|
|
$lignes_comparatif[$nb_lignes_comparatif]['id'] = $donnees['ID'];
|
|
$lignes_comparatif[$nb_lignes_comparatif]['fonction'] = $donnees['Texte'];
|
|
|
|
// Traitement des renvois de bas de page :
|
|
if ($donnees['Renvoi'] > 0)
|
|
{
|
|
// Recherche si le même texte de renvoi a déjà été utilisé :
|
|
$renvoi_deja_utilise = 0;
|
|
for ($i=0; $i<$nb_renvois_comparatif; $i++)
|
|
{
|
|
if ($renvois_comparatif[$i]['id'] == $donnees['Renvoi'])
|
|
{
|
|
$renvoi_deja_utilise = $renvois_comparatif[$i]['no'];
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ($renvoi_deja_utilise != 0) $lignes_comparatif[$nb_lignes_comparatif]['fonction'] .= '<span class="renvoi">['.$renvoi_deja_utilise.']</span>';
|
|
else
|
|
{
|
|
$renvois_comparatif[$nb_renvois_comparatif]['no'] = $nb_renvois_comparatif + 1;
|
|
$renvois_comparatif[$nb_renvois_comparatif]['id'] = $donnees['Renvoi'];
|
|
$renvois_comparatif[$nb_renvois_comparatif]['texte'] = nl2br($_SESSION['textes']['boutique']['accueil']['comparatif']['texte_renvoi_'.$donnees['Renvoi'].'']);
|
|
|
|
$lignes_comparatif[$nb_lignes_comparatif]['fonction'] .= '<span class="renvoi">['.($nb_renvois_comparatif + 1).']</span>';
|
|
|
|
$nb_renvois_comparatif++;
|
|
}
|
|
}
|
|
|
|
// Remplacement des textes "Oui"/"Yes" par l'image d'une case cochée + suppression de la langue dans la variable :
|
|
$lignes_comparatif[$nb_lignes_comparatif]['Produits'] = array();
|
|
foreach(json_decode($donnees['Produits'], true) as $id_produit => $produit)
|
|
{
|
|
$lignes_comparatif[$nb_lignes_comparatif]['Produits'][$id_produit] = str_replace($texte_coche, "<img src=\"images/".$image_coche."\">", $produit);
|
|
}
|
|
|
|
// Demande de regroupement des lignes pour lesquelles les valeurs sont identiques :
|
|
$lignes_comparatif[$nb_lignes_comparatif]['type_ligne'] = count(array_unique($lignes_comparatif[$nb_lignes_comparatif]['Produits'])) <= 1 ? "unique" : "multiple";
|
|
|
|
$nb_lignes_comparatif ++;
|
|
}
|
|
Liberation_jeu_de_resultat_bdd($reponse);
|
|
|
|
$requete = "SELECT CONCAT('{',GROUP_CONCAT(DISTINCT CONCAT('\"',ID_PRODUITS,'\":\"',(SELECT Texte FROM TB_Textes_traduction WHERE ID_LANGUAGES=(SELECT ID FROM TB_Langues WHERE Prefix=?) AND ID_TEXTES=(SELECT ID_NOM FROM TB_Produits WHERE ID=ID_PRODUITS)),'\"') ORDER BY ID_PRODUITS ASC SEPARATOR ','),'}') AS resultat FROM TB_Comparatif_produits";
|
|
$reponse = Requete_preparee_bdd($requete,
|
|
array(
|
|
array('s', $_SESSION['langue'])),
|
|
__FILE__, __LINE__);
|
|
$donnees = Recherche_ligne_bdd($reponse);
|
|
$title_comparatif = json_decode($donnees['resultat'], true);
|
|
Liberation_jeu_de_resultat_bdd($reponse);
|
|
|
|
Fermeture_bdd(); // Déconnexion de MySQL
|
|
|
|
|
|
//=========================================================================
|
|
// Affichage :
|
|
echo '<div class="comparatif">';
|
|
|
|
//-----------------------------------------------------------------
|
|
// Bouton de sélection de l'affichage ou non de la table de comparaison :
|
|
echo '<div id="divButtonCollapseComparatif" class="bouton_comparatif plus '.$type_fond.'">';
|
|
echo '<a title="'.$_SESSION['textes']['boutique']['accueil']['comparatif']['titre_plus_a_title'].'" class="btn" data-bs-toggle="collapse" href="#collapseComparatif" role="button" aria-expanded="false" aria-controls="collapseComparatif" id="buttonCollapseComparatif">
|
|
'.nl2br($_SESSION['textes']['boutique']['accueil']['comparatif']['titre_plus_a_texte']); // Texte 111
|
|
echo '</a>';
|
|
echo '</div>';
|
|
|
|
|
|
echo '<div class="collapse" id="collapseComparatif">';
|
|
|
|
//-----------------------------------------------------------------
|
|
// Table principale avec fonctions et valeur pour chaque version :
|
|
echo '<table class="table_comparatif">';
|
|
echo '<thead>
|
|
<tr>';
|
|
/* echo '<th>'.$_SESSION['textes']['boutique']['accueil']['comparatif']['titre_1'].'</th>';
|
|
|
|
foreach($title_comparatif as $id_produit => $produit)
|
|
{
|
|
echo '<th>'.$produit.'</th>';
|
|
}
|
|
*/
|
|
echo '<th> </th>';
|
|
echo '<th> </th>';
|
|
echo '</tr>
|
|
</thead>';
|
|
|
|
// $nb_lignes_comparatif = 0;
|
|
|
|
echo '<tbody>';
|
|
for ($j = 0; $j < $nb_lignes_comparatif; $j ++)
|
|
{
|
|
echo '<tr>
|
|
<td>'.nl2br($lignes_comparatif[$j]['fonction']).'</td>';
|
|
|
|
foreach($lignes_comparatif[$j]['Produits'] as $id_produit => $produit)
|
|
{
|
|
echo '<td class="version">'.nl2br($produit).'</td>';
|
|
break;
|
|
}
|
|
/* if ($lignes_comparatif[$j]['type_ligne'] == "multiple")
|
|
{
|
|
foreach($lignes_comparatif[$j]['Produits'] as $id_produit => $produit)
|
|
{
|
|
echo '<td class="version">'.nl2br($produit).'</td>';
|
|
}
|
|
}
|
|
else
|
|
{
|
|
foreach($lignes_comparatif[$j]['Produits'] as $id_produit => $produit)
|
|
{
|
|
echo '<td class="version" colspan="4">'.nl2br($produit).'</td>';
|
|
break;
|
|
}
|
|
}
|
|
*/
|
|
echo '</tr>';
|
|
}
|
|
echo '</tbody>';
|
|
|
|
|
|
echo '</table>';
|
|
|
|
//-----------------------------------------------------------------
|
|
// Table des renvois :
|
|
echo '<table class="table_renvois_comparatif">
|
|
<tbody>';
|
|
for ($j = 0; $j < $nb_renvois_comparatif; $j ++)
|
|
{
|
|
echo '<tr>
|
|
<td>['.$renvois_comparatif[$j]['no'].'] '.nl2br($renvois_comparatif[$j]['texte']).'</td>
|
|
</tr>';
|
|
}
|
|
|
|
echo '</tbody>
|
|
</table>';
|
|
|
|
echo '</div>';
|
|
|
|
echo "<script>
|
|
$('#collapseComparatif').on('shown.bs.collapse', function () {
|
|
$('#divButtonCollapseComparatif').removeClass('plus');
|
|
$('#divButtonCollapseComparatif').addClass('moins');
|
|
$('buttonCollapseComparatif').attr('title','".$_SESSION['textes']['boutique']['accueil']['comparatif']['titre_moins_a_title']."');
|
|
$('buttonCollapseComparatif').html('".nl2br($_SESSION['textes']['boutique']['accueil']['comparatif']['titre_moins_a_texte'])."');
|
|
});
|
|
|
|
$('#collapseComparatif').on('hidden.bs.collapse', function () {
|
|
$('#divButtonCollapseComparatif').removeClass('moins');
|
|
$('#divButtonCollapseComparatif').addClass('plus');
|
|
$('buttonCollapseComparatif').attr('title','".$_SESSION['textes']['boutique']['accueil']['comparatif']['titre_plus_a_title']."');
|
|
$('buttonCollapseComparatif').html('".nl2br($_SESSION['textes']['boutique']['accueil']['comparatif']['titre_plus_a_texte'])."');
|
|
});
|
|
</script>";
|
|
|
|
echo '</div>';
|
|
|
|
}
|
|
|
|
|
|
//************************************************************************************************************
|
|
// Fonction : Convertit une valeur de latitude/longitude décimale en chaine de caratères comprenant Degrés, Minutes et Secondes
|
|
// Reçoit : L'indication "LAT" ou "LON" et la valeur décimale
|
|
// Retour : La chaine convertie
|
|
//************************************************************************************************************
|
|
function Conversion_DECtoDMS($lat_lon, $valeur)
|
|
{
|
|
if ($lat_lon == "LAT") $direction = $valeur < 0 ? 'S': 'N';
|
|
elseif ($lat_lon == "LON") $direction = $valeur < 0 ? 'W': 'E';
|
|
else $direction = "";
|
|
|
|
$signe = $valeur < 0 ? '-': '';
|
|
|
|
$degres = floor(abs($valeur ?? 0));
|
|
|
|
$decimale = (abs($valeur ?? 0)-$degres) * 3600;
|
|
|
|
$min = floor($decimale / 60);
|
|
$sec = round($decimale - ($min * 60), 1);
|
|
|
|
return (sprintf("%s%s°%02d'%04.1f\" %s", $signe, $degres, $min, $sec, $direction));
|
|
|
|
}
|
|
|
|
|
|
//************************************************************************************************************
|
|
// Fonction : Enregistrement dans le fichier de log de l'évènement
|
|
// Ne doit JAMAIS interrompre la page qui l'appelle (synthèse §50) : si le répertoire ou le fichier de log
|
|
// est inaccessible (cas du conteneur ship2net-php, où /home/koriolan/logs n'était pas monté), le message
|
|
// part dans le journal d'erreurs de PHP (visible par "docker logs ship2net-php") au lieu de provoquer une
|
|
// erreur fatale qui masquait l'erreur d'origine.
|
|
// Reçoit : Le texte à afficher dans le log, le fichier d'origine et la ligne d'origine
|
|
// Retour : Rien
|
|
//************************************************************************************************************
|
|
function Enregistrement_log($texte, $fichier, $ligne)
|
|
{
|
|
$repertoire_logs = REPERTOIRE_LOGS."/www_shipheart";
|
|
$prefixe_ligne = date("d/m/Y H:i:s")." [".basename($fichier)." - ".$ligne."] \t: ";
|
|
$suffixe_ligne = "\r\n";
|
|
|
|
// Répertoire créé au besoin (y compris les répertoires parents), sans avertissement en cas d'échec :
|
|
if (!is_dir($repertoire_logs)) @mkdir($repertoire_logs, 0775, true);
|
|
|
|
$log = @fopen($repertoire_logs.'/log_shipheart_'.date("Y-m-d").'.txt', "a");
|
|
if ($log !== false)
|
|
{
|
|
fputs($log, $prefixe_ligne.$texte.$suffixe_ligne);
|
|
fclose($log);
|
|
}
|
|
else
|
|
{
|
|
error_log("Ship2net (fichier de log inaccessible : ".$repertoire_logs.") ".$prefixe_ligne.$texte);
|
|
}
|
|
|
|
if(SHOW_DEBUG)
|
|
{
|
|
echo htmlspecialchars($prefixe_ligne.$texte).$suffixe_ligne;
|
|
}
|
|
}
|
|
|
|
|
|
//************************************************************************************************************
|
|
// Fonction : Conversion de format de dates
|
|
// Reçoit : Date à convertir
|
|
// Retour : la chaine mise en forme
|
|
//************************************************************************************************************
|
|
function Formatage_date($date)
|
|
{
|
|
if ($_SESSION['langue'] == "FR")
|
|
{
|
|
switch (substr($date, 5, 2))
|
|
{
|
|
case 1: {$mois="janvier"; break;}
|
|
case 2: {$mois="février"; break;}
|
|
case 3: {$mois="mars"; break;}
|
|
case 4: {$mois="avril"; break;}
|
|
case 5: {$mois="mai"; break;}
|
|
case 6: {$mois="juin"; break;}
|
|
case 7: {$mois="juillet"; break;}
|
|
case 8: {$mois="août"; break;}
|
|
case 9: {$mois="septembre"; break;}
|
|
case 10: {$mois="octobre"; break;}
|
|
case 11: {$mois="novembre"; break;}
|
|
case 12: {$mois="décembre"; break;}
|
|
default: $mois = substr($date, 5, 2);
|
|
}
|
|
|
|
$retour = substr($date, 8, 2).' '.$mois.' '.substr($date, 0, 4);
|
|
|
|
$suffixe_heure = 'à';
|
|
}
|
|
else
|
|
{
|
|
switch (substr($date, 5, 2))
|
|
{
|
|
case 1: {$mois="January"; break;}
|
|
case 2: {$mois="February"; break;}
|
|
case 3: {$mois="March"; break;}
|
|
case 4: {$mois="April"; break;}
|
|
case 5: {$mois="May"; break;}
|
|
case 6: {$mois="June"; break;}
|
|
case 7: {$mois="July"; break;}
|
|
case 8: {$mois="August"; break;}
|
|
case 9: {$mois="September"; break;}
|
|
case 10: {$mois="October"; break;}
|
|
case 11: {$mois="November"; break;}
|
|
case 12: {$mois="December"; break;}
|
|
default: $mois = substr($date, 5, 2);
|
|
}
|
|
|
|
$jour = ltrim(substr($date, 8, 2), "0"); // Suppression du zéro initial s'il y en a un...
|
|
switch($jour)
|
|
{
|
|
case 1:
|
|
case 21:
|
|
case 31: { $suffixe_jour = 'st'; break; }
|
|
case 2:
|
|
case 22: { $suffixe_jour = 'nd'; break; }
|
|
case 3:
|
|
case 23: { $suffixe_jour = 'rd'; break; }
|
|
default: { $suffixe_jour = 'th'; break; }
|
|
}
|
|
|
|
$retour = $mois.' '.$jour.'<sup>'.$suffixe_jour.'</sup>, '.substr($date, 0, 4);
|
|
|
|
$suffixe_heure = 'at';
|
|
}
|
|
|
|
if (strpos($date, ' ') !== false) $retour .= ' '.$suffixe_heure.' '.substr($date, 11); // Ajout de l'heure si la chaine d'entrée comprend un espace (entre date et heure)
|
|
|
|
return($retour);
|
|
}
|
|
|
|
|
|
//********************************************************************************************************************************
|
|
// Fonction : Recherche dans le BDD le prochain numéro de document, le formatte, et retourne le n° formatté du nouveau document.
|
|
// Reçoit : le type de document (cd dans definition.php) et l'année concernée
|
|
// Retour : Le numéro formatté du nouveau document, -1 si erreur de paramètres, -2 si dépassement de numérotation
|
|
// ATTENTION : l'accès à la BDD doit être ouvert AVANT d'accéder à cette fonction.
|
|
// NB : on pourrait l'ouvrir dedans mais on ne sait alors pas s'il faut la refermer...
|
|
//********************************************************************************************************************************
|
|
function nouveau_numero_document($type, $annee)
|
|
{
|
|
$nb_digits_numerotation = 4;
|
|
$erreur = 0;
|
|
|
|
|
|
// Contrôles et définition du préfixe au passage :
|
|
switch($type)
|
|
{
|
|
case NUM_TYPE_DEVIS : { $prefixe = "D"; $fonctionRequete = ""; break; }
|
|
case NUM_TYPE_COMMANDE : { $prefixe = "C"; $fonctionRequete = "porchainNoCommande"; break; }
|
|
case NUM_TYPE_FACTURE : { $prefixe = "F"; $fonctionRequete = "porchainNoFacture"; break; }
|
|
case NUM_TYPE_AVOIR : { $prefixe = "A"; $fonctionRequete = ""; break; }
|
|
default: return (-1);
|
|
}
|
|
|
|
// Recherche d'une numérotation existante :
|
|
$dernier_no = -1;
|
|
$requete = "SELECT $fonctionRequete(?) AS No";
|
|
$reponse = Requete_preparee_bdd($requete,
|
|
array(
|
|
array('i', $annee)),
|
|
__FILE__, __LINE__);
|
|
$donnees = Recherche_ligne_bdd($reponse);
|
|
$dernier_no = $donnees['No'];
|
|
Liberation_jeu_de_resultat_bdd($reponse);
|
|
|
|
// Formattage du n° de document :
|
|
if ($erreur != 0) return($erreur);
|
|
else return($prefixe.($annee-2000).str_pad($dernier_no, $nb_digits_numerotation, '0', STR_PAD_LEFT));
|
|
}
|
|
|
|
|
|
//************************************************************************************************************
|
|
// Fonction : Affichage du nom du jour de la semaine en français en version courte (3 lettres)
|
|
// Reçoit : Jour à convertir (entre 0: dimanche et 6: samedi voire 7:dimanche)
|
|
// Retour : Le texte court du jour en français
|
|
//************************************************************************************************************
|
|
function Texte_court_jour_semaine($jour)
|
|
{
|
|
|
|
switch ($jour)
|
|
{
|
|
case 0: {$texte_jour_semaine="Dim"; break;}
|
|
case 1: {$texte_jour_semaine="Lun"; break;}
|
|
case 2: {$texte_jour_semaine="Mar"; break;}
|
|
case 3: {$texte_jour_semaine="Mer"; break;}
|
|
case 4: {$texte_jour_semaine="Jeu"; break;}
|
|
case 5: {$texte_jour_semaine="Ven"; break;}
|
|
case 6: {$texte_jour_semaine="Sam"; break;}
|
|
case 7: {$texte_jour_semaine="Dim"; break;}
|
|
default: $texte_jour_semaine = "<Erreur de jour dans fonction 'texte_jour_semaine'>";
|
|
}
|
|
return($texte_jour_semaine);
|
|
}
|
|
|
|
|
|
//************************************************************************************************************
|
|
// Fonction : Affichage du nom du jour de la semaine en français
|
|
// Reçoit : Jour à convertir (entre 0: dimanche et 6: samedi voire 7:dimanche)
|
|
// Retour : Le texte du jour en français
|
|
//************************************************************************************************************
|
|
function Texte_jour_semaine($jour)
|
|
{
|
|
|
|
switch ($jour)
|
|
{
|
|
case 0: {$texte_jour_semaine="dimanche"; break;}
|
|
case 1: {$texte_jour_semaine="lundi"; break;}
|
|
case 2: {$texte_jour_semaine="mardi"; break;}
|
|
case 3: {$texte_jour_semaine="mercredi"; break;}
|
|
case 4: {$texte_jour_semaine="jeudi"; break;}
|
|
case 5: {$texte_jour_semaine="vendredi"; break;}
|
|
case 6: {$texte_jour_semaine="samedi"; break;}
|
|
case 7: {$texte_jour_semaine="dimanche"; break;}
|
|
default: $texte_jour_semaine = "<Erreur de jour dans fonction 'texte_jour_semaine'>";
|
|
}
|
|
return($texte_jour_semaine);
|
|
}
|
|
|
|
|
|
//************************************************************************************************************
|
|
// Fonction : Affichage du nom du mois en français
|
|
// Reçoit : Mois à convertir (entre 0: janvier et 11: décembre)
|
|
// Retour : Le texte du mois en français
|
|
//************************************************************************************************************
|
|
function Texte_mois($mois)
|
|
{
|
|
|
|
switch ($mois)
|
|
{
|
|
case 0: {$texte_mois="janvier"; break;}
|
|
case 1: {$texte_mois="février"; break;}
|
|
case 2: {$texte_mois="mars"; break;}
|
|
case 3: {$texte_mois="avril"; break;}
|
|
case 4: {$texte_mois="mai"; break;}
|
|
case 5: {$texte_mois="juin"; break;}
|
|
case 6: {$texte_mois="juillet"; break;}
|
|
case 7: {$texte_mois="août"; break;}
|
|
case 8: {$texte_mois="septembre"; break;}
|
|
case 9: {$texte_mois="octobre"; break;}
|
|
case 10: {$texte_mois="novembre"; break;}
|
|
case 11: {$texte_mois="décembre"; break;}
|
|
default: $texte_mois = "<Erreur de mois dans fonction 'Texte_mois'>";
|
|
}
|
|
return($texte_mois);
|
|
}
|
|
|
|
|
|
//************************************************************************************************************
|
|
// Fonction : Vérification d'un numero de téléphone + formatage
|
|
// Reçoit : Chaine représentant le numéro
|
|
// Retour : Le numéro formaté soud la forme "06 12 34 56 78 90"
|
|
//************************************************************************************************************
|
|
function Verification_numero_telephone($chaine_numero)
|
|
{
|
|
$numero_ok = true;
|
|
do
|
|
{
|
|
switch (strlen($chaine_numero))
|
|
{
|
|
case 10 : // Aucun séparateur n'est présent dans la chaine reçue :
|
|
{
|
|
for ($i=0; $i<5; $i++) $numeros[$i] = substr($chaine_numero, ($i*2), 2);
|
|
$chaine_numero = $numeros[0];
|
|
for ($i=1; $i<5; $i++) $chaine_numero .= ' '.$numeros[$i]; // Ajout des ' ' comme séparateur
|
|
break;
|
|
}
|
|
case 14 : // Un séparateur existe entre chaque groupe de deux chiffres :
|
|
{
|
|
for ($i=1; $i<5; $i++) $chaine_numero[($i*3)-1] = ' '; // Remplacement des séparateurs existants par des ' '
|
|
break;
|
|
}
|
|
default : // Comibinaison de nombre de séparateurs ou de chiffres incohérent :
|
|
{
|
|
$numero_ok = false;
|
|
break;
|
|
}
|
|
}
|
|
if (! $numero_ok) break; // On sort de la boucle DO si une erreur a déjà été trouvée.
|
|
|
|
// On décompose les 5 groupes :
|
|
$numeros = explode(" ", $chaine_numero);
|
|
if (count($numeros) != 5) {$numero_ok = false; break;}
|
|
foreach($numeros as $n)
|
|
{
|
|
if (strlen($n) != 2) {$numero_ok = false; break;}
|
|
if (($n < 0) OR ($n > 99)) {$numero_ok = false; break;}
|
|
}
|
|
if (($numeros[0] < 1) OR ($numeros[0] > 9)) {$numero_ok = false; break;}
|
|
} while (0);
|
|
|
|
if ($numero_ok) return($chaine_numero);
|
|
else return ("Numéro non valide");
|
|
}
|
|
|