Date et formulaire

Résolu/Fermé
freerider_76 Messages postés 29 Date d'inscription jeudi 4 octobre 2012 Statut Membre Dernière intervention 2 juillet 2013 - 30 nov. 2012 à 15:12
freerider_76 Messages postés 29 Date d'inscription jeudi 4 octobre 2012 Statut Membre Dernière intervention 2 juillet 2013 - 30 nov. 2012 à 21:38
Bonjour,

J'ai un petit soucis avec mes dates en PHP que je souhaite faire passer en POST par un formulaire afin de réaliser semaine précédente et semaine suivantes.

Voici mon code :

<?php

setlocale(LC_TIME, 'fr_FR', 'french', 'fre', 'fra');

if(isset($_POST['today']))
{
$auj = date($_POST['today'], strtotime('+1week'));
}

else
{
$auj = date('Y-m-d');
}

$t_auj = strtotime($auj);
$p_auj = date('N', $t_auj);

if($p_auj == 1)
{
$deb = $t_auj;
$fin = strtotime($auj.' + 6 day');
}
else if($p_auj == 7){
$deb = strtotime($auj.' - 6 day');
$fin = $t_auj;
}
else{
$deb = strtotime($auj.' - '.(6-(7-$p_auj)).' day');
$fin = strtotime($auj.' + '.(7-$p_auj).' day');
}
?>
<table>
<tr>
<?php
while($deb <= $fin)
{
?>
<th>
<?php
echo strftime('%A %d %B', $deb);
$deb += 86400;?>
</th>
<?php
}
?>
</tr>
</table>

<form action="reservation.php" method="post">
<input type="hidden" id="today" name="today" value="<?php echo $auj; ?>" />
<input type="submit" value="Semaine Suivante" />
</form>

</body>
</html>

Donc l'opération ne se réalise pas, la variable n'est pas prise en compte et je reste toujours sur la même semaine ce qui n'est pas terrible ! ^^

Lorsque je remplace $_POST['today'] par 'Y-m-d' cela fonctionne mais que pour une semaine bien évidemment...

Si quelqu'un à la solution !

Je vous remercie d'avance pour votre aide !


3 réponses

Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
30 nov. 2012 à 18:00
$auj = date($_POST['today'], strtotime('+1week'));
Le premier paramètre de date est le format de sortie, $_POST["today"] contiens le jour non ?
$auj = date($_POST['today'], mktime(0,0,0,date("n"),$_POST['today'])); devrait fonctionner si j'ai bien compris ton code :)
0
freerider_76 Messages postés 29 Date d'inscription jeudi 4 octobre 2012 Statut Membre Dernière intervention 2 juillet 2013 3
30 nov. 2012 à 21:08
Bonjour Nhay et merci de ton aide,

$_POST['today'] contient : 2012-11-30 donc le jour d'aujourd'hui lors du premier envoie. lorsque je clique sur semaine suivante.

lorsque je fait cela :

if(isset($_POST['today']))
{
$auj = $_POST['today'];
echo $auj;
}

cela m'affiche donc bien la date envoyer : 2012-11-30.

lorsque je souhaite donc ajouter une semaine à cette date :

$auj = date($_POST['today'], strtotime('+1week'));

ne fonctionne pas aucune opération ne s'execute,
alors que si je fait :

$auj = date('Y-m-d', strtotime('+1week')); qui récupère donc exactement la même chose que $_POST['today'] cela fonctionne et j'obtiens bien la semaine suivante...

j'ai donc essayer ce que tu m'a donné mais cela ne fonctionne pas ou alors je l'ai mal placé ... ou tu le met dans mon code ?

Merci
0
freerider_76 Messages postés 29 Date d'inscription jeudi 4 octobre 2012 Statut Membre Dernière intervention 2 juillet 2013 3
30 nov. 2012 à 21:38
Bon après de nombreuses tentatives j'ai réussi à faire ce que je souhaitais !

Voici mon code :

if(isset($_POST['today']))
{
$date = date_create($_POST['today']);
date_add($date, date_interval_create_from_date_string('+7 days'));
$auj = date_format($date, 'Y-m-d');
}

Encore merci Nhay pour ton aide qui m'a permis d'approfondir mktime() ;)
0