1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
| <?php
/**
* Jours et mois codés sur 2 digits et le reste pour l'année
* Les différentes parties de la date peuvent être séparées par n'importe quel glyph non numérique -/\#a[espace]...
* ATTENTION : une date comme '501231' sera interprétée comme le 31 décembre de l'an 50 !
* @param string $p Date au format YMMDD
* @return bool
*/
function isDate($p) {
$date = preg_replace('/[^\d]/u', '', $p);
if (strlen($date) > 4) {
$d = substr($date, -2, 2);
$m = substr($date, -4, 2);
$y = substr($date, 0, -4);
// année au-delà des limites pour checkdate()
if ($y > 32767) {
// on remplace l'année par 2000 pour une année bissextile et par 2001 pour le reste
// est bissextile : siecle -> ssi multiple de 400 - sinon ssi multiple de 4
$isLeap = ($y % 100) ? (($y % 4) === 0) : (($y % 400) === 0);
$y = ($isLeap) ? 2000 : 2001;
}
return checkdate($m, $d, $y);
}
return false;
}
/**
* Remplace tout caractère non numérique par un tiret
* @param string $p
* @return string
*/
function dbDateFormat($p) {
return preg_replace('/[^\d]/u', '-', $p);
}
// VERIFICATION ET COHERENCE //
$errors = array();
if (isset($_POST['datej']) && isDate($_POST['datej'])) {
$dj = $_POST['datej'];
}
else {
$errors[] = 'Datej invalide';
}
if (isset($_POST['datec']) && isDate($_POST['datec'])) {
$dc = $_POST['datec'];
}
else {
$errors[] = 'Datec invalide';
}
// $_POST['idclients_sites'] : ne semble pas être utilisé par la suite !!!!
if (isset($_POST['idclients_sites']) && ctype_digit($_POST['idclients_sites'])) {
$idcs = $_POST['idclients_sites'];
}
else {
$errors[] = 'Id clients sites invalides';
}
if (isset($_POST['clients_sites_id']) && ctype_digit($_POST['clients_sites_id'])) {
$csid = $_POST['clients_sites_id'];
}
else {
$errors[] = 'Clients sites id invalides';
}
if (isset($_POST['consignes']) && mb_strlen($_POST['consignes'])) {
$consignes = $_POST['consignes'];
}
else {
$errors[] = 'Consignes invalides';
}
// par défaut les dates du et au sont attendues
// sauf si la case à cocher Consigne permanente (name="permanent") renvoie '1'
$extractInterval = true;
if (isset($_POST['permanent']) && ($_POST['permanent'] === '1')) {
$dateDu = 'NULL';
$dateAu = 'NULL';
$extractInterval = false;
}
if ($extractInterval) {
if (isset($_POST['date_du']) && isDate($_POST['date_du'])) {
$dateDu = $_POST['date_du'];
}
else {
$errors[] = 'Date du invalide';
}
if (isset($_POST['date_au']) && isDate($_POST['date_au'])) {
$dateAu = $_POST['date_au'];
}
else {
$errors[] = 'Date au invalide';
}
}
// si des erreurs sont trouvées, on s'arrête
if ( ! empty($errors)) {
echo 'Erreurs dans la saisie...';
exit;
}
// tout est ok -> injection bdd
include('conf.php'); // je suppose qu'il a une connexion à mysql dedans
// échappement et formatage des données pour la base
// on s'assure que l'ordre des données dans la table $dbData correspond à l'ordre des champs du INSERT
$dbData = array();
$dbData['dj'] = "'".dbDateFormat($dj)."'"; // date
$dbData['dc'] = "'".dbDateFormat($dc)."'"; // date
if ($extractInterval) {
$dbData['ddu'] = "'".dbDateFormat($dateDu)."'"; // date
$dbData['dau'] = "'".dbDateFormat($dateAu)."'"; // date
}
else {
$dbData['ddu'] = $dateDu; // 'NULL'
$dbData['dau'] = $dateAu; // 'NULL'
}
// $dbData['idcs'] = $idcs; // integer correspond à $_POST['idclients_sites'] inutilisé
$dbData['consignes'] = "'".mysql_real_escape_string($consignes)."'";
$dbData['csid'] = $csid; // integer
// injection des données
$sql = 'INSERT INTO tb_consignes (datej, datec, date_du, date_au, consignes, clients_sites_id) ';
$sql .= 'VALUES ('.implode(', ', $dbData).')';
//exécution de la requête sql:
$exec = mysql_query($sql, $cnx);
$image = ($exec) ? 'ajout_ok.png' : 'ajout_nonok.png';
?>
<br /><br />
<font color="green" size="6"><center><img src="./img/<?php echo $image; ?>" /></center></font>
<br /><br / ><br /><br / ><br /><br / ><br /><br / > |
Partager