メンバーの 15 枚のプロフィール写真のリストを表示しようとしています。
という列がありsettings
、次のようになります。0, 1, 1, 1
1
上記の最初の番号が の人物の写真のみを表示する必要があります。
1人を直接取得することはできないためWHERE the first number
、数に関係なく全員を取得する必要があります。次に、1セット持っている人だけを表示します。(クエリでここで問題を解決する方法はありますか?)
私のメンバーの約 20% が0
この数字を持っているので、私のクエリでLIMIT
は 15 よりも大きい値を設定する必要があります (今は 30 に設定しています。そうしないと 15 に設定すると、写真が 15 枚未満のリストになります)。
ただし、リストには正確に 15 人を表示する必要があり、多くの場合、15 人から 30 人の間になります (制限 = 30 のため)。
for / while ループを使用してみましたが、どこに配置すればよいかわかりません。
私のコードは次のようになります。
$query = $conn->prepare("SELECT picture_path, profile_picture, username, last_visit, signup_date, settings FROM tusers
WHERE profile_picture IS NOT NULL
AND sex = 1
AND last_visit BETWEEN CURDATE() - INTERVAL 9 DAY AND CURDATE()
AND signup_date < CURDATE() - INTERVAL 10 DAY
ORDER BY RAND()
LIMIT 30");
$query->execute();
$members_results = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($members_results as $key => $member) {
$meet_new_people_enabled = explode(",", $member['settings']);
if ($meet_new_people_enabled[0] == '1') {
$picture_path = "http://www.mySite.com/" . $member['picture_path'] . "/" . $member['profile_picture'];
echo '<figure class="member"><a href="' . $member['username'] . '"><img src="' . $picture_path . '" title="' . $member['settings'] . '" width="100" height="100" /></a></figure>';
}
}
正確に 15 人が表示されるようにするには、これをどのように解決しますか?
ありがとうございました