par
blinz » 18 juin 2014, 17:19
Donc voilà j'ai fait en sorte de récupèrer le timestamp de la date de l'événement avec le code ci dessous:
Surtout avec:
$r[strtotime($d->date_debut_sortie)][$d->id_loisirs] = $d->titre;
Page date.php
<?php
class Date{
var $days = array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi','Dimanche');
var $months = array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
function getEvents($year){
global $bdd;
$req = $bdd->query("SELECT id_loisirs,titre,date_debut_sortie FROM favoris f LEFT JOIN simply_user su ON f.`id_simply_user` = su.`id_simply_user` LEFT JOIN loisirs l ON f.`id_loisir` = l.`id_loisirs` WHERE su.`id_simply_user` =".$_SESSION['userid']." AND YEAR(date_debut_sortie)=".$year);
$r = array();
/**
* Ce que je veux $r[TIMESTAMP][id] = title
*/
while($d = $req->fetch(PDO::FETCH_OBJ)){
print_r($d);
$r[strtotime($d->date_debut_sortie)][$d->id_loisirs] = $d->titre;
}
return $r;
}
function getAll($year){
$r = array();
$date = new DateTime($year.'-01-01');
while($date->format('Y') <= $year){
// Ce que je veux => $r[ANEEE][MOIS][JOUR] = JOUR DE LA SEMAINE
$y = $date->format('Y');
$m = $date->format('n');
$d = $date->format('j');
$w = str_replace('0','7',$date->format('w'));
$r[$y][$m][$d] = $w;
$date->add(new DateInterval('P1D'));
}
return $r;
}
}
Donc le renvoi de ça nous donne:
Page mon_profil.php
<?php
require('date.php');
$date = new Date();
$year = date('Y');
$events = $date->getEvents($year);
$dates = $date->getAll($year);
?>
<div class="periods">
<div class="year"><?php echo $year; ?></div>
<div class="months">
<ul>
<?php foreach ($date->months as $id=>$m): ?>
<li><a href="#" id="linkMonth<?php echo $id+1; ?>"><?php echo utf8_encode(substr(utf8_decode($m),0,3)); ?></a></li>
<?php endforeach; ?>
</ul>
</div>
<div class="clear"></div>
<?php $dates = current($dates); ?>
<?php foreach ($dates as $m=>$days): ?>
<div class="month relative" id="month<?php echo $m; ?>">
<table>
<thead>
<tr>
<?php foreach ($date->days as $d): ?>
<th><?php echo substr($d,0,3); ?></th>
<?php endforeach; ?>
</tr>
</thead>
<tbody>
<tr>
<?php $end = end($days); foreach($days as $d=>$w): ?>
<?php $time = strtotime("$year-$m-$d"); ?>
<?php if($d == 1 && $w != 1): ?>
<td colspan="<?php echo $w-1; ?>" class="padding"></td>
<?php endif; ?>
<td<?php if($time == strtotime(date('Y-m-d'))): ?> class="today" <?php endif; ?>>
<div class="relative">
<div class="day"><?php echo $d; ?></div>
</div>
<div class="daytitle">
<?php echo $date->days[$w-1]; ?> <?php echo $d; ?> <?php echo $date->months[$m-1]; ?>
</div>
<ul class="events">
<?php if(isset($events[$time])): foreach($events[$time] as $e): ?>
<li><?php echo $e; ?></li>
<?php endforeach; endif; ?>
</ul>
</td>
<?php if($w == 7): ?>
</tr><tr>
<?php endif; ?>
<?php endforeach; ?>
<?php if($end != 7): ?>
<td colspan="<?php echo 7-$end; ?>" class="padding"></td>
<?php endif; ?>
</tr>
</tbody>
</table>
</div>
<?php endforeach; ?>
</div>
<div class="clear"></div>
<pre><?php print_r($events); ?></pre>
Ceci
<pre><?php print_r($events); ?></pre>
nous donne l'array suivant:
Array
(
[1402718400] => Array
(
[37] => Le balsamique
)
[1402034400] => Array
(
[40] => La bastille
)
[1404007200] => Array
(
[42] => le savoyard
)
)
On a donc bien le timestamp de la date de l'évenement et le titre. ( j'aimerais rajouter la date_debut_sortie) mais je sais pas comment faire
Dans ma page
profil.php
Ce code doit me permettre d'afficher l'événement au hover de la date sur le calendrier:
<ul class="events">
<?php if(isset($events[$time])): foreach($events[$time] as $e): ?>
<li><?php echo $e; ?></li>
<?php endforeach; endif; ?>
</ul>
Mais les balise <li>....</li> sont absente de mon code source...
Comment résoudre le tout svp, merci
Donc voilà j'ai fait en sorte de récupèrer le timestamp de la date de l'événement avec le code ci dessous:
Surtout avec:
[php]$r[strtotime($d->date_debut_sortie)][$d->id_loisirs] = $d->titre;[/php]
[b]Page date.php[/b]
[php]<?php
class Date{
var $days = array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi','Dimanche');
var $months = array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
function getEvents($year){
global $bdd;
$req = $bdd->query("SELECT id_loisirs,titre,date_debut_sortie FROM favoris f LEFT JOIN simply_user su ON f.`id_simply_user` = su.`id_simply_user` LEFT JOIN loisirs l ON f.`id_loisir` = l.`id_loisirs` WHERE su.`id_simply_user` =".$_SESSION['userid']." AND YEAR(date_debut_sortie)=".$year);
$r = array();
/**
* Ce que je veux $r[TIMESTAMP][id] = title
*/
while($d = $req->fetch(PDO::FETCH_OBJ)){
print_r($d);
$r[strtotime($d->date_debut_sortie)][$d->id_loisirs] = $d->titre;
}
return $r;
}
function getAll($year){
$r = array();
$date = new DateTime($year.'-01-01');
while($date->format('Y') <= $year){
// Ce que je veux => $r[ANEEE][MOIS][JOUR] = JOUR DE LA SEMAINE
$y = $date->format('Y');
$m = $date->format('n');
$d = $date->format('j');
$w = str_replace('0','7',$date->format('w'));
$r[$y][$m][$d] = $w;
$date->add(new DateInterval('P1D'));
}
return $r;
}
}
[/php]
Donc le renvoi de ça nous donne:
[b]Page mon_profil.php[/b]
[php] <?php
require('date.php');
$date = new Date();
$year = date('Y');
$events = $date->getEvents($year);
$dates = $date->getAll($year);
?>
<div class="periods">
<div class="year"><?php echo $year; ?></div>
<div class="months">
<ul>
<?php foreach ($date->months as $id=>$m): ?>
<li><a href="#" id="linkMonth<?php echo $id+1; ?>"><?php echo utf8_encode(substr(utf8_decode($m),0,3)); ?></a></li>
<?php endforeach; ?>
</ul>
</div>
<div class="clear"></div>
<?php $dates = current($dates); ?>
<?php foreach ($dates as $m=>$days): ?>
<div class="month relative" id="month<?php echo $m; ?>">
<table>
<thead>
<tr>
<?php foreach ($date->days as $d): ?>
<th><?php echo substr($d,0,3); ?></th>
<?php endforeach; ?>
</tr>
</thead>
<tbody>
<tr>
<?php $end = end($days); foreach($days as $d=>$w): ?>
<?php $time = strtotime("$year-$m-$d"); ?>
<?php if($d == 1 && $w != 1): ?>
<td colspan="<?php echo $w-1; ?>" class="padding"></td>
<?php endif; ?>
<td<?php if($time == strtotime(date('Y-m-d'))): ?> class="today" <?php endif; ?>>
<div class="relative">
<div class="day"><?php echo $d; ?></div>
</div>
<div class="daytitle">
<?php echo $date->days[$w-1]; ?> <?php echo $d; ?> <?php echo $date->months[$m-1]; ?>
</div>
<ul class="events">
<?php if(isset($events[$time])): foreach($events[$time] as $e): ?>
<li><?php echo $e; ?></li>
<?php endforeach; endif; ?>
</ul>
</td>
<?php if($w == 7): ?>
</tr><tr>
<?php endif; ?>
<?php endforeach; ?>
<?php if($end != 7): ?>
<td colspan="<?php echo 7-$end; ?>" class="padding"></td>
<?php endif; ?>
</tr>
</tbody>
</table>
</div>
<?php endforeach; ?>
</div>
<div class="clear"></div>
<pre><?php print_r($events); ?></pre>
[/php]
Ceci [php] <pre><?php print_r($events); ?></pre>[/php] nous donne l'array suivant:
Array
(
[1402718400] => Array
(
[37] => Le balsamique
)
[1402034400] => Array
(
[40] => La bastille
)
[1404007200] => Array
(
[42] => le savoyard
)
)
On a donc bien le timestamp de la date de l'évenement et le titre. ( j'aimerais rajouter la date_debut_sortie) mais je sais pas comment faire
Dans ma page [b]profil.php[/b]
Ce code doit me permettre d'afficher l'événement au hover de la date sur le calendrier:
[php]<ul class="events">
<?php if(isset($events[$time])): foreach($events[$time] as $e): ?>
<li><?php echo $e; ?></li>
<?php endforeach; endif; ?>
</ul>[/php]
Mais les balise <li>....</li> sont absente de mon code source...
Comment résoudre le tout svp, merci