投稿した投稿の量に基づいてユーザーにランク付けをしようとしています。私は "beginner、novice、itermediate、... master"というrankName行を含むデータベースを作成し、いくつかの数字を持つ最小行を作成しました。投稿の量($ qtyPosts)と最小行を比較しようとしました。オペレータでデータベースから特定の値を取得する
例:ユーザーが9個の投稿を持っている場合、ユーザーはRank Novice(最低5個の投稿)を取得します。 これは私が書いたコードです。
PHPコード
// calculate number of posts from user
$rowsPosts = $user->getQuantityOfPosts($userID);
$qtyPosts = 0;
foreach ($rowsPosts as $q) {
$qtyPosts++;
}
//status
$conn = db::getInstance();
$rank = "";
$statementRank = $conn->prepare("SELECT * FROM rank WHERE rank.minimum >= $qtyPosts");
$statementRank->execute();
while($row = $statementRank->fetch(PDO::FETCH_ASSOC)){
$rank = $row['rankName'];
}
HTMLコード
<h3>Status: <?php echo $rank; ?></h3>
しかし、それは右のランクを投稿しません、代わりにそれが最新のもの、 "マスター" ポストします。誰でも構いませんか?
私はここでロジックを理解していない、0の$ qtyPostsはあなたのSQLですべてのランクを返すだろうか? – Devon
'$ rank = $ row ['rankName'];'、 '$ rank'は毎回上書きされます。最後の値だけが保持されます! – Thamilan