イベントを含むテーブルがあります。これらのイベントを一覧表示するには、イベントテーブルをループし、イベントタイプを確認し、eventIdを使用して特定のテーブルでその値を検索します。
現時点では、これは1つのクエリを使用して20のイベントを取得し、次に最大3つのクエリを使用してそれらのイベントのデータを取得します。現在、手続き的にコーディングしていますが、最後にデータを配列形式で返すように変更する必要があります。
これが私が達成する必要があることのPseduoコード例です:
while(eventQuery):
if commentQueryResult;
$array .= commentQueryResult;
if forumPostQueryResult;
$array .= forumPostQueryResult;
if uploadItemQueryResult;
$array .= uploadItemQueryResult;
endwhile;
return $array; // Combined returned results as one array
その後、データにアクセスして、foreachループを実行できるようになります。
複数の結果セットを組み合わせて配列にする最良の方法がわかりませんか?
または、それらを1つのクエリに結合してみることもできます...
$eventResult = mysql_query(
'SELECT userevent.event, userevent.eventId, userevent.friendId
FROM userevent
WHERE userevent.userId = 1 OR userevent.friendId = 1
ORDER BY userevent.id DESC
LIMIT 20'
);
while ($eventRow = mysql_fetch_row($eventResult)){
if($eventRow[0] == 1){
$result = mysql_fetch_array(mysql_query("
SELECT forumRooms.id, forumRooms.title
FROM forumPosts
INNER JOIN forumRooms ON forumPosts.`forumTopic` = forumRooms.`id`
WHERE forumPosts.id = '$eventRow[1]'"));
}
elseif($eventRow[0] == 2){
$result = mysql_fetch_array(mysql_query("
SELECT game.id, game.uriTitle, game.title
FROM usergamecomment
INNER JOIN game ON usergamecomment.`gameId` = game.id
WHERE usergamecomment.id = $eventRow[1]"));
}
elseif($eventRow[0] == 4){
$result = mysql_fetch_array(mysql_query("
SELECT usercomment.comment, UNIX_TIMESTAMP(usercomment.TIME), `user`.id, `user`.username, `user`.activate
FROM usercomment
INNER JOIN `user` ON usercomment.`userId` = `user`.id
WHERE usercomment.id = $eventRow[1]
AND `user`.activate = 1"));
}
elseif($eventRow[0] == 5){
$result = mysql_fetch_array(mysql_query("
SELECT game.id, game.title, game.uriTitle
FROM game
WHERE game.id = $eventRow[1]"));
}
// Combined Results as array
}
私はこれらすべてをPDOに変換している最中です。これは、これを最小限に抑えるための最善の方法を考え出した後の次のステップです。