décalage de dates de bdd

Mammouth du PHP | 702 Messages

09 mai 2012, 14:49

Bonjour à tous, je récupères des données de ma base de données et grâce à un formulaire je peux décaler (en positif et ou négatif) les dates,

j'ai donc ce script.

La date qui a vocation à être modifiée est à la ligne 38
<?php if (isset($_GET['liasse']) AND $_GET['liasse']=='liasse_a') { ?>
<?php
 
$sql = "SELECT * FROM liasse_a where n_doss='".mysql_real_escape_string($_GET['n_doss'])."'";
$qry = mysql_query($sql) or die(__LINE__.mysql_error().$sql);
 
$get_date = function($data_jours) {
   $today = new DateTime();
   $today->setTime(0, 0);
   $jours = (isset($_POST['jours']) && ctype_digit($_POST['jours'])) ? $_POST['jours'] : 0;
   if (isset($_POST['submit']) && ($_POST['submit'] === 'moins')) {
      $jours = -$jours;
   }
   $nb       = $data_jours + $jours;
   $func     = ($nb < 0) ? 'sub' : 'add';
   $interval = new DateInterval("P{$nb}D");
   return $today->$func($interval)->format('d-m-Y');
};
$i = -1; // index des enregistrements
?>
<table cellpadding="5" cellspacing="5">
   <tr>
      <td><strong>CODE SCENARIO</strong></td>
      <td><strong>LIBELLE</strong></td>
      <td><strong>ACTION</strong></td>
      <td><strong>DESCRIPTION</strong></td>
      <td><strong>DATE</strong></td>
   </tr>
   <form action="<?php echo (isset($_POST['go'])) ? 'go2.php' : '#'; ?>" method="post">
      <input type="hidden" name="liasse" value="<?php echo $_GET['liasse']; ?>"/>
      <input type="hidden" name="n_doss" value="<?php echo $_GET['n_doss']; ?>"/>
      <?php while($row = mysql_fetch_assoc($qry)): ?>
      <tr>
         <td><input name="data[<?php echo ++$i; ?>][code_s]" type="text" value="<?php echo $row['code_s'];?>" size="10"></td>
         <td><input name="data[<?php echo $i; ?>][libelle]" type="text" value="<?php echo $row['libelle']; ?>" size="45"></td>
         <td><input name="data[<?php echo $i; ?>][action]" type="text" value="<?php echo $row['action']; ?>" size="15"></td>
         <td><input name="data[<?php echo $i; ?>][libelle]" type="text" value="<?php echo $row['description']; ?>" size="55"></td>
         <td><input type="text" name="data[<?php echo $i; ?>][date]" value="<?php $jours = $row['date_action']  ; echo $jours ; ?>" size="12"></td>
      </tr>
      <?php endwhile; ?>
      <p>
         <strong>Décalage des date </strong>
         <table width="150" border="0" cellspacing="0" cellpadding="0">
            <tr>
               <td align="center" bgcolor="#FFFF99">
                  <input type="image" src="images/minus_remove_green.png" width="22" height="22" name="submit"  value="moins" />
                  <input name="jours" type="text" value="" size="5" />
                  <input type="image" src="images/plus_add_green.png" width="22" height="22" name="submit" value="plus" />
Le soucis c'est qu'il ne fait rien, je ne comprends pas, la structure me semble correcte. Quelqu'un pourrait il m'apporter ses lumières?

D'avance merci.

ViPHP
xTG
ViPHP | 7331 Messages

09 mai 2012, 15:01

Tu ne l'appelles jamais ta fonction.

Mammouth du PHP | 702 Messages

09 mai 2012, 15:32

oui en effet, mais même en l'appelant, j'ai un soucis:

la elle est rajoutée, mais elle me fait n'importe quoi dans ma base de donnée, les dates sont 2012, et lui il met 2017. je ne sais pas pourquoi de plus les mois et les jours qui apparaissent ne correspondent pas à ceux qui sont enregistrés.

Mammouth du PHP | 702 Messages

09 mai 2012, 16:42

j'ai résolu une partie du problème en mettant cela: "<?php $jours = date('d-m-Y',strtotime($row['date_action'])) ; echo $get_date($jours) ; ?>
donc pour l'heure cela fonctionne presque. Le dernier soucis c'est avec ma fonction, en positif cela fonctionne bien, mais lorsque je mets en négatif (via l'option moins de ma fonction, il me met cela:
( ! ) Fatal error: Uncaught exception 'Exception' with message 'DateInterval::__construct() [dateinterval.--construct]: Unknown or bad format (P-52D)' in C:\wamp\www\NEOGETCASH\GESTIONNAIRE\edit_scenario.php on line 256
( ! ) Exception: DateInterval::__construct() [dateinterval.--construct]: Unknown or bad format (P-52D) in C:\wamp\www\NEOGETCASH\GESTIONNAIRE\edit_scenario.php on line 256
du coup je ne sais pas ce qu'il y a . d'avance merci.