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 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
| <?php
//import fichier config
include("config.inc.php");
//connection BDD
try {
$bdd = new PDO($hote, $user, $password);
}
catch (Exception $e){
die('Erreur : ' . $e->getMessage());
}
//Vérification du formulaire
//construction du tableau des variables
$filtres = array(
'logement' => FILTER_SANITIZE_STRING,
'adresse' => FILTER_SANITIZE_STRING,
'npa' => array(
'filter' => FILTER_CALLBACK,
'options' => 'validerNpa'
),
'ville' => FILTER_SANITIZE_STRING,
'nom' => FILTER_SANITIZE_STRING,
'prenom' => FILTER_SANITIZE_STRING,
'email' => FILTER_VALIDATE_EMAIL,
'arrivee' => array(
'filter' => FILTER_CALLBACK,
'options' => 'validerArrivee'
),
'depart' => array(
'filter' => FILTER_CALLBACK,
'options' => 'validerDepart'
)
);
//Fonction validation NPA
function validerNpa($npa) {
//Retourne le numéro s'il est valide, sinon false.
return preg_match('#^[0-9]{4}$#', $npa) ? $npa : false;
}
//Fonction validation DATE
function validerArrivee($date_arrivee) {
//Retourne le numéro s'il est valide, sinon false.
return preg_match('#^\d{4}-\d{1,2}-\d{1,2}$#', $date_arrivee) ? $date_arrivee : false;
}
//Fonction validation DATE
function validerDepart($date_depart) {
//Retourne le numéro s'il est valide, sinon false.
return preg_match('#^\d{4}-\d{1,2}-\d{1,2}$#', $date_depart) ? $date_depart : false;
}
$resultat = filter_input_array(INPUT_POST, $filtres);
if($resultat != null) { //Si le formulaire a bien été posté.
//transforme post en variables
extract($_POST);
//Enregistrer des messages d'erreur perso.
$messageErreur = array(
'email' => $t_erreurmail,
'npa' => $t_erreurnpa,
'arrivee' => $t_erreurdate,
'depart' => $t_erreurdate
);
$nbrErreurs = 0;
foreach($filtres as $cle => $valeur) { //Parcourir tous les champs voulus.
if(empty($_POST[$cle])) { //Si le champ est vide.
$messageErreur = $t_erreur . '.<br/>';
$nbrErreurs++;
}
elseif($resultat[$cle] === false) { //S'il n'est pas valide.
$messageErreur = $messageErreur[$cle] . '<br/>';
$nbrErreurs++;
}
}
if($nbrErreurs == 0) {
$t_intro = $t_champsvalid;
//INSERT OCCUPANT
// On vérifie si il n'y a pas d'occupants identiques
$req = $bdd->prepare('SELECT id, nom, prenom, email, proprietaire FROM occupant WHERE nom = :nom AND prenom = :prenom');
$req->execute(array(
'nom' => $nom,
'prenom' => $prenom
));
$r_occupant = $req->fetch();
//Si il n'y en a pas on insert les données
if (!$r_occupant){
$ajout = $bdd->prepare('INSERT INTO occupant(nom, prenom, email, proprietaire, logement, date) VALUES(:nom, :prenom, :email, :proprietaire, :logement, NOW())');
$ajout ->execute(array(
'nom' => $nom,
'prenom' => $prenom,
'email' => $email,
'proprietaire' => $type,
'logement' => $logement
));
$info = 'Occupant ajouté';
$ajout->closeCursor();
}
else{
//Sinon on remplace les champs existant par les nouveaux
$modif = $bdd->prepare('UPDATE occupant SET nom = :nom, prenom = :prenom, email = :email, proprietaire = :proprietaire, logement = :logement, date = NOW() WHERE nom = :nom AND prenom =:prenom');
$modif ->execute(array(
'nom' => $nom,
'prenom' => $prenom,
'email' => $email,
'proprietaire' => $type,
'logement' => $logement
));
$info = 'Occupant modifié';
$modif->closeCursor();
}
$req->closeCursor();
//On récupère l'ID du dernier propriétaire associé au logement
$occ_id = $bdd->prepare('SELECT id FROM occupant WHERE proprietaire =\'1\' AND logement = :logement');
$occ_id ->execute(array(
'logement' => $logement
));
$donnees = $occ_id->fetch();
$id_proprietaire = $donnees['id'];
$occ_id->closeCursor();
//INSERT LOGEMENT
// On vérifie si il n'y a pas de logement identique
$req = $bdd->prepare('SELECT nom, adresse, npa, ville, proprietaire FROM logement WHERE nom = :nom_logement');
$req->execute(array(
'nom_logement' => $logement
));
$r_logement = $req->fetch();
//Si il n'y en a pas on insert les données
if (!$r_logement){
$ajout = $bdd->prepare('INSERT INTO logement(nom, adresse, npa, ville, proprietaire, date) VALUES(:nom_logement, :adresse, :npa, :ville, :proprietaire, NOW())');
$ajout ->execute(array(
'nom_logement' => $logement,
'adresse' => $adresse,
'npa' => $npa,
'ville' => $ville,
'proprietaire' => $id_proprietaire
));
$info2 = 'occupation ajouté';
$ajout->closeCursor();
}
else{
//Sinon on remplace les champs existant par les nouveaux
$modif = $bdd->prepare('UPDATE logement SET nom = :nom_logement, adresse = :adresse, npa = :npa, ville = :ville, proprietaire = :proprietaire, date = NOW() WHERE nom = :nom_logement');
$modif ->execute(array(
'nom_logement' => $logement,
'adresse' => $adresse,
'npa' => $npa,
'ville' => $ville,
'proprietaire' => $id_proprietaire
));
$info2 = 'logement ajouté';
$modif->closeCursor();
}
$req->closeCursor();
//On récupère l'ID du dernier logement modifié
$log_id = $bdd->query('SELECT id FROM logement ORDER BY date DESC LIMIT 0, 1');
$donnees = $log_id->fetch();
$id_logement = $donnees['id'];
//INSERT OCCUPATION
//On récupère l'ID du dernier occupant modifié
$log_id = $bdd->query('SELECT id FROM occupant ORDER BY date DESC LIMIT 0, 1');
$donnees = $log_id->fetch();
$id_occupant = $donnees['id'];
//On insére l'occupation
$ajout = $bdd->prepare('INSERT INTO occupation(arrivee, depart, occupant, logement, date) VALUES(:date_arrivee, :date_depart, :occupant, :logement, NOW())');
$ajout ->execute(array(
'date_arrivee' => $arrivee,
'date_depart' => $depart,
'occupant' => $id_occupant,
'logement' => $id_logement
));
$info3 = 'occupation ajouté';
$ajout->closeCursor();
}
}
?> |
Partager