Définir une date rn fonction d'une checkbox

Mammouth du PHP | 643 Messages

06 sept. 2015, 18:42

Salut à tous voilà mon petit soucis.
J'ai un formulaire qui permet d'enregistrer 2 dates il marche très bien, cependant j'aimerais rajoutais une checkbox pour ( ouvert tte l'année ), mais ne vois pas comment m'y prendre.
Le but est que si la checkbox est coché ca envoi le 1er janvier de l'année en cours pour la variable début
et 31 décembre de l'année pour la variable fin
Voila ou j'en suis:

La partie du formulaire ou j'ai mes dates
<label>Date de début</label>
          <input class="form-control" id="date_debut_sortie" readonly  name="date_debut_sortie" type="text" value="<?php echo !empty($_POST['date_debut_sortie']) ? $_POST['date_debut_sortie'] : NULL; ?>" /> 
          <?php echo !empty($erreurs['date_debut_sortie']) ? '<div class="alert alert-danger" role="alert"><i class="fa fa-exclamation-triangle"></i>'.$erreurs['date_debut_sortie'].'</div>' : NULL; ?>

          <label>Date de fin</label>
          <input class="form-control" id="date_fin_sortie" readonly name="date_fin_sortie" type="text" value="<?php echo !empty($_POST['date_fin_sortie']) ? $_POST['date_fin_sortie'] : NULL; ?>" />
          <?php echo !empty($erreurs['date_fin_sortie']) ? '<div class="alert alert-danger" role="alert"><i class="fa fa-exclamation-triangle"></i>' .$erreurs['date_fin_sortie'].'</div>' : NULL; ?>
La partie qui traite mes dates:
//conversion de la date debut du format fr(jj:mm:aaaa hh:mm:ss) en format us(aaaa-mm-jj hh:mm:ss)
	$date_debut = date_create_from_format('d/m/Y', $_POST['date_debut_sortie']);
	$date_debut = date_format($date_debut, 'Y-m-d');
	$date_fin = date_create_from_format('d/m/Y', $_POST['date_fin_sortie']);
	$date_fin = date_format($date_fin, 'Y-m-d');
Merci à vous

Mammouth du PHP | 1339 Messages

07 sept. 2015, 19:24

if(!empty($_POST['checkbox'])) $_POST['date_debut_sortie'] = date('d/m/Y', mktime(date('Y'), 1, 1, 0, 0, 0));
Un truc comme ca non ?
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 sept. 2015, 12:18

Pour reprendre la suggestion d'Elie, mais avec une version un peu plus légère que de passer par mktime :
if (!empty($_POST['ta_checkbox'])) {
  $date_debut = date('Y') . '-01-01';
  $date_fin =  date('Y') . '-12-31';
}
else {
//conversion de la date debut du format fr(jj:mm:aaaa hh:mm:ss) en format us(aaaa-mm-jj hh:mm:ss)
  $date_debut = date_create_from_format('d/m/Y', $_POST['date_debut_sortie']);
  $date_debut = date_format($date_debut, 'Y-m-d');
  $date_fin = date_create_from_format('d/m/Y', $_POST['date_fin_sortie']);
  $date_fin = date_format($date_fin, 'Y-m-d');
}
A noter que le format us des dates est MM-JJ-AAAA. Le format AAAA-MM-JJ est quant à lui le format ISO de la date :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...