<?php
include '../../INCLUDE/MySQL_include_param_dbb.php';
include '../../INCLUDE/MySQL_include_sprog_commun_shell.php';
setlocale (LC_ALL, 'fr_FR.UTF-8');
try {
 // == Connexion de la base de données ==
 $bdd = new PDO($TYPE_DBB.":host=".$SERVEUR.";dbname=".$BASEDD,$LOGIN_ADM,
   $MDP_ADM, array(PDO::ATTR_PERSISTENT => true));
 // -- Définition du codage en UTF8 --
 $bdd->exec("SET CHARACTER SET utf8");     
 // -- Affichage de toute la table des personnes -- 
 affichage_table($bdd,"Liste des personnes","personnes");
 // -- Saisie d'une liste de personnes --
 $saisie="saisie non vide";
 echo PHP_EOL;
 echo "----------------------------------".PHP_EOL;
 echo "-- Modification d'une personne ---".PHP_EOL;
 echo "----------------------------------".PHP_EOL;
 $tab_critere=choix_critere();
 if (count($tab_critere) != 0)
 {  $critere          = $tab_critere[0];
    $valeur_recherche = $tab_critere[1];
    // -- recherche sur critère --           
    $tab_personnes_trouvees=Recherche_sur_critere($bdd,'personnes',$critere,$valeur_recherche);
    // -- Traitement du tableau retourné --
    if (count($tab_personnes_trouvees) == 0) {
      echo "Aucune personne trouvée avec ce critère".PHP_EOL;
    }
    else {
      affichage_liste_personnes("Liste des personnes trouvées",$tab_personnes_trouvees);
      echo PHP_EOL;
      unset($numero);
      echo "Sélectionnez le numéro (ID) de la personne à modifier : ";
      fscanf(STDIN,"%d", $numero);
      if ( (empty($numero))||(!array_key_exists($numero,$tab_personnes_trouvees)) )
        echo "Aucune sélection".PHP_EOL;
      else {
        unset($tab_une_personne);
        $une_personne=$tab_personnes_trouvees[$numero];
        $tab_une_personne[]=$une_personne;
        affichage_liste_personnes("Personne à modifier",$tab_une_personne);
        echo "Confirmez la modification (o/n) : ";
        fscanf(STDIN,"%s",$reponse);
        if ($reponse == "o") {
          // Importation des variables via le nom des champs
          extract($une_personne,EXTR_OVERWRITE);
          // Initialisation des éléments de la requete UPDATE
          $MAJ_Nom    ='';
          $MAJ_Prenom ='';
          $MAJ_Age    ='';
          echo "Saisissez les nouvelles informations (vide pour inchangé) !".PHP_EOL;
          // -- Saisie du champ Nom --
          fprintf(STDOUT, "Nom    actuel : %-20s Nouveau Nom    : ",$Nom);
          $entree=fgets(STDIN) ;
          // Normalisation_nom du nom
          $entree=normalisation_nom($entree);
          // On vérifie que la saisie n'est pas vide
          if (!empty($entree)) {
            $Nom=$entree ;
            $MAJ_Nom =',Nom=\''.$Nom.'\'';
          }
          else {
            echo "Pas de modification du Nom".PHP_EOL;
          }
          // -- Saisie du champ Prenom --
          fprintf(STDOUT, "Prénom actuel : %-20s Nouveau Prénom : ",$Prenom);
          $entree=fgets(STDIN) ;
          // normalisation_nom du prénom
          $entree=normalisation_nom($entree);
          // On vérifie que la saisie n'est pas vide
          if (!empty($entree)) {
            $Prenom=$entree ;
            $MAJ_Prenom =',Prenom=\''.$Prenom.'\'';
          }
          else {
           echo "Pas de modification du prénom".PHP_EOL;
          }
          // -- Saisie du champ Age --
          fprintf(STDOUT, "Age    actuel : %-20d Nouvel Age     : ",$Age);
          $entree=fgets(STDIN) ;
          // On supprime les espaces au début et à la fin et le saut de ligne  
          $entree=trim($entree);
          // On vérifie que la saisie n'est pas vide
          if (!empty($entree)) {
           $entree=intval($entree);
           if ($entree == 0) {
             echo "  Erreur : Valeur du champ âge doit être un entier ! => Pas de modification ".PHP_EOL;
           }
           else { // On met à jour la donnée
             $Age=$entree ;
             $MAJ_Age =',Age='.$Age;
           }
          }
          else {
            echo "Pas de modification de l'âge".PHP_EOL;
          }
          // -- Mise à jour des données saisies --
          if (!empty($MAJ_Nom)||!empty($MAJ_Prenom)||!empty($MAJ_Age))
          {// -- Exécution de la requête --
           $requete='UPDATE personnes SET '.$MAJ_Nom.$MAJ_Prenom.$MAJ_Age.' WHERE ID='.$numero;
           // -- On supprime les espaces multiples --
           $requete= preg_replace('/\s{2,}/',' ',$requete);
           // -- Suppression de l’apostrophe juste apres SET
           $requete= str_replace('SET ,','SET ',$requete);
           echo $requete.PHP_EOL;
           $reponse = $bdd->exec($requete);
           if (!$reponse) {
            throw new Exception('Problème de requête sur la table.'.PHP_EOL);
           }
          }
          else echo "Aucun champ n'a été modifié".PHP_EOL;
        }
        else echo "Aucune donnée modifiée".PHP_EOL;
      }
    }
 }
 // -- Affichage de toute la table des personnes -- 
 affichage_table($bdd,"Liste des personnes","personnes");
}
catch(Exception $e) {echo 'Erreur : '.$e->getMessage();}
?>
