データベースクラスに、特定のユーザーが参加しているイベントのリストを提供する関数があります。
function getEventList($uid)
{
$date = date('Y-m-d H:i:s');
$eventSQL = "SELECT em.eventID, e.eventName, e.eventTime FROM eventmembers em INNER JOIN events e ON em.eventID = e.eventID WHERE userIDInvited = :uid";
$eventPrepare = $this->prepare($eventSQL);
$eventPrepare->bindParam(':uid', $uid);
$eventPrepare->execute();
return ($eventPrepare->rowCount() > 0)
? $eventPrepare->fetchAll() : array();
}
これらの結果にアクセスするために、私は単にこれを行っています
//php
$eventList = $db->getEventList($userid);
if($eventList == NULL){
$smarty->assign('events', 'No events');
}
else{
$count = sizeof($eventList);
for($i = 0; $i < $count; $i++)
{
$smarty->assign('events', $eventList);
}
}
html
<p>MY EVENTS</p>
{foreach from=$events item=result}
<a href="https://localhost/FinalYear/events/{$result.eventID}.php">{$result.eventName}</a><br>
{$result.eventTime}<br>({$result.timeRemain} Days remaining)
<br>
<br>
{/foreach}
私が今やりたいのは、このイベントが発生するまであと何日残っているかということもあるということです。
私がしたことは、これをforループに追加することでした。
$startTimeStamp = strtotime($date);
$endTimeStapm = strtotime($eventList[$i]['eventTime']);
$timeDiff = abs($endTimeStapm - $startTimeStamp);
$numberDays = $timeDiff/86400;
$numberDays = intval($numberDays);
問題は、ユーザーが複数のイベントに参加する$numberDays
と、常に上書きされることでした。そこで$numberDays
、現在の配列インデックスの最後に追加しようとしました。しかし、これは私に無限ループを与えます。エントリが必要な場合、なし$numberDays
var_dump
でこの出力が得られます
array(2) { [0]=> array(3) { ["eventID"]=> string(1) "1" ["eventName"]=> string(7) "Konzert" ["eventTime"]=> string(19) "2013-03-28 00:00:00" } [1]=> array(3) { ["eventID"]=> string(1) "2" ["eventName"]=> string(4) "Oper" ["eventTime"]=> string(19) "2013-03-30 00:00:00" } } array(2) { [0]=> array(3) { ["eventID"]=> string(1) "1" ["eventName"]=> string(7) "Konzert" ["eventTime"]=> string(19) "2013-03-28 00:00:00" } [1]=> array(3) { ["eventID"]=> string(1) "2" ["eventName"]=> string(4) "Oper" ["eventTime"]=> string(19) "2013-03-30 00:00:00" } }
しかし、私はまた、すべてのエントリーの終わりに残りの日数が欲しいです。問題は、別のループでそれを実行できないことです。これは、他のループ内の.htmlファイルに別のループを作成する必要があることを意味するためです。したがって、他のループが次のエントリにジャンプする前に実行されます。
これを解決する方法について何か提案はありますか?
私のデータベーステーブルは次のようになります
テーブルevents
eventID, eventName, eventDescription, eventLocaion, eventTime, eventHost, privacy Settings
テーブルeventmembers
eventID, userIDInvited, InvitationStatus