par
lacfab » 29 janv. 2011, 02:36
J'ai avancé sur la chose.
J'arrive à afficher le jour en cours et le jour précédent et suivant.
Si nous sommes mercredi : mardi - mercredi - jeudi
Si nous sommes samedi : vendredi - lundi - mardi
Jusque là no problemo. Maintenant je pousse le bouchon, je me dis que les utilisateurs voudront peut-être naviguer de quelques jours en avant ou en arrière, je fais donc un bouton "moins" et un bouton "plus" qui est géré via des dates (du coup possibilité de faire un menu déroulant avec les dates du mois courant par exemple)
C'est là que je bloque, voici mon bout de code que vous pourrez tester pour vous rendre compte du soucis. Les dates passent bien dans l'entête http mais ne sont pas interprétées
<?
session_start();
if (isset($_GET['session']) AND $_GET['session'] == "erase"){
unset ($_SESSION['jourNum']);
unset ($_SESSION['dateJour']);
}
?>
<html>
<head>
<title>Planning</title>
<script type="css">
.table
{
border:1px solid #c3c3c3;
border-collapse:collapse;
}
</script>
</head>
<body bgcolor="#CCCCCC">
<?php
// Si dateJour n'existe pas, lui donner une valeur
if (!isset ($_SESSION['dateJour'])){
$_SESSION['dateJour'] = time();
}
// Si jourNum n'existe pas, lui donner une valeur
if (!isset ($_SESSION['jourNum'])){
$_SESSION['jourNum'] = date('w',time());
}
// Si jour passe dans l'entete http, on change la date
if (isset ($_GET['jour'])){
$jour = str_replace("-", ",", $_GET['jour']);
$_SESSION['dateJour'] = mktime(0, 0, 0, $jour);
$_SESSION['jourNum'] = date('w',$_SESSION['dateJour']);
}
echo time().'<br>';
echo $_SESSION['dateJour'].'<br>';
echo date('Y-m-d', $_SESSION['dateJour']).'<br>';
// nombre de secondes
$un = "86400";
$deux = "172800";
$trois = "259200";
// Samedi
if ($_SESSION['jourNum'] == "6"){
echo 'on est samedi<br>';
$_SESSION['jourNum'] = "1"; // aujourd'hui devient lundi
$_SESSION['dateJour'] = $_SESSION['dateJour'] + $deux;
$hierNum = "5"; // hier devient vendredi
$dateHier = $_SESSION['dateJour'] - $trois;
$demainNum = "2"; // demain devient mardi
$dateDemain = $_SESSION['dateJour'] + $un;
}
// Dimanche
elseif ($_SESSION['jourNum'] == "0"){
echo 'on est dimanche<br>';
$_SESSION['jourNum'] = "1"; //aujourd'hui devient lundi
$_SESSION['dateJour'] = $_SESSION['dateJour'] + $un;
$hierNum = "5"; // hier devient dimanche
$dateHier = $_SESSION['dateJour'] - $deux;
$demainNum = "2"; //demain devient mardi
$dateDemain = $_SESSION['dateJour'] + $un;
}
// Lundi
elseif ($_SESSION['jourNum'] == "1"){
echo 'on est lundi<br>';
$hierNum = "5"; //hier devient vendredi
$dateHier = $_SESSION['dateJour'] - $trois;
$demainNum = "2"; //demain devient mardi
$dateDemain = $_SESSION['dateJour'] + $un;
}
// Vendredi
elseif ($_SESSION['jourNum'] == "5"){
echo 'on est vendredi<br>';
$hierNum = "4"; // hier devient jeudi
$dateHier = $_SESSION['dateJour'] - $un;
$demainNum = "1"; // demain devient lundi
$dateDemain = $_SESSION['dateJour'] + $trois;
}
else {
echo 'on est en semaine<br>';
$hierNum = $_SESSION['jourNum'] - 1;
$dateHier = $_SESSION['dateJour'] - $un;
$demainNum = $_SESSION['jourNum'] + 1;
$dateDemain = $_SESSION['dateJour'] + $un;
}
$jourMoins = date("m-d-Y", $dateHier);
$jourPlus = date("m-d-Y", $dateDemain);
echo '<a href="tableau.php?jour='.$jourMoins.'">Jour précédent</a> - <a href="tableau.php?jour='.$jourPlus.'">Jour suivant</a> - <a href="tableau.php?session=erase">Aller à aujourd\'hui</a>';
echo '<table border=1 cellpadding=0 cellspacing=0 class="table">
<tbody>
<tr>
<td> </td>
<td width=1 nowrap bgcolor="#222222"></td>
<td colspan=40 align=center nowrap>'.date('Y-m-d', $dateHier).' - jour '.$hierNum.'</td>
<td width=1 nowrap bgcolor="#222222"></td>
<td colspan=40 align=center nowrap>'.date('Y-m-d', $_SESSION['dateJour']).' - jour '.$_SESSION['jourNum'].'</td>
<td width=1 nowrap bgcolor="#222222"></td>
<td colspan=40 align=center nowrap>'.date('Y-m-d', $dateDemain).' - jour '.$demainNum.'</td>
<td width=1 nowrap bgcolor="#222222"></td>
</tr>';
?>
</tbody>
</table>
</body>
</html>
je butte sur la solution .... une idée ?
J'ai avancé sur la chose.
J'arrive à afficher le jour en cours et le jour précédent et suivant.
Si nous sommes mercredi : mardi - mercredi - jeudi
Si nous sommes samedi : vendredi - lundi - mardi
Jusque là no problemo. Maintenant je pousse le bouchon, je me dis que les utilisateurs voudront peut-être naviguer de quelques jours en avant ou en arrière, je fais donc un bouton "moins" et un bouton "plus" qui est géré via des dates (du coup possibilité de faire un menu déroulant avec les dates du mois courant par exemple)
C'est là que je bloque, voici mon bout de code que vous pourrez tester pour vous rendre compte du soucis. Les dates passent bien dans l'entête http mais ne sont pas interprétées
[php]<?
session_start();
if (isset($_GET['session']) AND $_GET['session'] == "erase"){
unset ($_SESSION['jourNum']);
unset ($_SESSION['dateJour']);
}
?>
<html>
<head>
<title>Planning</title>
<script type="css">
.table
{
border:1px solid #c3c3c3;
border-collapse:collapse;
}
</script>
</head>
<body bgcolor="#CCCCCC">
<?php
// Si dateJour n'existe pas, lui donner une valeur
if (!isset ($_SESSION['dateJour'])){
$_SESSION['dateJour'] = time();
}
// Si jourNum n'existe pas, lui donner une valeur
if (!isset ($_SESSION['jourNum'])){
$_SESSION['jourNum'] = date('w',time());
}
// Si jour passe dans l'entete http, on change la date
if (isset ($_GET['jour'])){
$jour = str_replace("-", ",", $_GET['jour']);
$_SESSION['dateJour'] = mktime(0, 0, 0, $jour);
$_SESSION['jourNum'] = date('w',$_SESSION['dateJour']);
}
echo time().'<br>';
echo $_SESSION['dateJour'].'<br>';
echo date('Y-m-d', $_SESSION['dateJour']).'<br>';
// nombre de secondes
$un = "86400";
$deux = "172800";
$trois = "259200";
// Samedi
if ($_SESSION['jourNum'] == "6"){
echo 'on est samedi<br>';
$_SESSION['jourNum'] = "1"; // aujourd'hui devient lundi
$_SESSION['dateJour'] = $_SESSION['dateJour'] + $deux;
$hierNum = "5"; // hier devient vendredi
$dateHier = $_SESSION['dateJour'] - $trois;
$demainNum = "2"; // demain devient mardi
$dateDemain = $_SESSION['dateJour'] + $un;
}
// Dimanche
elseif ($_SESSION['jourNum'] == "0"){
echo 'on est dimanche<br>';
$_SESSION['jourNum'] = "1"; //aujourd'hui devient lundi
$_SESSION['dateJour'] = $_SESSION['dateJour'] + $un;
$hierNum = "5"; // hier devient dimanche
$dateHier = $_SESSION['dateJour'] - $deux;
$demainNum = "2"; //demain devient mardi
$dateDemain = $_SESSION['dateJour'] + $un;
}
// Lundi
elseif ($_SESSION['jourNum'] == "1"){
echo 'on est lundi<br>';
$hierNum = "5"; //hier devient vendredi
$dateHier = $_SESSION['dateJour'] - $trois;
$demainNum = "2"; //demain devient mardi
$dateDemain = $_SESSION['dateJour'] + $un;
}
// Vendredi
elseif ($_SESSION['jourNum'] == "5"){
echo 'on est vendredi<br>';
$hierNum = "4"; // hier devient jeudi
$dateHier = $_SESSION['dateJour'] - $un;
$demainNum = "1"; // demain devient lundi
$dateDemain = $_SESSION['dateJour'] + $trois;
}
else {
echo 'on est en semaine<br>';
$hierNum = $_SESSION['jourNum'] - 1;
$dateHier = $_SESSION['dateJour'] - $un;
$demainNum = $_SESSION['jourNum'] + 1;
$dateDemain = $_SESSION['dateJour'] + $un;
}
$jourMoins = date("m-d-Y", $dateHier);
$jourPlus = date("m-d-Y", $dateDemain);
echo '<a href="tableau.php?jour='.$jourMoins.'">Jour précédent</a> - <a href="tableau.php?jour='.$jourPlus.'">Jour suivant</a> - <a href="tableau.php?session=erase">Aller à aujourd\'hui</a>';
echo '<table border=1 cellpadding=0 cellspacing=0 class="table">
<tbody>
<tr>
<td> </td>
<td width=1 nowrap bgcolor="#222222"></td>
<td colspan=40 align=center nowrap>'.date('Y-m-d', $dateHier).' - jour '.$hierNum.'</td>
<td width=1 nowrap bgcolor="#222222"></td>
<td colspan=40 align=center nowrap>'.date('Y-m-d', $_SESSION['dateJour']).' - jour '.$_SESSION['jourNum'].'</td>
<td width=1 nowrap bgcolor="#222222"></td>
<td colspan=40 align=center nowrap>'.date('Y-m-d', $dateDemain).' - jour '.$demainNum.'</td>
<td width=1 nowrap bgcolor="#222222"></td>
</tr>';
?>
</tbody>
</table>
</body>
</html>[/php]
je butte sur la solution .... une idée ?