Date et formulaire

Résolu
freerider_76 Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -  
freerider_76 Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   126
 
$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   Statut Membre Dernière intervention   3
 
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   Statut Membre Dernière intervention   3
 
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